Setup multiple gateway trên cùng 1 hệ thống Centos

Setup multiple gateway trên cùng 1 hệ thống Centos

Setup nhiều IP nằm cùng một subnet với cùng 1 gateway là rất đơn giản bằng cách add trực tiếp hoặc sủ dụng ethernet alias. Tuy nhiên, để chạy được 2 line mạng với 2 subnet, 2 gateway khác nhau trên Linux thì lại là chuyện khác. Lúc này ta cần 2 ethernet card nhưng không phải cứ add như bình thường vào là nó chạy như Windows, lý do là mặc định Linux chỉ hiểu 1 default gateway duy nhất. Do đó giải pháp là phải route lại đường đi của các subnet này qua các gateway tương ứng.

Giả sử ta có 2 line mạng với các IP như sau:
+ IP 192.168.1.199, mask /24, gateway 192.168.1.1 gán vào ethernet eth0
+ IP 172.16.15.199, mask /24, gateway 172.16.15.1 gán vào ethernet eth1
Trước tiên ta gán IP 192.168.1.199 như bình thường vào eth0

 vi /etc/sysconfig/network-scripts/ifcfg-eth0
 DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
BOOTPROTO=static
HWADDR=00:21:9B:91:14:2E
IPADDR=192.168.1.199
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
ifup eth0

Vậy là card thứ nhất đã OK, mặc định Linux sẽ hiểu default gateway là 192.168.1.1 bất kể ta có gán GATEWAY khác vào card thứ hai. Nếu gán vào và active, hệ thống sẽ mất kết nối mạng ngay lập tức.

Do đó, ở card còn lại ta khai báo tương tự như eth0 nhưng tuyệt đối ko active nó ngay mà sau đó tạo entry cho eth1 trong bảng table như sau:

# echo "11 eth1" >>/etc/iproute2/rt_tables

Add route cho subnet cần sử dụng để nó tìm được gateway tương ứng

# ip route add 172.16.15.0/24 dev eth1 src 172.16.15.199 table eth1
# ip route add default via 172.16.15.1 dev eth1 table eth1

Add route policy cho IP cần sử dụng bảng route. Mục đích của việc này là cho phép IP 172.16.5.199 giao tiếp được với các interface khác chứ không phải làm thay đổi bảng route để hệ điều hành có thế cho phép communicate giữa các subnet khác nhau.

# ip rule add from 172.16.15.199/32 table eth1
# ip rule add to 172.16.15.199/32 table eth1

ifup eth1

Kiểm tra lại bảng route ta được như sau:

ip route show
192.168.1.0/24 dev eth0  proto kernel  scope link  src 192.168.1.199 
172.16.15.0/24 dev eth1  proto kernel  scope link  src 172.16.15.199 
default via 192.168.1.1 dev eth0 
default via 172.16.15.1 dev eth1  metric 100

và bảng rule thì được như sau:

ip rule show
0:      from all lookup local 
32764:  from all to 172.16.15.199 lookup eth1
32765:  from 172.16.15.199 lookup eth1
32766:  from all lookup main 
32767:  from all lookup default

Nếu tất cả các thông số trên hiển thị như mong muốn thì có nghĩa là All Done! Lúc này ta hoàn toàn yên tâm thuê vps linux với nhiều line mạng khác nhau để có được nhiều IP khác nhau phục vụ cho mục đích SEO.