有没有简单的方法来检测 ISP 端口阻塞?

有没有简单的方法来检测 ISP 端口阻塞?

有没有办法区分我的 ISP 阻止某些端口上的流量和我的 NAT 路由器/防火墙阻止该流量?网站“护盾升起“ 和 ”你可以看到我吗”显示我的端口已关闭或无法访问,但我认为这主要是由于 NAT 路由器造成的。(显然,我可以移除路由器,直接连接并使用这些站点,但有没有一种不这样做的简单测试方法?)

答案1

您可以在路由器配置中将您的计算机设置为 DMZ,这意味着 NAT 基本上将所有内容传递给您。

答案2

这将花费很多时间,但会为您提供所有被阻止端口的列表:

#!/bin/bash

COUNTER=1
while [  $COUNTER -lt 65535 ]; do
        echo $COUNTER
        curl portquiz.net:$COUNTER --connect-timeout 1
        let COUNTER=COUNTER+1
done

答案3

Firebind.com 能够告诉您客户端计算机与 Internet 之间是否有 65535 个 UDP 或 TCP 端口被阻止。他们有一个 Java Applet 客户端,可以通过您选择的端口在您的计算机和他们的服务器之间来回发送数据包,如果数据包传输成功,您就知道该端口没有被任何中间防火墙(例如您自己的家用路由器或 ISP 防火墙)阻止。

因此,对于您的情况,您可以先在路由器后面运行测试,并获取所有被阻止端口的列表。然后,您可以将您的机器直接连接到互联网(绕过防火墙),然后再次运行测试。通过比较结果,您将能够找出家用路由器阻止的内容和 ISP 阻止的内容之间的差异。

需要注意的是,Firebind 不是端口扫描器。它是一个“路径”扫描器。

http://www.firebind.com

答案4

在 Windows 上,此 PowerShell 脚本将运行:

for ($i=1; $i -le 65535; $i++) {
    Write-Output "Checking port $i"
    try {
        $tcpconnection = Test-NetConnection -ComputerName portquiz.net -Port $i -WarningAction SilentlyContinue
        if($tcpconnection.TcpTestSucceeded) {
            Write-Output "Port $i is open"
        }
        else {
            Write-Output "Port $i is closed"
        }
    }
    catch {
        Write-Output "Port $i is closed"
    }
}

相关内容