web-dev-qa-db-ja.com

ネットワークが発信ポートをブロックしているかどうかを検出するにはどうすればよいですか?

ネットワークが発信ポートをブロックしているかどうかを確認するにはどうすればよいですか?

ポート80と443以外のポートで実行されているサーバーのサービスへのアクセスに問題があります。たとえば、sshがポート22、2222、32415などで実行されているサーバーにSSH接続できません。

さらに、openvpnなど、私が作業に必要な他のプログラムが失敗しています。

理想的には、ネットワークがnotブロッキングになっているポートのリストを特定したいと思います。

図書館の公共のアクセスポイントにいます。

8

特定の発信ポートが悪意のあるミドルボックスによってネットワーク上でブロックされているかどうかをテストするには、そのポートでサービスが実行されているサーバーに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ポート を表示)

13

この質問は少し漠然としていて答えにくいです。そして皮肉なことに、今朝私は頭をぶつけました。 ISPの助けがなければ、これを完全に行うことは不可能です。

最初に行うことは、ルーターがこれをすべて許可していることを確認することです。ただし、これは一般的なSOHOルーターのデフォルトの状態です。ルーターによっては、tcpdumpを実行して外部インターフェイスを調べ(dd-wrtを実行している場合など)、パケットがネットワークから出ていないか確認することができます。これを行うことができない場合、オプションはここで非常に制限されます-オンになっているISPは、ネットワークに入るパケットを見ているかどうかを通知できる可能性があります-しかし、私はこれを普通の人に期待しませんホームユーザー接続。または、ネットワークに関係のないすべてのものを切断できる場合、PPPインターフェイスパケットカウントに基づいてトラフィックがネットワークを離れているかどうか、または点滅しているライトを確認してください接続を試みるときのモデム/ルーター。

次に、接続の問題がなく、独自の「実際の」IPアドレスを持っているかサーバーで応答していることがわかっているサーバー/仮想サーバーにアクセスできる場合は、そのリモートボックスにログインしてtcpdumpを使用できます。インターフェイスで、マシンからパケットを受信して​​いるかどうかを確認します。そうでない場合、パケットはドロップされています。パケットが受信されている場合、ファイアウォールまたはリターンパスの問題である可能性があります。

リモート(ファイアウォールのない)サーバーにアクセスできる場合は、nmapまたはnetcatを使用してそのサーバーへのトラフィックを生成し、tcpdumpが何を参照しているかを確認しながら、tcpdumpを実行できます。

1
davidgo