Networking &引用;“没有到主机的路线”;当我使用telnet时

Networking &引用;“没有到主机的路线”;当我使用telnet时,networking,telnet,tcpdump,arp,Networking,Telnet,Tcpdump,Arp,我在Azure中有两个具有不同公共IP的VM: 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 tcpdum

我在Azure中有两个具有不同公共IP的VM:

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到10.10.1.9之间执行telnet

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
**带arp的10.10.1.9上的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: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
#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.9和10.10.1.10上运行tcpdump,然后从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
#arp-a
? (10.10.1.7)在eth0上的12:34:56:78:9a:bc[乙醚]
? (10.10.1.4)在eth0上12:34:56:78:9a:bc[乙醚]
? (10.10.1.1)在eth0上12:34:56:78:9a:bc[乙醚]
? (10.10.1.8)在eth0上12:34:56:78:9a:bc[乙醚]
? (10.10.1.10)在eth0上
? (10.10.1.11)在eth0上的12:34:56:78:9a:bc[以太]
? (10.10.1.6)在eth0上12:34:56:78:9a:bc[乙醚]
? (10.10.1.5)在eth0上12:34:56:78:9a:bc[乙醚]
10.10.1.6上的arp-a

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
#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
#arp-a
? (10.10.1.1)在eth0上12:34:56:78:9a:bc[乙醚]
? (10.10.1.10)在eth0上
? (10.10.1.9)在eth0上的12:34:56:78:9a:bc[乙醚]
提前谢谢

10.10.1.9中的tcpdump表示它收到了来自10.10.1.10的数据包。但无法回复…因此,我们在10.10.1.10侧获得“无主机路由”

如果实际上没有从10.10.1.10到10.10.1.9的路由,您应该得到“无主机路由”,而不仅仅是因为从10.10.1.10到10.10.1.9发送的数据包没有得到回复。也就是说,如果10.10.1.10首先无法将数据包发送到10.10.1.9,您应该只获得“无主机路由”

现在,也许运行在10.10.1.10上的操作系统很愚蠢,如果从未从初始SYN返回SYN+ACK,则返回EHOSTUNREACH(“无主机路由”),而不是ETIMEDOUT(“操作超时”)

或者,可能有一条从10.10.1.10到10.10.1.9的路线

23:46:30.003480 IP 10.10.1.10.42946 > 10.10.1.9.eforward: Flags [S], seq 2823099523, win 14600, options [mss 1418,sackOK,TS val 74982205 ecr 0,nop,wscale 7], length 0
数据包已发送,但10.10.1.9无法或决定不使用SYN+ACK响应初始SYN,当10.10.1.10重新传输SYN时,它不再能够向10.10.1.9发送数据包,并报告“没有到主机的路由”

如果这是可复制的,我建议在两台主机上运行tcpdump,以查看关于发生了什么的更多细节。我建议运行如下命令

tcpdump -i eth0 port 2181 or arp
因此,例如,如果问题是另一台主机的ARP条目在其中一台主机上超时,并且随后为另一台主机的MAC地址重新ARP的尝试失败,则将显示。(我在这里假设在10.10.1.10和10.10.1.9之间没有路由器,所以“没有到主机的路由”实际上意味着“主机没有ARP条目”。)


(另一种可能性是,在一台或另一台主机上有某种“包过滤器”/“防火墙”,处理某些端口时与其他端口不同,因此可以连接到端口22,但无法连接到端口2181。)

您是否能够
ping 10.10.1.9
?是的,我能够ping它。我也可以做telnet,但使用不同的端口,22。可能
telnet
服务没有在端口
2181
上运行。如果它没有在端口2181上运行,我就不会有tcpdump日志。它在运行(10.地址不公开。我运行命令:04:28:32.354804 ARP,请求谁拥有10.10.1.10告诉10.10.1.9,长度28 04:28:32.355507 ARP,回复10.10.1.10是在12:34:56:78:9a:bc(oui未知),长度28………..我能够从10.10.1.9和10.10.1.10两台机器上获得arp回复,因此,如果您在两台机器上都运行该tcpdump命令,那么当telnet失败时,10.10.1.10上会显示什么?(可能两台主机上的tcpdump命令仍在运行,并且您已经显示了它产生的所有输出。)在机器10.10.1.10上……#tcpdump-i eth0 arp tcpdump:禁止详细输出,使用-v或-vv在eth0上进行完整协议解码侦听,链接类型EN10MB(以太网),捕获大小65535字节04:32:49.721119 arp,请求谁拥有10.10.1.10告诉10.10.1.10,长度28 04:32:49.722099 arp,回复10.10.1.10在12:34:56:78:9a:bc(oui未知),长度28服务器是新的,没有包文件管理/防火墙!!我需要紧急帮助,因为我找不到任何方法!!!用arp输出编辑了帖子。实际上,我们删除了10.10.1.10 VM,昨天创建了一个新的VM 10.10.1.6。10.10.1.6是用azure中的10.10.1.10映像创建的。而且这些机器有不同的公共ip地址ses.到目前为止,为了避免混淆,我在帖子中已经写了10.10.1.10。但是在这之后,我会说10.10.1.6!!