我有一台运行 CentOS 的虚拟机,它有 2 个网络接口。一个连接到私有网络 (192.168.6.x),另一个连接到我们公司网络。当我尝试从具有访问权限的主机通过 ssh 访问私有地址时,没有收到任何响应。请求似乎通过一个接口进入,但从另一个接口出去。由于另一个接口没有返回路由,数据包会丢失。为什么它不从同一个接口发回?是否有一个设置可以启用,以便它能这样做。
编辑:请忽略我之前所说的关于 ping 工作但 ssh 不工作,我错了。
编辑:路线-n的结果
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
10.10.192.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
192.168.6.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
10.126.186.0 192.168.6.61 255.255.255.0 UG 0 0 0 eth0
172.91.4.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.1026
10.126.163.0 172.91.4.1 255.255.255.0 UG 0 0 0 eth0.1026
10.164.0.0 172.91.4.1 255.255.0.0 UG 0 0 0 eth0.1026
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
169.254.0.0 0.0.0.0 255.255.0.0 U 1008 0 0 eth0.1026
144.0.0.0 172.91.4.1 255.0.0.0 UG 0 0 0 eth0.1026
147.0.0.0 172.91.4.1 255.0.0.0 UG 0 0 0 eth0.1026
0.0.0.0 172.91.4.1 0.0.0.0 UG 10 0 0 eth0.1026
答案1
细节仍然有点模糊,因为您似乎到处都有很多静态路由,但根据您上次在路由表中添加条目的回答,有一件事确实很突出:
10.126.186.0 192.168.6.61 255.255.255.0 UG 0 0 0 eth0
来解决这个问题。本质上这意味着10.126.186.0/24 via eth0 gateway 192.168.6.61
但您(源)位于 10.126.186.22/25 上。请注意不同的网络掩码。如果目标服务器的 IP 地址高于 10.126.186.128,这将导致问题。
此外,您不应该拥有自己网络的网关地址。因此,该路由应该是:
route add -net 10.126.186.128/25 gw 192.168.6.61
此路由问题是由于您使用网关到达目标系统,但它会尝试直接回复,因为它(目标)认为它实际上与您在同一个网络上(因为它的网络掩码比您的更宽),而不是通过网关 192.168.6.61 返回
如果这是唯一的问题,解决这个差异可能就能解决问题。
就您最后一条评论而言,说它会通过 eth1 出去是错误的,因为没有路由可以让它这样做。但是,如果没有您添加的路由,它会通过 eth0 出去,地址是您的默认网关 172.91.4.1。据此,我假设这个 172.91.4.1 网关没有连接到 10.126.186.128/25 网络,因此是错误的网关。您添加 192.168.6.61 路由证实了这一点。
如果您提供了目标服务器的 IP 地址(或网络地址),这也有助于更好地理解您的问题。您在问题中指定了一个网络地址,但没有提供另一个网络地址。