1.1 问题起因
由于公司对某系统的负载服务器配置了两个外网ip,导致只有一个ip能够通外网,(其实一个外网ip也可以做两个业务的,因为有两个域名分别做了解析,所以还得解决这个问题了),外网网卡eth0和eth3。
eth0 10.0.0.21 http://bje.edu.cn 可以访问
eth3 10.0.0.22 http://bjegl.edu.cn 不可以访问
1.2 排查步骤
① 通过与机房人员交涉,询问是否开启80端口与443端口,机房那边强烈说明默认是开起的。问题存在。
② 继续交涉将eht3与eth0的ip对换,其余不变,问题也变了,之前不能访问的ip可以通外网了,而之前能通外网的现在不通了,推测就是网线插口的问题。
③ 继续交涉让机房换网口,我这边也通过配置,将eth3配置禁了,跳到eth2网卡上,问题依然存在。
④ 再者我将eth0的网卡ifdown eth0后,eth2也可以访问,这下就考虑到和机房没关系,是系统配置的问题,很有可能是网关的问题,哈哈,自己搞吧。
⑤ 据网上消息,双网卡不能配置双网关,但是我将eth2的网关禁了,还是没什么作用。
⑥ 在考虑到路由上,查了一下
处理前:
处理后:
route add -net 0.0.0.0 netmask 0.0.0.0 gw 0.0.0.62 dev eth2 (视情况而定)
问题还是没有解决
⑦ 原来是Linux默认启用了反向路由检查
如果2个网卡在一个Lan里面,那么服务器可能从eth0或者eth2发现网关, 如果一个包从eth0进入了, 而网关在eth2上, 那么从eth2是出不去的, 就不通了. 反向路由检查要求从哪里来的才能回哪去.
解决方法:关闭反向路由检查
echo 0 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 0 > /proc/sys/net/ipv4/conf/eth2/rp_filter
注:eth0,eth2为我这边配置公网IP的网卡,需要根据自己的情况进行配置
写入/etc/rc.local中,设置开机自动关闭反向路由检查(双网卡都是存在网关的)
原文地址:http://blog.51cto.com/2693543861/2352179