nmap、ss (netscan?)、lsof が異なる結果を返すのはなぜですか?

nmap、ss (netscan?)、lsof が異なる結果を返すのはなぜですか?

自分のマシンでどのポートがアクティブにリッスンしているか(使用中か?)を把握しようとしていますが、何をしているのかよくわかりません。試した 3 つのコマンドはnmap、、ss(?netscan?)、およびですlsof

netscanアクティブにリッスンしているポートは 1 つだけであると報告されます (631):

$ sudo nmap -sT  localhost
Starting Nmap 7.91 ( https://nmap.org ) at 2021-06-02 21:28 EDT
Nmap scan report for localhost (127.0.0.1)
Host is up (0.000094s latency).
Not shown: 999 closed ports
PORT    STATE SERVICE
631/tcp open  ipp

ss(? netscan?) は 2 つのポートが使用中であると報告します (631 と 53):

$ sudo ss -tulwn | grep LISTEN
tcp    LISTEN  0       4096     127.0.0.53%lo:53           0.0.0.0:*            
tcp    LISTEN  0       5            127.0.0.1:631          0.0.0.0:*            
tcp    LISTEN  0       5                [::1]:631             [::]:*       

最後に、個々のポートをチェックするとlsof -i:xx、631 と 53 の結果が表示されますが、ポート 80 と 443 の結果も表示されます。

$ sudo lsof -i:80

COMMAND  PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
firefox 3481 me   74u  IPv4  85172      0t0  TCP Machine:56024->lga25s63-in-f3.1e100.net:http (ESTABLISHED)

$ sudo lsof -i:443
COMMAND    PID       USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
skypeforl 2426 me   27u  IPv4  77133      0t0  TCP Machine:60396->13.83.65.43:https (ESTABLISHED)
skypeforl 2453 me   72u  IPv4  56536      0t0  TCP Machine:58945->40.86.187.166:https (ESTABLISHED)
firefox   3481 me   95u  IPv4  81375      0t0  TCP Machine:53788->104.16.249.249:https (ESTABLISHED)
firefox   3481 me  157u  IPv4  80283      0t0  TCP Machine:49080->lga34s15-in-f5.1e100.net:https (ESTABLISHED)
chrome-gn 3799 me   74u  IPv4  55080      0t0  TCP Machine:42196->server-52-85-61-100.ewr53.r.cloudfront.net:https (CLOSE_WAIT)
chrome-gn 3799 me   95u  IPv4  55072      0t0  TCP Machine:43998->104.16.248.249:https (CLOSE_WAIT)

これら 3 つのコマンドは基本的に同じ情報の異なるビューであると考えていました。なぜ一部のポートはこれらのコマンドの一部によってのみ表示されるのでしょうか?

答え1

ssまず、 との違いから始めます。ポート 53 の場合、と、ローカル マシン用に予約されている他の 1600 万個nmapのアドレスの違いが理由です。は と同じではありません。はローカル マシンのすべてのポートを報告しますが、はアドレス 127.0.0.1 に制限しています。localhost127.0.0.1127.0.0.53ssnmap

からの追加レポートについてはlsof、これはまったく異なるものを探しています。コマンドssnmapコマンドは、LISTEN状態にあるソケット、つまり着信接続を待っているソケットlsofを探しています。はすべてのソケットを探しており、特にこれには確立された接続と切断された接続が含まれます。どちらかエンドはポート80またはどちらかend はポート 443 を使用しています。

つまり、これら 3 つのコマンドは異なる情報を表示するというあなたの信念が間違っているため、異なる情報を表示するということです。これは、リンゴとオレンジとバナナの比較です。3 つの異なるコマンドは、異なる情報を表示するため、異なる情報を表示します。

関連情報