Monday, 1 October 2012

[Network] Kết nối vào 2 modem cùng lúc :D

Nếu bạn có 1 cái modem (từ giờ gọi là router nhé, vì mình ko quan tâm đến chức năng modem của nó ở đây) không dùng tới, và tất nhiên nếu bạn muốn nghịch ngợm mạng mẽo 1 tí , và bạn đang dùng Linux thì hãy bơi vào đây :))
(Việc thừa router là bình thường nếu bạn đã lắp mạng của > 1 nhà mạng, router lởm khuyến mãi như cho mà :-j )

Cho rằng bạn đang dùng mạng dây (eth0) hay mạng wifi (wlan0).

Đăng nhập quyền root:
sudo -s

Bạn đừng cắm cái router thừa vào vội, vì hầu hết các router đều đặt sẵn địa chỉ là 192.168.1.1 nên sẽ dẫn đến conflict.



Trước tiên, list ra các interface trên máy bạn đang có:

root@lappy:~# ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc pfifo_fast state DOWN qlen 1000
    link/ether bc:ae:c5:15:44:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 48:5d:60:80:e5:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.100/24 brd 192.168.2.255 scope global wlan0
    inet6 fe80::4a5d:60ff:fe80:e55f/64 scope link
       valid_lft forever preferred_lft forever


nhìn vào dòng inet, đó là địa chỉ ip của interface tương ứng. Trong trường hợp này địa chỉa 192.168.1.100/24 là địa chỉ của interface wlan0 (tớ đang dùng mạng wireless). Nếu đã học qua về địa chỉ mạng thì bạn có thể dễ dàng => gateway của interface wlan0 máy tớ là : 192.168.1.1 (không học cũng đoán mò ra được)

Bây giờ mở 1 web browser lên, vào địa chỉ gateway ấy (192.168.1.1), login vào và đổi lại ip của router này:
Thường sẽ là trong Advanced Setup > Lan > IP address. Hãy đổi thành 192.168.2.1 hay bao nhiêu  (192.168.x.1) thì tùy :D Sau khi bấm save, bạn sẽ phải connect lại mạng vì kết nối cũ đã hỏng. Bây giờ thì đã có thể cắm cái router thừa vào để chơi. Trên ubuntu, ip của interface này sẽ tự được cấp sau khi cắm:
ip ad
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 16436 qdisc noqueue state UNKNOWN
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
    inet6 ::1/128 scope host
       valid_lft forever preferred_lft forever
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000
    link/ether bc:ae:c5:15:44:fb brd ff:ff:ff:ff:ff:ff
    inet 192.168.1.3/24 brd 192.168.1.255 scope global eth0
    inet6 fe80::beae:c5ff:fe15:44fb/64 scope link
       valid_lft forever preferred_lft forever
3: wlan0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP qlen 1000
    link/ether 48:5d:60:80:e5:5f brd ff:ff:ff:ff:ff:ff
    inet 192.168.2.100/24 brd 192.168.2.255 scope global wlan0
    inet6 fe80::4a5d:60ff:fe80:e55f/64 scope link
       valid_lft forever preferred_lft forever

bây giờ bạn sẽ bị mất kết nối mạng. Lí do là interface mới này (ở đây là eth0 do tớ vừa cắm cái router vào cổng mạng dây) được hệ thống nhận làm interface mặc định. Bạn cần set lại để sử dụng interface ban đầu làm kết nối mặc định  (ở đây là wlan0)


root@lappy:~# ip ro
default via 192.168.1.1 dev eth0  proto static
169.254.0.0/16 dev wlan0  scope link  metric 1000
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.3  metric 1
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.100  metric 2

như thấy ở kết quả của lệnh ip ro, đường default đi qua gateway 192.168.1.1 theo interface eth0. Trong khi bạn cần nó đi qua 192.168.2.1 theo interface wlan0. Vậy hãy xóa đường không mong muốn đi và thêm đường mong muốn vào:

root@lappy:~# ip ro del default via 192.168.1.1 dev eth0  proto static
root@lappy:~# ip ro
169.254.0.0/16 dev wlan0  scope link  metric 1000
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.3  metric 1
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.100  metric 2
root@lappy:~# ip ro add default via 192.168.2.1 dev wlan0
root@lappy:~# ip ro
default via 192.168.2.1 dev wlan0
169.254.0.0/16 dev wlan0  scope link  metric 1000
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.3  metric 1
192.168.2.0/24 dev wlan0  proto kernel  scope link  src 192.168.2.100  metric 2
bây giờ xem thành quả, đã có thể dùng mạng bình thường:
root@lappy:~# ping www.familug.org
PING ghs.l.google.com (74.125.128.121) 56(84) bytes of data.
64 bytes from hg-in-f121.1e100.net (74.125.128.121): icmp_req=1 ttl=46 time=92.1 ms
và cũng vào được 192.168.1.1 để nghịch router thừa:

root@lappy:~# ping 192.168.1.1
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_req=1 ttl=64 time=0.835 ms

lệnh ip ro là dạng ngắn gọn của ip route, dùng để chỉ đường (route) cho các gói tin.

Điểm khác giữa modem vs router:
1. A router is used to connect two or more networks while a modem is used to connect to a phone line
2. A router only connects to RJ45 connectors while modems need an RJ45 and an RJ11 for the phone line
3. A router provides security measures to protect your network but a modem does not
4. A modem is essential to connect to the internet while a router isn’t

cái tớ đang nghịch trong bài này là loại combo modem/router :D