![有没有简单的方法来检测 ISP 端口阻塞?](https://linux22.com/image/1210320/%E6%9C%89%E6%B2%A1%E6%9C%89%E7%AE%80%E5%8D%95%E7%9A%84%E6%96%B9%E6%B3%95%E6%9D%A5%E6%A3%80%E6%B5%8B%20ISP%20%E7%AB%AF%E5%8F%A3%E9%98%BB%E5%A1%9E%EF%BC%9F.png)
答案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 不是端口扫描器。它是一个“路径”扫描器。
答案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"
}
}