Skip to content

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

by on 6 Tháng Hai, 2008

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.

From → Thủ thuật, Ubuntu

40 phản hồi
  1. Toan permalink

    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. Có chạy lệnh này chưa
    Chú ý dấu nháy đó.
    gateway=$(ifconfig ppp0 | grep ‘inet addr:’ | cut -d: -f3 | awk ‘{ print $1}’)

  3. Toan permalink

    Chạy rồi chứ , mình làm theo y chang , chỉ có mỗi cái error đã nêu ở trên với ko ping đc thôi , chứ ifconfig vẫn xuất hiện nhiều ppp😐

  4. jblack permalink

    Y!chuyenvientamly
    ban nao chi minh cach lam voi, chang hieu gi ca

  5. 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

  6. Toan permalink

    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😦

  7. Toan permalink

    à , thì ra cái bước kia là để gán ip vào gateway , nhưng tại sao của mình nó ko chịu gán , mặc dù đã print ra màn hình cái gateway.

  8. Toan permalink

    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 đỡ😀

  9. Thanh permalink

    sau khi dùng cái này với FPT mình ko vào mạng đc nữa

  10. 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?

  11. 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

  12. 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.

  13. Không hiểu sao bạn xài chi tới 3 card mạng lận. Mình sử dụng 1 card mạng vẫn làm được cái này mà.

  14. À, mình có 3 đường ADSL

Trackbacks & Pingbacks

  1. Xem truyền hình NetTV - Viettel trên máy tính

Gửi phản hồi

Mời bạn điền thông tin vào ô dưới đây hoặc kích vào một biểu tượng để đăng nhập:

WordPress.com Logo

Bạn đang bình luận bằng tài khoản WordPress.com Log Out / Thay đổi )

Twitter picture

Bạn đang bình luận bằng tài khoản Twitter Log Out / Thay đổi )

Facebook photo

Bạn đang bình luận bằng tài khoản Facebook Log Out / Thay đổi )

Google+ photo

Bạn đang bình luận bằng tài khoản Google+ Log Out / Thay đổi )

Connecting to %s