服务器不响应外部接口上的ping

我确定这是一个简单的路由问题,但是现在我已经把头痛了好几个小时了。

Centos 5. eth1私有。 10.0.0.12/24 gw 1​​0.0.0.1 eth0 public 216.234.xx gw 216.234.xx

路由命令

Destination Gateway Genmask Flags Metric Ref Use Iface 216-234-xx. 216-234-xx. 255.255.255.255 UGH 0 0 0 eth0 216.234.xx * 255.255.255.248 U 0 0 0 eth0 10.0.0.0 * 255.255.255.0 U 0 0 0 eth1 link-local * 255.255.0.0 U 1002 0 0 eth0 link-local * 255.255.0.0 U 1003 0 0 eth1 default 10.0.0.1 0.0.0.0 UG 0 0 0 eth1 

在私人界面上响应很好。 可以路由到互联网。 但是我不能在它的公共接口上响应ping。

这是一个FreePBX服务器。 到216.234.xx的路线是我的SIP提供商。

我是一个linux白痴。 我已经search了每个Linux路由q和A可能,但我想我不是在寻找正确的。

谢谢!

编辑。 我只希望SIP和SSH进出公共接口。 否则,一切都应该出去的私人界面。

我假设你不是从SIP提供商IP ping通。

问题是ping响应的路由是通过eth1,这是不会到达源。 您需要源策略路由才能使响应返回到eth0。

假设216.234.0.1是您的网关,216.234.0.10是您的公共IP。

  1. 创build一个新的路由表(只需要做一次)。

     echo 10 eth0 >> /etc/iproute2/rt_tables 
  2. 添加一个默认路由到新的路由表出eth0。

     ip route add default via 216.234.0.1 table eth0 
  3. 添加一个规则来匹配公共IP作为源的数据包,并使用新的表。

     ip rule add from 216.234.0.10 lookup eth0