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

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

我确信这是一个简单的路由问题,但我已经为此苦思冥想了好几个小时。

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

路由命令

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
216-234-x-x.  216-234-x-x.    255.255.255.255 UGH   0      0        0 eth0
216.234.x.x   *               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 响应良好。可以路由到互联网。但我无法让它对其公共接口上的 ping 做出响应。

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

我是 Linux 的白痴。我搜索了所有可能的 Linux 路由 q 和 A,但我认为我没有找到正确的路由。

谢谢!

编辑。我​​只希望 SIP 和 SSH 进出公共接口。否则,其他一切都应该通过私有接口出去。

答案1

我假设您没有从 SIP 提供商 IP 执行 ping 操作。

问题在于 ping 响应的路由是通过 eth1,而 eth1 无法到达源。您需要源策略路由让响应返回到 eth0。

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

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

    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
    

相关内容