前提:服务器有四块网卡,信息如下所示:
@H_419_14@[[email protected] ~]# ipaddr|grep net
inet 127.0.0.1/8 scope host lo
inet6 ::1/128 scope host
inet 192.168.1.150/24 brd 192.168.1.255scope global dynamic enP3p9s0f0
inet6 fd00:1:1:1:42f2:e9ff:fe5c:b5bc/64scope global dynamic
inet6 fe80::42f2:e9ff:fe5c:b5bc/64 scopelink
inet 192.168.1.104/24 brd 192.168.1.255scope global dynamic enP3p9s0f1
inet6 fd00:1:1:1:42f2:e9ff:fe5c:b5bd/64scope global dynamic
inet6 fe80::42f2:e9ff:fe5c:b5bd/64 scopelink
inet 192.168.1.118/24 brd 192.168.1.255scope global dynamic enP3p9s0f2
inet6 fd00:1:1:1:42f2:e9ff:fe5c:b5be/64scope global dynamic
inet6 fe80::42f2:e9ff:fe5c:b5be/64 scopelink
inet 192.168.1.23/24 brd 192.168.1.255scope global br0
inet6 fe80::42f2:e9ff:fe5c:b5bf/64 scopelink
inet 192.168.122.1/24 brd 192.168.122.255scope global virbr0
9:vnet0: <broADCAST,MulTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast masterbr0 state UNKNowN qlen 500
inet6fe80::fc54:ff:fe87:d8a/64 scope link
写此文章的目的:23服务器有四块网卡,都插有网线并连接交换机,重启后自动分配地址。但是发现.23Ping不通。原因是路由表main表,有多条路由规则,23这个IP是br0的IP,在规则表中第四条,不被优先匹配。路由表有多条同网段但不通出口的路由,会优先匹配第一条。所以23不通。路由表信息如下所示:
[[email protected] cjxlvdir]# route -n
KerneliP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enP3p9s0f0
0.0.0.0 192.168.1.1 0.0.0.0 UG 101 0 0 enP3p9s0f2
0.0.0.0 192.168.1.1 0.0.0.0 UG 102 0 0 enP3p9s0f1
0.0.0.0 192.168.1.1 0.0.0.0 UG 425 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1008 0 0 br0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enP3p9s0f2
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0enP3p9s0f1
192.168.1.0 0.0.0.0 255.255.255.0 U 100 0 0 enP3p9s0f0
192.168.1.0 0.0.0.0 255.255.255.0 U 425 0 0 br0
192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
路由表输出详解:
第一行:0.0.0.0 192.168.1.1 0.0.0.0 UG 100 0 0 enP3p9s0f0
说明:表示数据传送目的是访问Internet,则由接口enP3p9s0f0,将数据包发送到网关192.168.1.1
第五行:169.254.0.0 0.0.0.0 255.255.0.0 U 1006 0 0 br0
说明:表示本机所在的网络地址为169.254.0.0,若数据传送目标是在本局域网内通信,则可直接通过br0转发数据包
第七行:192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 enP3p9s0f2
说明:表示本机所在的网络地址为192.168.1.0,若数据传送目标是在本局域网内通信,则可直接通过enP3p9s0f2转发数据包
第十一行:192.168.122.0 0.0.0.0 255.255.255.0 U 0 0 0 virbr0
说明:表示主机所在网络的地址为192.168.122.0,若数据传送目标是在本局域网内通信,则可直接通过virbr0转发数据包;
思考2:这个route -n 命令是不是就查的这个表的信息ip route List table main?是
解决方法是:把4块网卡分到4个不同的路由表,并且这四个表都在main表之前,具体方法如下所示
步骤1:为网卡f0、f1、f2、br0新增路由规则表
[[email protected] all]# echo"210 f0table" >> /etc/iproute2/rt_tables
[[email protected] all]# echo"220 f1table" >>/etc/iproute2/rt_tables
[[email protected] all]# echo"230 f2table" >>/etc/iproute2/rt_tables
[[email protected] all]# echo"240 br0table" >>/etc/iproute2/rt_tables
新增成功后,查看规则表
[[email protected] all]# cat /etc/iproute2/rt_tables
#
# reserved values
#
255 local
254 main
253 default
0 unspec
#
# local
#
#1 inr.ruhep
210 f0table
220 f1table
230 f2table
240 br0table
查看规则列表,目前还没有新增的规则表哦!
# ip rule List
0: from all lookup local
32766: from all lookup main
32767: from all lookup default
步骤2:向不同的路由表添加规则,为了重启后生效添加到rc.local中。
[[email protected]]# cat <<Eol >> /etc/rc.local
> ip routeadd 192.168.1.0/24 dev enP3p9s0f0 src 192.168.1.150 table f0table
> ip route add 192.168.1.0/24 dev enP3p9s0f1 src 192.168.1.104 table f1table
> ip route add 192.168.1.0/24 dev enP3p9s0f2 src 192.168.1.118table f2table
> ip routeadd 192.168.1.0/24 dev br0 src 192.168.1.23 table br0table
>
> ip routeadd default dev enP3p9s0f0 via 192.168.1.1 table f0table
> ip routeadd default dev enP3p9s0f1 via192.168.1.1 table f1table
> ip routeadd default dev enP3p9s0f2 via192.168.1.1 table f2table
> ip routeadd default dev br0 via 192.168.1.1 table br0table
>
> ip ruleadd from 192.168.1.150 table f0table
> ip ruleadd from 192.168.1.104 table f1table
> ip ruleadd from 192.168.1.118 table f2table
> ip ruleadd from 192.168.1.23 table br0table
> Eol
执行完如上命令,再查看规则表
# ip rule List
0: from all lookup local
32762: from 192.168.1.23 lookup br0table
32763: from 192.168.1.118 lookup f2table
32764: from 192.168.1.104 lookup f1table
32765: from 192.168.1.150 lookup f0table
32766: from all lookup main
32767: from all lookup default
步骤3:执行如下命令
echo 1 > /proc/sys/net/ipv4/conf/all/arp_filter
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
或写入到开机自启动文件中:
# cat <<Eol>> /etc/rc.local
> echo 1 >/proc/sys/net/ipv4/conf/all/arp_filter
> echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
> echo 1 >/proc/sys/net/ipv4/conf/all/arp_ignore
> Eol
步骤4:重启服务器reboot
步骤5:Ping118\23\104\150都可以通。
还有一个问题,现象是重启服务器后,f0\f1\f2的地址都 是可以Ping通的,br0 的IP是192.168.1.23,23死活都不通,必须执行一下Ping192.168.1.1 -I br0,才可以通。原因是什么?
总结以上是内存溢出为你收集整理的Linux下多块网卡同一网段连通配置全部内容,希望文章能够帮你解决Linux下多块网卡同一网段连通配置所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)