質問: ネットワークが発信ポートをブロックしているかどうかを検出するにはどうすればよいですか? ネットワークが発信ポートをブロックしているかどうかを確認するにはどうすればよいですか?ポート80と443以外のポートで実行されているサーバーのサービスへのアクセスに問題があります。たとえば、sshがポート22、2222、32415などで実行されているサーバーにssh接続できません。さらに、openvpnなど、私が作業に必要な他のプログラムが失敗しています。理想的には、ネットワークがnotブロッキングになっているポートのリストを特定したいと思います。図書館の公共のアクセスポイントにいます。
回答: 特定の発信ポートが悪意のあるミドルボックスによってネットワーク上でブロックされているかどうかをテストするには、そのポートでサービスが実行されているサーバーにtelnetで接続してみます。この例では、この目的のために設計されたパブリックサービスであるportquiz.netを使用します。 iptablesのnatテーブルを使用し、すべてのtcpポートを開いています を使用します。# first we verify that we _can_ connect over port 443, which >99% of # networks won't block; it works user@personal:~$ time echo 'exit' | telnet portquiz.net 443 trying 178.33.250.62... connected to portquiz.net. escape character is '^]'. connection closed by foreign host. real 0m0.069s user 0m0.002s sys 0m0.043s user@personal:~$ # next we try to connect over a port that's suspected of being blocked; it fails user@personal:~$ time echo 'exit' | telnet portquiz.net 22 trying 178.33.250.62... telnet: unable to connect to remote host: connection timed out real 2m10.635s user 0m0.004s sys 0m0.035s user@personal:~$ 最初のコマンドはメッセージconnected to portquiz.netですぐに終了したことに注意してください。これは、発信ポート443がネットワークによってブロックされていないことを示します。ただし、2番目のコマンドではunable to connect to remote host: connection timed outと表示されます。これは、portquiz.netに問題がない限り、発信ポート22がおそらくネットワークでブロックされていることを示しています。これをさらに一歩進めることができます nmapを使用して、ネットワークによってnotされていないすべてのポートのリストを取得します 。例えば:user@personal:~$ time nmap -p- portquiz.net | grep -i open 21/tcp open ftp 53/tcp open domain 80/tcp open http 143/tcp open imap 443/tcp open https 465/tcp open smtps 587/tcp open submission 993/tcp open imaps 1935/tcp open rtmp 4070/tcp open unknown real 3m48.324s user 0m18.885s sys 0m29.077s user@personal:~$ 上記のコマンドでは、21、53、80、143、443、465、587、993、1935、および4070を除くすべての発信ポートがブロックされていることがわかります。通常の/無検閲のネットワークでは、このリストは非常に多くなります。長い(おそらく すべての65535ポート を表示)