2台のマシンAとBにルートがあり、AからBでアクセスできないポートを知りたいです。すべてのポートでリッスンするコマンドラインアプリケーションをBで実行してから、nmap
多分?ポートはルーターによってブロックされている可能性があるため、iptables
をチェックするだけでは不十分です。
単純なnmapは
Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 09:32 BST
Nmap scan report for B (xxx.xxx.xxx.xxx)
Host is up (0.00038s latency).
rDNS record for xxx.xxx.xxx.xxx: B
Not shown: 999 closed ports
PORT STATE SERVICE
22/tcp open ssh
Nmap done: 1 IP address (1 Host up) scanned in 0.07 seconds
Aからポート5900をスキャンするだけで、
nc -v -w 1 B -z 5900
nc: connect to B port 5900 (tcp) failed: Connection refused
そしてBから私は得る
nc -v -w 1 localhost -z 5900
Connection to localhost 5900 port [tcp/*] succeeded!
Bからnmapも実行しています
nmap localhost
Starting Nmap 5.21 ( http://nmap.org ) at 2013-04-18 09:57 BST
Nmap scan report for localhost (127.0.0.1)
Host is up (0.00024s latency).
Hostname localhost resolves to 2 IPs. Only scanned 127.0.0.1
Not shown: 995 closed ports
PORT STATE SERVICE
22/tcp open ssh
25/tcp open smtp
53/tcp open domain
631/tcp open ipp
5900/tcp open vnc
nmap
を使用する場合、「フィルタリングされた」ポートと「閉じられた」ポートには違いがあります。これにより、アクセスできないすべてのポートが「フィルター済み」として表示され、誰もリッスンしていないポートは「閉じた」としてリストされます。
応答TCPリクエストをドロップするのではなく、その間に平均ルーターがある場合は、すべてのポートにバインドすることで確認できます(警告、不足する可能性がありますこれを行うシステムリソース!多分一度に最大1000ポートで試してみてください):
for i in {1..65535} ; do nc -l $i & done