admin管理员组文章数量:1633739
环境:
双网卡同网段:
ens33:192.168.172.109
ens37:192.168.172.119
Centos7操作系统
net.ipv4.conf.all.arp_ignore=1
net.ipv4.conf.ens33.arp_ignore=1
net.ipv4.conf.ens34.arp_ignore=1
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.ens33.rp_filter = 1
net.ipv4.conf.ens34.rp_filter = 1
实验背景
在一台宿主机上用VMware创建一台虚拟机,添加两张网卡,都是桥接模式,然后在上面的环境下,虚拟机的其中一张网卡是宿主机ping不通的,另一张可以通,详情见下,现在是要求使用策略路由来使它们能够互通。
在环境下ping不通原因
在这个环境下,宿主机只能ping通其中一个网卡的ip,另一个是不通的。
这是因为arp_ignore的参数设置,详细看下:
arp_ignore参数的作用是控制系统在收到外部的arp请求时,是否要返回arp响应。
arp_ignore参数常用的取值主要有0,1,2,3~8较少用到:
0:响应任意网卡上接收到的对本机IP地址的arp请求(包括环回网卡上的地址),而不管该目的IP是否在接收网卡上。
1:只响应目的IP地址为接收网卡上的本地地址的arp请求。
2:只响应目的IP地址为接收网卡上的本地地址的arp请求,并且arp请求的源IP必须和接收网卡同网段。
3:如果ARP请求数据包所请求的IP地址对应的本地地址其作用域(scope)为主机(host),则不回应ARP响应数据包,如果作用域为全局(global)或链路(link),则回应ARP响应数据包。
4~7:保留未使用
8:不回应所有的arp请求
所以这里我们设置了arp_ignore=1, 简单理解就是规定你流量从哪个网卡进就从哪个网卡出,如果走错了,那它就会把你丢了。
图中可以看到进来的是ens33网卡,出去也是ens33网卡,,所以我们把arp_ignore设置为1时,它ens37网卡ping不通了,所以这里我们就要使用策略路由来让它们分流,规定它流量从哪里来就哪里出。
策略路由
模板:
实验实例:
我们在/etc/iproute2/rt_tables文件插入两张路由表(Linux最大可支持255张路由表,包括table id、table name)。
我们在这两张路由表上添加规则和路由进去:
[root@localhost ~]# ip rule add from 192.168.172.109 table ens33
#代表源地址为192.168.172.109的流量
[root@localhost ~]# ip rule add from 192.168.172.119 table ens37
#代表源地址为192.168.172.119的流量
[root@localhost ~]# ip route add default via 192.168.172.239 dev ens33 table ens33
#行为为下一跳192.168.172.239并从网卡ens33出去
[root@localhost ~]# ip route add default via 192.168.172.239 dev ens37 table ens37
#行为为下一跳192.168.172.239并从网卡ens37出去
配置完成后,我们就可以ping通两张网卡了
版权声明:本文标题:Linux双网卡同网段使用策略路由控制流量哪张网卡进就哪张网卡出 内容由热心网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:https://www.elefans.com/dianzi/1729174416a1188539.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论