linux多网卡跨网段通信有时能通有时不能通,经过网上搜集各种资料终于搞明白问题的原因和解决办法;再次和大家分享,希望对大家有帮助
资料来源:
https://cloud.tencent.com/developer/article/1141574
https://blog.51cto.com/jsahz/2071949
https://www.cnblogs.com/yldf/p/1e19442f0dcd926c50ded4c667199b26.html
Linux有默认有local main default unspec四张路由表;
cat /etc/iproute2/rt_tables可以查询当前环境的路由表信息
通常ip route查询的是main表的内容
如果主机上有多张网卡默认路由只有1条,此时两个主机默认跨子网是无法通信的。此时需要让指定子网的数据到对应网关上就可以让主机跨子网通信。
假如主机有1.1.1.1 2.2.2.2 3.3.3.3 共三张网卡,每个子网的网关为.254
ip route add default via 1.1.1.254 dev eth0 table 10 #路由表 10添加默认路由表由eth0口默认发送到1.1.1.254网关
ip route add default via 2.2.2.254 dev eth1 table 20
ip route add default via 3.3.3.254 dev eth2 table 30
ip rule add from 1.1.1.1 table 10 #通过路由表10 来路由源Ip为1.1.1.1的数据
ip rule add from 2.2.2.2 table 20
ip rule add from 3.3.3.3 table 30