原因
Linux默认启用了反向路由检查。
如果2个网卡都在一个LAN里面,那么服务器可能从eth0或者eth1发现网关。 如果一个包从eth0进入,而服务器发现的网关在eth1上,那么包是从eth1出不去的, 所以就不通了。反向路由检查要求从哪里来的才能回哪去。
解决办法
关闭反向路由检查(根据实际情况替换第二第三行的网卡名):
echo 0 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/网卡名0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/网卡名1/rp_filter
如果希望每次开机自动关闭反向路由检查, 只需要将以上命令加入 /etc/rc.local 即可。