当我在 Azure 中执行 telnet 时出现“没有到主机的路由”

当我在 Azure 中执行 telnet 时出现“没有到主机的路由”

我在 Azure 中拥有两台虚拟机,它们具有不同的公共 IP,其私有 IP 如下:

10.10.1.9
10.10.1.6

当我从服务器 10.10.1.6 使用以下命令执行 telnet 时,出现错误:

telnet 10.10.1.9 2181
Trying 10.10.1.9...
telnet: connect to address 10.10.1.9: No route to host

当我在 10.10.1.9 端执行 tcpdump 时,我收到以下日志:

#tcpdump -i eth0 port 2181
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
07:55:35.530270 IP 10.10.1.6.55910 > 10.10.1.9.eforward: Flags [S], seq 1018543857, win 14600, options [mss 1418,sackOK,TS val 181360935 ecr 0,nop,wscale 7], length 0

同时,我也在 10.10.1.6 端执行 tcpdump,同时从 10.10.1.6 执行 telnet 到 10.10.1.9

tcpdump -i eth0 port 2181
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
07:55:57.970696 IP 10.10.1.6.55910 > 10.10.1.9.eforward: Flags [S], seq 1018543857, win 14600, options [mss 1460,sackOK,TS val 181360935 ecr 0,nop,wscale 7], length 0

**10.10.1.9 上的 tcpdump 使用 arp **

#tcpdump -i eth0 port 2181 or arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
08:00:18.356153 IP 10.10.1.6.55944 > 10.10.1.9.eforward: Flags [S], seq 3337054296, win 14600, options [mss 1418,sackOK,TS val 181643770 ecr 0,nop,wscale 7], length 0
08:00:42.294801 ARP, Request who-has 10.10.1.6 tell 10.10.1.9, length 28
08:00:42.295859 ARP, Reply 10.10.1.6 is-at 12:34:56:78:9a:bc (oui Unknown), length 28

10.10.1.6 上的 tcpdump

tcpdump -i eth0 port 2181 or arp
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes
08:00:40.805565 IP 10.10.1.6.55944 > 10.10.1.9.eforward: Flags [S], seq 3337054296, win 14600, options [mss 1460,sackOK,TS val 181643770 ecr 0,nop,wscale 7], length 0
08:00:45.805204 ARP, Request who-has 10.10.1.9 tell 10.10.1.6, length 28
08:00:45.805721 ARP, Reply 10.10.1.9 is-at 12:34:56:78:9a:bc (oui Unknown), length 28
08:02:04.752283 ARP, Request who-has 10.10.1.9 tell 10.10.1.6, length 28
08:02:04.753141 ARP, Reply 10.10.1.9 is-at 12:34:56:78:9a:bc (oui Unknown), length 28

运行顺序: 首先我在 10.10.1.9 和 10.10.1.10 上运行 tcpdumps,然后尝试从 10.10.1.10 执行 telnet。

10.10.1.9 上的 arp -a

#arp -a
? (10.10.1.7) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.4) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.1) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.8) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.10) at <incomplete> on eth0
? (10.10.1.11) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.6) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.5) at 12:34:56:78:9a:bc [ether] on eth0

10.10.1.6 上的 arp -a

#arp -a
? (10.10.1.1) at 12:34:56:78:9a:bc [ether] on eth0
? (10.10.1.10) at <incomplete> on eth0
? (10.10.1.9) at 12:34:56:78:9a:bc [ether] on eth0

10.10.1.6 中的路由表

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
168.63.129.16   10.10.1.1       255.255.255.255 UGH   0      0        0 eth0
10.10.1.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.10.1.1       0.0.0.0         UG    0      0        0 eth0

10.10.1.9 中的路由表

 #route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
168.63.129.16   10.10.1.1       255.255.255.255 UGH   0      0        0 eth0
0.0.0.0         10.10.1.1       255.255.255.0   UG    0      0        0 eth0
10.10.1.0       0.0.0.0         255.255.255.0   U     0      0        0 eth0
169.254.0.0     0.0.0.0         255.255.0.0     U     1002   0        0 eth0
0.0.0.0         10.10.1.1       0.0.0.0         UG    0      0        0 eth0

提前致谢。

答案1

我在 RHEL7 上遇到了类似的问题,发现主机防火墙阻止了传入的连接。iptables显示了一条允许ssh访问的明确规则;其他连接被阻止。

如果您使用的是 RHEL7(或使用防火墙的其他操作系统),请尝试firewall-cmd --add-port=2181/tcp(或--add-service使用众所周知的端口,例如--add-service=https端口 443 上的 HTTPS)。如果这样可以解决问题,则继续--permanent使设置持久。

相关内容