Sử dụng Internet với tốc ghi trên Modem bằng Ubuntu.

Sơ lược về ý tưởng

Cách đây vài hôm mình gặp rắc rối lúc config Port Forwarding cái zoom X4 và quản lý cái Host của mình bằng cái D-Link. Vì vậy mình chuyển qua sử dụng Bridge mode để kết nối Internet. Lúc đầu tìm hiểu về Bridge mode mình cũng gặp khá nhiều trục trặc và vô tình mình phát hiện ra là có thể tạo ra nhiều PPP interfaces với 1 account. Mình thử Ping các IP của các Interface đó ttl trả về đều là 64 đều từ máy Linux mà ra hết. Tiếp theo mình thử sử dụng 2 máy để kết nối PPP tới ISP cả 2 máy đều có thể download được Full đường truyền. Từ đó mình có ý định sử dụng Load Balancing để chia tải cho các kết nối PPP và tăng tốc kết nối Internet. Thật ra ngay lúc đó mình cũng chỉ biết Load Balancing là chia tải chứ chưa thật sự biết nó là gì. Sau nửa ngày trời lục lọi trên Internet xem xét nhiều Software mình thấy Load Balancing chỉ hiệu quả khi tạo nhiều kết nối dùng để download hoặc upload thôi nếu cũng sử dụng 1 kết nối thì tốc độc vẫn bình thường và ứng dụng thích hợp nhất cho nó là Torrent. Mình cũng phát hiện rằng trong chính Ubuntu đã có chức năng này.

Các bạn có thể tìm hiểu nhiều hơn về định tuyến (route) trên Linux tại http://lartc.org nếu các bạn quan tâm về định tuyến thì tài liệu này có thể rất có ích.

Nhận xét của mình

Mình chỉ mới thử cái này trên Viettel và Ubuntu còn Fedora có hướng dẫn thử cho một người nhưng làm không thành công. Nếu tốc độ kết nối của bạn cũng bằng với tốc độ Downstream và Upstream trong Modem ghi thì không nên thử vì cũng không cải thiện thêm. Còn nếu muốn dùng Home N và tận hưởng tốc độ Home C thì bài viết này sẽ giúp bạn. Mình hi vọng Viettel sẽ cho chạy thả giàn trong mấy ngày tết qua tết sẽ Fix lỗi này lại vì lỗi này rất dễ Fix. Nếu nhiều người sử dụng cách này có thể sẽ gây lỗi tràn DSLAM, IP của Viettel vì vậy mình mong các cao thủ không nên làm quá tay.

Các bước tiến hành

Đọc hết bài viết rồi mới thử nhé coi chừng chết giữa đường không vào Net được đâu.

Đầu tiên các bạn phải cài đặt kết nối theo kiểu PPP ở chế độ Bridge.

Ở chế độ Bridge thì chính Ubuntu sẽ làm nhiệm vụ kết nối với ISP. Trên Windows thì không thể tạo nhiều kết nối WAN được nhưng Linux thì có thể.

Sau khi đã dùng lệnh pppoeconf để cài đặt Internet bạn có thể xài lệnh

pon dsl-provider

để tạo thêm kết nối

(Để disconnect thì xài lệnh poff dsl-provider)

Bạn tạo chừng 5 kết nối thêm. Sau đó phải xoá bản default rote đang chạy. Bằng lệnh

sudo ip route del default

Chạy 6-7 lần gì cho chắc ăn để có thể xoá hết.

Lúc này xài lệnh ifconfig để xem xem bạn đang có bao nhiêu ppp connect. Nếu có tới ppp5 thì bạn đang có 6 connect.

Sau đó sử dụng lệnh ip route để tạo một bảng định tuyến mới.

gateway=$(ifconfig ppp0 | grep 'inet addr:' | cut -d: -f3 | awk '{ print $1}')

sudo ip route add default scope global nexthop via $gateway dev ppp0 weight 1 nexthop via $gateway dev ppp1 weight 1 nexthop via $gateway dev ppp2 weight 1 nexthop via $gateway dev ppp3 weight 1 nexthop via $gateway dev ppp4 weight 1 nexthop via $gateway dev ppp5 weight 1

lúc này xài lệnh ip route để xem bản định tuyến của bạn ra sao.
Nếu có dạng giống giống

117.5.128.1 dev ppp0 proto kernel scope link src 117.5.130.181
117.5.128.1 dev ppp1 proto kernel scope link src 117.5.134.51
117.5.128.1 dev ppp2 proto kernel scope link src 117.5.134.52
117.5.128.1 dev ppp3 proto kernel scope link src 117.5.134.54
117.5.128.1 dev ppp4 proto kernel scope link src 117.5.134.55
117.5.128.1 dev ppp5 proto kernel scope link src 117.5.134.57
117.5.128.1 dev ppp6 proto kernel scope link src 117.5.134.58
117.5.128.1 dev ppp7 proto kernel scope link src 117.5.134.59
117.5.128.1 dev ppp8 proto kernel scope link src 117.5.134.60
117.5.128.1 dev ppp9 proto kernel scope link src 117.5.134.62
192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.2
169.254.0.0/16 dev eth0 scope link metric 1000
default
nexthop via 117.5.128.1 dev ppp0 weight 1
nexthop via 117.5.128.1 dev ppp1 weight 1
nexthop via 117.5.128.1 dev ppp2 weight 1
nexthop via 117.5.128.1 dev ppp3 weight 1
nexthop via 117.5.128.1 dev ppp4 weight 1
nexthop via 117.5.128.1 dev ppp5 weight 1
nexthop via 117.5.128.1 dev ppp6 weight 1
nexthop via 117.5.128.1 dev ppp7 weight 1

Thì bạn đã thành công rồi. Bây giờ chỉ việc download nhiều file 1 lúc thử xem.

Mình có thử làm một Script dùng để Load Balancing luôn bạn phải chạy nó. Điều kiện là phải tạo bridge mode ở bài viết trước nhé. (Open -> Run In Terminal -> nhập password vào)

Download script

Đây là đoạn Script Loadbalancing

#########################################

sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 1
sudo pon dsl-provider
sleep 3

sudo ip route del default
sudo ip route del default
sudo ip route del default
sudo ip route del default
sudo ip route del default
sudo ip route del default
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 0.5
sudo ip route del default
sleep 3
gateway=$(ifconfig ppp0 | grep ‘inet addr:’ | cut -d: -f3 | awk ‘{ print $1}’)
sudo ip route add default scope global nexthop via $gateway dev ppp0 weight 1 nexthop via $gateway dev ppp1 weight 1 nexthop via $gateway dev ppp2 weight 1 nexthop via $gateway dev ppp3 weight 1 nexthop via $gateway dev ppp4 weight 1 nexthop via $gateway dev ppp5 weight 1

#########################################

Chú ýở dòng gateway là dấu ‘ ở dưới dấu ” thẳng đứng không phải dấu ` đâu nhé. Post lên đây nó bị đổi.

40 bình luận về “Sử dụng Internet với tốc ghi trên Modem bằng Ubuntu.

  1. và lỗi
    Error: an IP address is expected rather than “dev”
    khi chạy lệnh
    sudo ip route add default scope global nexthop via $gateway dev ppp0 weight 1 nexthop via $gateway dev ppp1 weight 1 nexthop via $gateway dev ppp2 weight 1 nexthop via $gateway dev ppp3 weight 1 nexthop via $gateway dev ppp4 weight 1 nexthop via $gateway dev ppp5 weight 1

  2. Theo mình đọc được từ ip route thì bạn vẫn chưa set default gateway
    xài lại lệnh này xem ví dụ này chỉ với 3 ppp connection thôi nhé (ppp0,ppp1,ppp2)
    sudo ip route add default scope global nexthop via 117.5.128.1 dev ppp0 weight 1 nexthop via 117.5.128.1 dev ppp1 weight 1 nexthop via117.5.128.1 dev ppp2 weight 1

  3. mình đã vào đc , nhưng phần ip route lai hơi khác bạn 1 tí

    117.6.124.1 dev ppp1 proto kernel scope link src 117.6.126.157
    117.6.124.1 dev ppp2 proto kernel scope link src 117.6.125.87
    117.6.124.1 dev ppp3 proto kernel scope link src 117.6.124.181
    117.6.124.1 dev ppp0 proto kernel scope link src 117.6.127.116
    192.168.1.0/24 dev eth0 proto kernel scope link src 192.168.1.3
    default dev ppp0 scope link
    default dev ppp3 scope link

    tại vì cái script bạn đưa thiếu ip của gateway , mình phải tự ghi thêm vào 😦

  4. Mình làm đc rồi 😀 , ra ip route giống như bạn , nhưng thôi , của mình nó ko ổn định , số thứ tự của các ppp thay đổi liên tục chứ ko xếp theo thứ tự , dù sao cũng cám ơn bạn đã chia sẻ kiến thức và giúp đỡ 😀

  5. Mình chỉ mới thử vụ này để biến máy tính nhiều card mạng thành thiết bị load balacing, sử dụng CentOS5.1. Chạy tốt, nhưng bị vấn đề ở chổ cứ lâu lâu ISP cấp lại 1 cái IP khác (reset 1 modem chẳng hạn) thì bị sai ip route.
    Nếu vậy, theo mình thì chạy script loadbalace.sh cách khoảng 1 thời gian. Theo bạn, bạn có cách giải quyết nào không?

  6. Bạn không nói rõ bạn làm như thế nào. Nhưng theo mình thì viết 1 cái Script chạy theo thơi gian. Nó sẽ kiểm tra ifconfig các ip đang có. Nếu các IP này khác thì sẽ làm lại lệnh
    ip route del default
    ip route add default

  7. Mô hình mình làm là 1 máy có 3 card mạng, mỗi card làm cái ppp tới 1 modem ADSL và một mô hình nữa là chỉ có 1 card mạng và gắn vào 1 cái switch, sw nối với các modem. Trên CentOS5.1 (hay Redhat nói chung), mình sử dụng lệnh adsl-setup để tạo ppp.
    Mình cũng nghĩ như bạn, làm một cái script chạy theo thời gian.

Bình luận về bài viết này