我如何(通过日志记录)证明端口阻塞发生在哪里?
我在 IIS(Windows 7 家庭版)上设置了一个 FTP 站点,并在 Windows 防火墙中设置了允许访问的规则。我可以通过本地浏览器访问我的静态 IP(ftp.example.com,其中 DNS 是 godaddy,因此它解析为我的静态 IP,并且正在提供 ftp 目录)。我还在我的 uVerse 路由器防火墙中设置了一条规则,允许 FTP 服务器访问此计算机。但是,我的客户无法访问我的 FTP 站点,当我使用 mxtoolbox.com 进行测试时……
1.开放端口:
80 http Success 78 ms
这些端口已关闭:
21 ftp Timeout 0 ms
此外,我可以添加其他开放端口,例如 IMAP 和 POP3,一旦我编辑路由器防火墙,它们就会显示为开放。无论我删除和添加 FTP 服务器多少次,端口 21 永远不会在 mxtoolbox.com 上显示为开放,当然客户无法访问 FTP 站点。他可以成功访问我本地托管的网页。
答案1
从远程站点,您可以使用它traceroute
来找出路径中端口被阻止的位置。请注意,这必须是 *nix 跟踪路由,例如 Linux,因为 Windows 不支持通过任意端口进行跟踪路由。
比较
sudo traceroute -p 21 -T <your server ip>
到
sudo traceroute -p 80 -T <your server ip>
这些必须以 root 身份运行,因为它需要提升的权限。
注意是 IP后最后一个成功的跳转会告诉您阻塞的位置 - 即没有响应的跳转。因此,在端口 21 跟踪路由中最后一个成功的跳转之后,在端口 80 跟踪路由中查找下一个跳转。
答案2
要检查您的端口在哪个点或跳跃被阻止,请使用tracetcp
。它非常简单,如下所示。
要检查端口 31 一直到目的地:
$ tracetcp www.ebay.co.uk:31
Tracing route to 66.135.192.41 [www.ebay.co.uk] on port 31
Over a maximum of 30 hops.
1 1 ms 1 ms 1 ms 192.168.0.1 [wintermute]
2 10 ms 13 ms 9 ms 10.78.128.1
3 * * * Request timed out.
4 * * * Request timed out.
5 * * * Request timed out.
6 ... continues until maximum number of hops reached.
您只需安装 winpcap,该实用程序即可在 Windows Cmd 中运行。
http://simulatedsimian.github.io/traacetcp_examples.html#scan-for-blocked-outgoing-ports
答案3
如果您无法访问 Linux,只需在 Windows 上安装 telnet 客户端:
控制面板 -> 程序和功能
telnet server-ip port
或者您可以下载 PuTTY。
如果连接超时或者被拒绝,那么就会出现问题:)