你这个需求,需要使用iproute2包中的 ip命令完成。
首先 /etc/iproute2/rt_tables 里面添加2个table, 对应2个不同的网段(net3 net5)
配置思路是 用ip route 命令为net3 table增加default gw 118.126.3.1,net5 table 增加default gw 118.126.5.1
然后用 ip rule 命令 使用源地址匹配规则 源地址为118.126.3.16的数据包选择 net3 table, 源地址为118.126.5.251的数据包选择net5 table.
当然你也需要设置本机的默认default gw(直接用route命令),那么由本机生成的数据包,默认会选用与default gw连接的那块网卡的ip地址对外通讯(程序指定的除外)。
以上配置对于正常开发的 tcp通讯软件完全可以正确工作,ping也没有问题。 不过某些开发不正确的udp软件可能运行会不正常(这种udp软件,在有两个以上ip地址的主机上工作都会有问题)
注意: 2 张网卡,只能有1张网卡配置网关,另1张网卡不能配置网关,通过route add 添加路由功能来完成第2张网卡的网关配置。
如 : eth1 (192.168.2.2)不需要配置网关, 但到 192.168.3.0 的网段,需要从eth1 去实现通信,其余的全部走eth0 网卡,eth0 配置 网关.
eth0 的配置如下,配置网关参数
[root@REDHAT network-scripts]# cat ifcfg-eth0
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth0
BOOTPROTO=none
ONBOOT=yes
HOTPLUG=no
TYPE=Ethernet
IPADDR=192.168.1.2
NETMASK=255.255.255.0
HWADDR=d8:d3:85:fb:d4:60
GATEWAY=192.168.1.1
USERCTL=no
IPV6INIT=no
PEERDNS=yes
eth1 的配置如下,不需要配置网关
[root@SERVER network-scripts]# cat ifcfg-eth1
# Broadcom Corporation NetXtreme II BCM5709 Gigabit Ethernet
DEVICE=eth1
BOOTPROTO=none
ONBOOT=yes
HOTPLUG=no
TYPE=Ethernet
IPADDR=192.168.2.2
NETMASK=255.255.255.0
USERCTL=no
IPV6INIT=no
PEERDNS=yes
Linux 命令行下添加路由,192.168.3.0 走 eth1 的网关 192.168.2.1
route add -net 192.168.3.0 netmask 255.255.255.0 dev eth1
或许在118.126.3.1的路由器加一条静态路由,route add 118.126.5.0 netmask 255.255.255.0 118.126.3.16就可以了
5段的其他ip可以ping通?
不是仅有linux不能有双网关,所有的pc os应该都不可以
5网段没有设置网关啊,可以在eht1的配置内容中加入:
GATEWAY=192.168.5.X
或者使用命令:route add -net 192.168.5.0 netmask 255.255.255.0 gw 192.168.5.x