我学校有防火墙,限制了大多数传出端口。只允许、、TCP/80
。有没有办法找出防火墙允许的所有传出端口?TCP/443
TCP/21
我目前的想法是:在nc
远程服务器上打开所有 TCP 端口,然后使用它nmap
来扫描哪些端口可以访问。但是如果我没有远程服务器该怎么办?或者是否有一个公共服务器可以打开所有端口进行此类测试?
对于那些担心我违反学校规定的人,我认为这样做没什么大不了的。假设我在外部主机上建立了一个服务,并希望学校网络可以访问它,我愿意知道我可以为这项服务使用哪些端口。我没有破坏任何东西。我相信这样做是 100% 合法的。
答案1
您可以使用portquiz.net,即确切地您要寻找的服务器类型。例如,以下 shell 脚本可完成此工作:
for x in `seq 1 65535`; do
echo -ne "$x "
curl "http://portquiz.net:$x" \
--connect-timeout 1 \
-o /dev/null \
-q >/dev/null 2>&1 \
&& echo 'open' \
|| echo 'closed'
done | tee ports.lst
请注意,这将运行很长时间,因此,如果您不耐烦,可以使用 GNU 并行化该任务parallel
。
此外,portquiz
他们的某些端口似乎被阻止了(据我记得,它们是 SSH 和 HTTPS 的端口),但除了少数特殊情况外,所有剩余端口都应该打开。
答案2
您可以查看“无效的传出端口”和“有效的传出端口但服务器无响应”的响应是否不同。例如,如果您知道端口 6667 无效,请查看在连接到已知 6667 端口开放的服务器时获得的响应(例如来自 telnet)。将其与防火墙允许的服务器上未开放端口的响应进行比较。如果您能区分这两者,那么您就不需要该额外的服务器。否则,您需要。
或者,直接询问您的 IT 管理员。