【发布时间】:2013-11-27 21:20:09
【问题描述】:
我正在尝试使用 Visual Studio 2010 远程调试来调试 Amazon ec2 云机器上的应用程序 [从这里称为 REMOTE],但无法使其正常工作。
0) 机器: LOCAL 正在运行 Windows 7 Pro-64 位 REMOTE 正在运行 Windows Server 2008-R2 64 位
1) 我在远程机器上安装了远程调试监视器和诸如此类的东西(我在远程调试方面有很多经验,通常只是在更简单的网络情况下)。我使用的是 64 位版本的 msvsmon.exe
2) 本地计算机的 Windows 防火墙设置为允许 devenv.exe 发送任何内容。
传入规则允许端口 TCP 135、UDP 500 和 4500
在 LOCAL 和我们拥有的互联网之间:
本地路由器 将 TCP 和 UDP 端口 1-1193 和 1195-48999 转发到 LOCAL
本地 Ooma 盒子 将 TCP 和 UDP 端口 1-1193 和 1195-48999 转发到“本地路由器”
我已经用 tcping.exe 和端口 45678 测试了转发,并且可以正常工作,所以我知道路由器和 ooma 框的转发规则正在工作。
我已经在本地网络上测试了对另一台机器的远程调试,它可以正常工作。因此,如果 LOCAL 的防火墙出现问题,似乎只能是范围(私有/公共/域)。我们这里没有涉及域。据我所知,我已经检查了我查看过的每个防火墙规则中的所有 3 个框,所以我认为范围不是问题。虽然我想知道
3) EC2 防火墙的安全组设置允许我认为适用的入站: TCP 135 TCP 139 TCP 445 TCP 4015 UDP 0-65535
4) 在 REMOTE 上,我创建了入站规则以允许: TCP 135、139、445 和 80 UDP 137、138、500、4500(据我所知,虽然我没有使用 IPSec)
5) 我还允许 msvsmon.exe 配置防火墙以在我启动它时允许来自任何机器的连接,这可能是多余的,但此时我正在尝试一切。
6) 在 msvsmon 的工具 > 选项中,我启用“无身份验证(仅限本机)”并选中“允许任何用户调试”。端口是 4015。
7) 在 LOCAL 上,我将 Transport 更改为“Remote (native only with no authentication)”。我将 REMOTE 主机名放在 Qualifier 中。
然后,在 REMOTE 上,msvsmon 显示“Doug connected”。
太棒了!除了我什么都得不到。等待后,在 LOCAL 上,我得到“无法连接到 [主机名]。远程计算机没有响应。”
8) 我无法远程关闭 msvsmon。我可以单击文件 > 退出,但 msvsmon 然后冻结。
REMOTE 上的 ProcessHacker 显示了这些连接: msvsmon.exe (7364), [远程主机名], 3893, , , TCP, Listen, msvsmon.exe (7364), [远程主机名], 3894, , , TCP, Listen, msvsmon.exe (4232), [远程主机名], 3901, [远程主机名], 4015, TCP, 已建立, msvsmon.exe (7364), [远程主机名], 4015, , , TCP, Listen, msvsmon.exe (7364), [远程主机名], 4015, [本地主机名], 58007, TCP, 关闭等待, msvsmon.exe (7364),[远程主机名],4015,[远程主机名],3901,TCP,已建立,
本地 ProcessHacker 显示: devenv.exe (4624), Ducky, 58175, [RemoteHost], 4015, TCP, FIN Wait 2,
如果我想要足够长的时间,LOCAL 上的“FIN Wait 2 connection”会消失,但 REMOTE 上的“Close Wait”连接直到我终止 msvsmon 进程后才会消失。
9) 所以似乎 REMOTE 试图在不同的端口上联系 LOCAL 并且没有通过?还是……?
我真的没有想法。很明显,我在某个地方出了点问题。我已经尝试关闭本地和远程的 windows 防火墙并获得相同的结果。
【问题讨论】:
标签: visual-studio-2010 networking amazon-ec2 remote-debugging