Khi bạn cài đặt một server chạy hệ điều hành Linux (CentOS, Ubuntu…) mà muốn sử dụng nhiều IP cùng một subnet thì đơn giản bạn chỉ cần add thêm card mạng hoặc cấu hình sub-interface và thêm IP vào, các IP sẽ hoạt động hoàn toàn bình thường. Nhưng các IP khác subnet thì lại là một câu chuyện khác.
Vì vậy lúc này chúng ta sẽ cần phải làm thêm một vài thao tác định tuyến, chỉ lại đường đi cho từng subnet trên server.
Ở đây ta có một Server Linux có 2 Card mạng có IP thuộc 2 subnet khác nhau (Một dải .85.0/24 và một dải .86.0/24).
103.81.85.162/24 được gán cho eth0
103.81.86.123/24 được gán vào eth1
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether fa:16:3e:26:ae:f2 brd ff:ff:ff:ff:ff:ff inet 103.81.85.162/24 brd 103.81.85.255 scope global dynamic eth0 valid_lft 76005sec preferred_lft 76005sec inet6 fe80::f816:3eff:fe26:aef2/64 scope link valid_lft forever preferred_lft forever 3: eth1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP qlen 1000 link/ether fa:16:3e:8d:04:ed brd ff:ff:ff:ff:ff:ff inet 103.81.86.123/24 brd 103.81.86.255 scope global dynamic eth1 valid_lft 76005sec preferred_lft 76005sec inet6 fe80::f816:3eff:fe8d:4ed/64 scope link valid_lft forever preferred_lft forever
Các bước thực hiện như sau:
Tạo entry cho eth0 và eth1 trong bảng rt_table bằng lệnh:
echo "10 eth0" >>/etc/iproute2/rt_tables echo "11 eth1" >>/etc/iproute2/rt_tables Lưu ý mỗi một card mạng bạn sẽ điền 1 số khác nhau, 10 của eth0 còn 11 là của eth1.
Sau đó ta viết route cho 2 card mạng vừa rồi. Ta gõ : vi route.sh , sau đó viết vào nội dung sau.
#!/bin/bash ip route add 103.81.85.0/24 dev eth0 src 103.81.85.162 table eth0 ip route add default via 103.81.85.1 dev eth0 table eth0 ip rule add from 103.81.85.162/32 table eth0 ip rule add to 103.81.85.162/32 table eth0 ip route add 103.81.86.0/24 dev eth1 src 103.81.86.123 table eth1 ip route add default via 103.81.86.1 dev eth1 table eth1 ip rule add from 103.81.86.123/32 table eth1 ip rule add to 103.81.86.123/32 table eth1
Sau khi viết xong ta bấm ESC rồi gõ :wq để lưu lại. Phân quyền cho file vừa tạo và chạy nó luôn.
Giải thích ở đây một chút 103.81.85.0 là dải mạng của 103.81.85.162, còn 103.81.85.1 là Gateway của 103.81.85.162.
chmod +x route.sh && sh route.sh
Bây giờ thì ta sẽ vào VPS trên bằng cả 2 IP được. Nếu VPS bạn có nhiều hơn 2 IP thì các bạn cứ thêm vào thôi và làm tương tự. Trên thực tế khi bạn có 2 IP bạn chỉ cần viết route cho IP còn lại mà bạn chưa ping được mà thôi, nhưng sẽ có lúc bạn khởi động lại VPS IP sẽ bị nhảy qua IP kia nên bạn cứ viết route cho cả 2 IP cho chắc.