我确信这是一个简单的路由问题,但我已经为此苦思冥想了好几个小时。
Centos 5. eth1 私有。10.0.0.12/24 gw 10.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。
创建一个新的路由表(只需做一次)。
echo 10 eth0 >> /etc/iproute2/rt_tables
向新的路由表中添加一条出站 eth0 的默认路由。
ip route add default via 216.234.0.1 table eth0
添加一条规则,匹配以公网IP为源的数据包,并使用新的表。
ip rule add from 216.234.0.10 lookup eth0