假设物理网口为 eth0, eth1
eth0: 192.168.5.25
eth1: 192.168.5.27
1、配置ARP响应模式
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 2 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 2 > /proc/sys/net/ipv4/conf/lo/rp_filter
2、配置网口路由表
子网掩码:21
网关:192.168.3.1
ip route add 192.168.0.0/21 dev eth0 src 192.168.5.25 table 10000
ip route add 192.168.0.0/21 dev eth1 src 192.168.5.27 table 10001
ip route add default dev eth0 via 192.168.3.1 table 10000
ip route add default dev eth1 via 192.168.3.1 table 10001
ip rule add from 192.168.5.25 table 10000
ip rule add from 192.168.5.27 table 10001
3、测试
ip route get to 192.168.3.1 from 192.168.5.25
ip route get to 192.168.3.1 from 192.168.5.27
从eth1(192.168.5.27) ping测试目标
ping -I eth1 192.168.5.26
可以在eth1看到请求、响应包。
从外部查看 arp -a,可以看到 5.25, 5.27的mac地址分别对应 eth0, eth1。
从外部ping 192.168.5.27,并且在多网卡设备上抓包 (tcpdump -i eth1 icmp),可以在eth1看到请求、响应包。