如何在linux中设置两个默认路由
TL; DR
如何在linux中设置两个默认路由(对应两个接口),以便接受来自两个接口的传入流量. 脚本 我有一个主机有两个NIC eth0和eth1.它连接到两个网络,说: > Dev:eth0,IP:1.1.1.4,网络掩码:255.255.255.0,网关:1.1.1.1 (两个网络都连接到互联网.) 路线是(ip route show): default via 1.1.1.1 dev eth0 metric 1 default via 2.2.2.1 dev eth1 metric 2 1.1.1.0/24 dev eth0 src 1.1.1.4 2.2.2.0/24 dev eth1 src 2.2.2.4 (较低的指标表示较高的优先级.) 现在有人从某个外部主机(比如4.4.4.4)ping 2.2.2.4时,没有回复. 我主机上tcpdump -i eth1的输出是: 22:41:27.431539 IP 4.4.4.4 > 2.2.2.4: ICMP echo request,id 8625,seq 4,length 64 22:41:28.439492 IP 4.4.4.4 > 2.2.2.4: ICMP echo request,seq 5,length 64 22:41:29.447666 IP 4.4.4.4 > 2.2.2.4: ICMP echo request,seq 6,length 64 22:41:30.455528 IP 4.4.4.4 > 2.2.2.4: ICMP echo request,seq 7,length 64 经过一番研究后发现,当linux网络堆栈收到4.4.4.4的数据包时,它会检查其路由表,看看4.4.4.4应该使用哪个接口(路由表中的eth0).现在,由于数据包来自eth1接口,linux只是丢弃它(这个策略可能是为了防止IP欺骗). 我想要的是: >默认情况下,传出流量(本地发起的)应使用eth0接口. 解决方法
使用iproute2你可以这样做:
echo "1 admin" >> /etc/iproute2/rt_tables echo "2 users" >> /etc/iproute2/rt_tables ip rule add from 192.168.122.40/32 dev eth0 table admin ip rule add from 192.168.123.41/32 dev eth1 table users ip route add default via 192.168.122.1 dev eth0 table admin ip route add default via 192.168.123.1 dev eth1 table users 现在您将拥有两个带有两个网关的路由表. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |