我的服务器上有两个网卡,一张配置内网ip,一张是公网ip,现在想实现两张网卡走两个网关。
系统环境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
参考链接