背景资料
我正在开发一种旨在与服务器通信的支持网络的嵌入式设备。因为该服务器将运行 linux(但我需要 Windows 工具进行开发),所以我正在运行一个带有 Ubuntu Server 14.04 的 VM 用于开发目的。
嵌入式方面对于这个问题并不重要,因为我要回到最简单的测试设置(只需让主机连接到 VM 上的服务器以查看 TCP 连接已建立)以进行故障排除。
网络设置
运行 DD-WRT [v24-sp2 (03/25/13) std (SVN 修订 21061)] 的 D-Link DIR-615,通过 MAC 过滤器分配给主机和 VM 的静态 IP,启用 DNS 功能
开发机(192.168.5.117,dev.test.lan)
Ubuntu VM (192.168.5.118, vm.test.lan) - 使用桥接连接(NAT 不起作用,因为客户端将启动与 VM 的连接)
路由器未连接到任何类型的 WAN,仅有线连接,Wi-Fi 已禁用
执行的健全性检查
从 VM ping 主机成功(使用 IP 或 dns 名称)
从主机 ping VM 成功(使用 IP 或 dns 名称)
主机 <-> VM 之间的 nc(可以从任一侧侦听/连接)[侦听端口 9050]
在 VM 内,可以通过 nc 连接到 VM 上运行的服务器应用程序,成功建立连接 [到端口 9050]
为端口 9050 上的传入/传出 TCP 连接打开 Windows 防火墙
问题分析
使用wireshark,我可以在执行nc sanity test(主机<-> VM)时看到TCP连接成功。
当我在VM上运行服务器(用python编写,使用asyncio)并尝试从主机通过nc连接时,服务器看不到任何连接(但我们知道从nc连接到服务器是有效的,因为这已在 VM 内部成功测试)。
从wireshark我看到主机向VM发送SYN,之后VM以[RST,ACK]响应。主机在放弃之前重试传输两次。
问题
桥接连接是否适合用于 VM 的设置?
找出 RST 来源的最佳方法是什么?(是路由器、虚拟机 TCP/IP 堆栈,还是 Python 的某些部分导致了它?)
更新:在虚拟机中
尝试nc 192.168.5.118 9050
并观察到与从主机尝试相同的拒绝连接行为。根据亚当所说的,看起来我们越来越近了。也会尝试亚当的建议并发布更新。