已更新在底部
我使用Centos作为路由器,刚刚更换了工作中的路由系统。我有 2 个路由器来发送数据。在大多数情况下,它正在发挥作用。在一台路由器上,我有 2 个网络范围位于同一网卡 (eth1) 上。我们在一个范围内有一台服务器,而另一个范围内的任何人都无法通过 SSH 连接到它。但是,可以 ping 通。
这是一个快速布局:
互联网链接:
eth0 - 192.168.144.50 (link between routers)
eth1 - 10.10.10.254 - 255.255.254.0 (10.10.10.x and 10.10.11.x ranges)
eth2 - internet
路由器2:
eth0 - 192.168.144.24 (link between routers)
eth1 - 98.0.0.1 & 10.98.0.1 ranges (yes, I know 98.0.0.0 is not for private use, this is a legacy setup that we haven't been able to remove yet)
这里是ip路由打印出:
98.0.0.0/24 dev eth1 proto kernel scope link src 98.0.0.1
192.168.144.0/24 dev eth0 proto kernel scope link src 192.168.144.24
10.98.0.0/24 dev eth1 proto kernel scope link src 10.98.0.1
default via 192.168.144.50 dev eth0
服务器位于 98.0.0.6。我有一台运行在 10.98.0.165 上的笔记本电脑。我收到命令的响应:ping 98.0.0.6。但是,当我尝试 ssh 访问它时,我什么也没得到。通过在我的路由器上执行一些 tcpdump 命令,我发现 ssh 命令的数据包从笔记本电脑发送到互联网路由器 (192.168.144.50),然后返回到正确的路由器。
我的 iptables 列表是空的。你可以在上面看到我的 ip 路由输出。有任何想法吗?我一整天都在盯着这个。我的理解是,路由器应该通过 eth1 将数据包发回,以便 98.0.0.6 接收。谢谢。
编辑:刮掉弹跳部分。我意识到我看到了从 ssh 会话到路由器的 ssh 流量,并将其归因于我的 ssh 请求。
更新 我分开了我的设置。现在 98.0.0.x 在 eth1 上,10.98.0.x 在 eth2 上。但我所看到的并没有多大意义。
当我从 10.98.0.165 笔记本电脑 ping 98.0.0.6 服务器时,我收到了回复。它所走的路线很奇怪。它通过默认路由到达 192.168.144.50(互联网路由器),然后返回 98.0.0.6。 (互联网路由器的 eth0 上的 tcpdump 发现了这一点)
一则花絮。当我开始这个项目时,我试图通过策略路由来让 2 个互联网提供商正常工作。有什么相关的东西可以做到这一点吗?
这是我更新的第二个路由器的布局
eth0 - 192.168.144.24 (router link)
eth1 - 98.0.0.1 / 24
eth2 - 10.98.0.1 /24
和ip路由显示
98.0.0.0/24 dev eth1 proto kernel scope link src 98.0.0.1
192.168.144.0/24 dev eth0 proto kernel scope link src 192.168.144.24
10.98.0.0/24 dev eth2 proto kernel scope link src 10.98.0.1
default via 192.168.144.50 dev eth0
答案1
正如您所说,您正在从服务器收到 ping 回复,那么 iptables 规则可能会应用于您的服务器,从而导致服务器断开 ssh 连接。
如果您有权查看服务器 iptables 规则,请检查它。会有一个删除 ssh 连接的规则。
答案2
我找到了答案。我为每个网卡添加了 NAT:
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth2 -j MASQUERADE
一旦我这样做了,一切就开始正常工作了。感谢大家!