- 机器1 IP:172.30.11.119
- 机器2 IP:172.30.11.120
- 机器3 IP:172.30.11.121
- 机器4 IP: 172.30.11.122
注意:这些机器连接到 LAN。
我已经在 /etc/network/interfaces 文件中为每台机器的以太网接口配置了静态 IP,如上所述,以便在系统重启后仍能保留 IP。
我已将机器 4 中的默认网关设置为 172.30.11.97(以便通过 putty 连接管理器从用户桌面访问它)
allow-hotplug eth0
iface eth0 inet static
address 172.30.11.122
netmask 255.255.255.0
gateway 172.30.11.97
但是在其他 3 台机器上,我没有像 122 那样设置默认网关。相反,我在这 3 台机器上尝试了策略路由,如下所示,在“interfaces”和“rt_table”文件中:
echo "1 policy_gw" >> /etc/iproute/rt_table
In /etc/iproute/rt_table:
1 policy_gw
在 /etc/network/interfaces 中:
allow-hotplug eth0
iface eth0 inet static
address 172.30.11.121
netmask 255.255.255.0
post-up ip rule add dev eth0 table policy_gw
post-up ip route add default via 172.30.11.97 dev etho src 172.30.11.121/24 table policy_gw
对 120/119 台机器也做了同样的操作。现在我可以通过 putty 直接访问这些机器。
面临的问题:我可以从同一 LAN 中的其他计算机 ping 该 LAN 中的每台计算机。但 ssh 失败并显示错误port 22: no route to host
假设我在机器 121 上:ssh 172.30.11.120 抛出上述错误。
默认网关是思科系统路由器/交换机。它们阻止 SSH、telnet 协议的端口,但不阻止 ICMP。
122号机器的路由表:
root@debian:~# route -n
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 172.30.11.97 0.0.0.0 UG 0 0 0 eth1
172.30.11.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
ssh_config 文件的内容:
Host *
SendEnv LANG LC_*
HashKnownHosts yes
GSSAPIAuthentication yes
GSSAPIDelegateCredentials no
答案1
您的主机是否位于同一个物理网络中?
“没有到主机的路由” - 这似乎是来自路由器的 icmp 答案,您可以使用网络分析器进行测试。似乎您的 ssh 流量通过路由器传输,尽管主机位于同一网络中,但您的 policy_gw 表的优先级可能高于内置本地表。路由器拒绝转发它(但同时它以某种方式允许 icmp)或者它确实没有到目的地的路由。查看路由器的表格或更正您的策略路由,以便您的主机直接对话,因为它们应该如此。