特定主机的首次连接失败

特定主机的首次连接失败

我正在使用 rdesktop 通过 RDP 连接到 Windows 7 桌面。我使用的命令是:rdesktop -g 1800x1000 win3.int.mtak.nl。在客户端(Ubuntu 13.04,rdesktop 1.7.1)重新启动后,我第一次运行此命令时收到错误:

ERROR: win3.int.mtak.nl: unable to connect

当我立即运行该命令时,它工作正常。我连接到其他主机时没有遇到任何问题。我还尝试过host win3.int.mtak.nl使用 rdesktop 进行连接,它返回了正确的 IP 地址。当我尝试从另一个 Windows 客户端连接时,它没有给出任何错误。

我使用 strace 发现了以下内容:

connect(4, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, 16) = 0
poll([{fd=4, events=POLLOUT}], 1, 0)    = 1 ([{fd=4, revents=POLLOUT}])
syscall_307(0x4, 0x7ffff081f360, 0x2, 0x4000, 0, 0x1c, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5, 0x5) = 0x2
poll([{fd=4, events=POLLIN}], 1, 5000)  = 1 ([{fd=4, revents=POLLIN}])
ioctl(4, FIONREAD, [120])               = 0
recvfrom(4, "Y\324\205\200\0\1\0\1\0\2\0\2\4win3\3int\4mtak\2nl\0\0\1"..., 2048, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 120
poll([{fd=4, events=POLLIN}], 1, 4981)  = 1 ([{fd=4, revents=POLLIN}])
ioctl(4, FIONREAD, [80])                = 0
recvfrom(4, "\361\326\205\200\0\1\0\0\0\1\0\0\4win3\3int\4mtak\2nl\0\0\34"..., 1928, 0, {sa_family=AF_INET, sin_port=htons(53), sin_addr=inet_addr("127.0.0.1")}, [16]) = 80
close(4)                                = 0
socket(PF_INET, SOCK_STREAM, IPPROTO_TCP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(3389), sin_addr=inet_addr("10.100.0.63")}, 16) = -1 EHOSTUNREACH (No route to host)

尽管存在到主机的路由,系统仍会给出 EHOSTUNREACH 无法访问错误:

mtak@frisbee:~$ netstat -rnv
Kernel IP routing table
Destination     Gateway         Genmask         Flags   MSS Window  irtt Iface
0.0.0.0         192.168.137.1   0.0.0.0         UG        0 0          0 eth0
10.100.0.0      10.100.1.1      255.255.255.0   UG        0 0          0 tun0
[other output omitted]

总结一下:

  • 对于子网中仅有一台主机,连接时出现 EHOSTUNREACH 错误
  • 我可以在第一次尝试时连接该子网中的其他主机
  • 这仅在我第一次尝试连接时或等待很长时间后才会发生。
  • 后续连接尝试均能正常进行

RDP 服务器与子网中的所有其他服务器一样在 VMware ESX 上运行。网络接口没有特定设置。

相关内容