场景描述:服务器一般有两块网卡,一个连接外网,一个连接内网。在linux系统下,通常会用eth0, eth1来标识。在redhat系列下,IP配置文件一般在 /etc/sysconfig/network-scripts/ifcfg-eth0和 /etc/sysconfig/network-scripts/ifcfg-eth1 里面。格式类似于下面:
# Intel Corporation 82576 Gigabit Network Connection
DEVICE=eth1
BOOTPROTO=none
HWADDR=00:26:55:23:23:E7
ONBOOT=yes
TYPE=Ethernet
NETMASK=255.255.255.224
IPADDR=132.77.127.75
GATEWAY=132.77.127.65
USERCTL=no
IPV6INIT=no
PEERDNS=yes
现在我们问题来了,由于两块网卡eth0和eth1都配置了网关,当后一个网卡激活后,默认网关就会变成后一个网卡的网关,这样会导致内网、外网数据都走这个网关,从而引起网络出现问题。为了解决内网、外网都可以访问,我们需要通过路由来对数据分流。让外网的数据走外网网卡的网关,内网的走内网的网关。比如,内网网卡为eth1, 我们希望访问132.77.127.12时走网关132.77.127.65, 那么我们可以在 /etc/sysconfig/network-scripts/下创建文件 route-eth1,
格式:
<ADDRESS>/<MASK BITS> via <GATEWAY> dev <eth#>
内容为:
132.77.127.12/32 via 132.77.127.65 dev eth1
其中32表示32位的子网掩码。
表示到 访问132.77.127.12 时走网关 132.77.127.65
然后在终端下执行:
ifdown eth1
ifup eth1
这时在执行:
route
就可以看到路由表信息里面两个网关都有了。内网、外网通讯会分别走内网网关和外网网关。