先说一下背景,原服务器IP为192.168.10.83,网关为192.168.10.254,已经通了部分业务。因临时调整需要在该服务器上部署一套数据库代替之前的业务,要求被替换的业务IP转移至当前服务器上。该数据库业务与原服务器IP不在一个网段,新业务IP为172.16.100.152,网关为172.16.100.254。

此时服务器的两块网卡上分别配置了不同网段的IP:

  • 192.168.10.83     (A网卡接口)
  • 172.16.100.152   (B网卡接口)

原网络的默认网关是在A上,当在第二块网卡配置好IP后,此时对外第二块网卡的网络实际上是不通的。B网络在服务器上没有配置路由,所有数据包的默认路由都是从A出去的,数据包默认不会从B出去。

此时B网络虽然网线是通的,但只有同网段是可达的。同网段的IP,不需要路由即可达,但跨网段的数据包只有在路由指导下才知道从哪个物理接口出去。

此时如果需要让B网络的IP与所有局域网IP都通,需要将默认路由从A上改到B上。

首先查看路由表

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.10.254  0.0.0.0         UG    0      0        0 bond0
172.16.100.0    0.0.0.0         255.255.255.0   U     0      0        0 em3
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 bond0

同网段的路由走相应网卡接口出去,此时192.168.10.0/24 走网卡 bond0 ,172.16.100.0/24 走网卡 em3。默认路由走 bond0,所谓的默认路由即目的地址为0.0.0.0的路由,当目的地址为0.0.0.0,就代表目的地址为任意地址,比如互联网地址。互联网的IP我们是没法提前预知的,所以互联网的目的地址要使用0.0.0.0。当大部分网络都走一个网卡接口出去时,我们会优先把默认路由设置在这个网卡接口上。我们需要通过route命令调整一下路由表:

删掉默认路由

route del default

添加新的默认路由

route add default gw 172.16.100.254 dev em3

重新打印新的路由表

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.100.254   0.0.0.0         UG    0      0        0 em3
172.16.100.0    0.0.0.0         255.255.255.0   U     0      0        0 em3
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 bond0

此时默认路由转到了B接口上,所有的IP到B接口都是通的,除了A接口所在的网段,即192.168.10.0/24段到A接口192.168.10.83是通的,但不通B接口的地址172.16.100.152。因为在路由表中192.168.10.0/24网段走的就是接口A,它不会走到接口B。如果此时192.168.10.0/24段的IP需要和接口B通信,此时需要写明细路由,手工将固定IP指到相应接口。

比如192.168.10.26需要和172.16.100.152通信,可以这样写路由表

route add -host 192.168.10.26 gw 172.16.100.254 dev em3

此时路由表如下:

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.16.100254   0.0.0.0         UG    0      0        0 em3
172.16.100.0    0.0.0.0         255.255.255.0   U     0      0        0 em3
192.168.10.0    0.0.0.0         255.255.255.0   U     0      0        0 bond0
192.168.10.26   172.16.100.254  255.255.255.255 UGH   0      0        0 em3

在路由表中为目的地址192.168.10.26指定网关为172.16.100.254,并且从网卡的em3接口出去,此时192.168.10.26就不再通192.168.10.83了。我们可以通过指定网卡物理接口的形式执行ping来测试网络的连通性