个人服务器上有两个网卡,一张配置内网ip,一张是公网ip,如今想实现两张网卡走两个网关。bash
系统环境服务器
eth0 172.16.200.11/24 网关172.16.200.1(默认网关) eth1 158.247.117.2/24 网关158.247.117.1
# eth1的网络配置 [root@lb-01 ~]# cat /etc/sysconfig/network-scripts/ifcfg-eth1 DEVICE="eth1" BOOTPROTO="static" IPADDR=158.247.117.2 NETMASK=255.255.255.0 # 这个要 NETWORK=158.247.117.0 ROUTER=158.247.117.1 # 这个要 ONBOOT="yes" TYPE="Ethernet" USERCTL="yes" PEERDNS="yes" IPV6INIT="no" PERSISTENT_DHCLIENT="1"
# 写到rc.local;重启会自动加路由;rt_tables就是routing tables [root@lb-01 ~]# cat /etc/rc.d/rc.local #!/bin/bash touch /var/lock/subsys/local for interface_file in $(ls /etc/sysconfig/network-scripts/ifcfg-eth* | grep -v ifcfg-eth0) ;do . ${interface_file} prefix=$(ipcalc -p ${IPADDR} ${NETMASK} | awk -F= '{print $2}') tablenum=$(echo ${DEVICE} | sed 's/eth//g') if [ ${ONBOOT} != 'yes' ] ;then continue fi if ! grep "^${tablenum} ${DEVICE}$" /etc/iproute2/rt_tables >/dev/null ;then echo "${tablenum} ${DEVICE}" >>/etc/iproute2/rt_tables fi ip route add ${NETWORK}/${prefix} dev ${DEVICE} src ${IPADDR} table ${DEVICE} ip route add default via ${ROUTER} dev ${DEVICE} table ${DEVICE} ip rule add from ${IPADDR}/32 table ${DEVICE} ip rule add to ${IPADDR}/32 table ${DEVICE} done
[root@lb-01 ~]# chmod +x /etc/rc.d/rc.local # 赋予执行权限 [root@lb-01 ~]# bash /etc/rc.d/rc.local # 手动运行
# 查看路由,有两条default就对了 [root@lb-01 ~]# ip route show table all | grep default default via 158.247.117.1 dev eth1 table eth1 default via 172.16.200.1 dev eth0
参考连接网络
http://brainscraps.wikia.com/wiki/Setup_Gateway_Routing_On_Multiple_Network_Interfaceside