Linuxでどのポートが待機しているかを調べる4つの方法


ポートの状態は、開いているフィルタ処理した閉じている、またはフィルタ処理されていないのいずれかです。ターゲットマシン上のアプリケーションがそのポートの接続/パケットをリスンしている場合、そのポートは開いていると言われます。

この記事では、オープンポートをチェックする4つの方法を説明します。また、Linuxでどのアプリケーションがどのポートをリッスンしているかを調べる方法も示します。

1. Netstatコマンドを使用する

Netstatは、Linuxネットワークサブシステムに関する情報を照会するために広く使用されているツールです。これを使って、開いているすべてのポートを次のように印刷できます。

$ sudo netstat -ltup 

フラグ -l はすべての待ち受けソケットを印刷するようにnetstatに指示し、 -t はすべてのTCP接続を示し、 -u はすべてのUDP接続を表示し、 -p はポート上で待機しているアプリケーション/プログラム名の印刷を可能にします。

サービス名ではなく数値を印刷するには、 -n フラグを追加してください。

$ sudo netstat -lntup

たとえば、grepコマンドを使用して、特定のポートでどのアプリケーションがリスンしているかを調べることもできます。

$ sudo netstat -lntup | grep "nginx"

または、ポートを指定して、図に示すように、バインドされているアプリケーションを見つけることもできます。

$ sudo netstat -lntup | grep ":80"

2. ssコマンドを使用する

ss は、ソケットに関する情報を表示するためのもう1つの便利なツールです。出力は netstat の出力と似ています。次のコマンドは、 TCP UDP 接続のすべてのリスニングポートを数値で表示します。

$ sudo ss -lntu

3. Nmapコマンドを使う

Nmapは、強力で人気の高いネットワーク探索ツールおよびポートスキャナです。システムにnmapをインストールするには、図に示すようにデフォルトのパッケージマネージャを使用してください。

$ sudo apt install nmap  [On Debian/Ubuntu]
$ sudo yum install nmap  [On CentOS/RHEL]
$ sudo dnf install nmap  [On Fedora 22+]

Linuxシステム内のすべてのオープン/リスニングポートをスキャンするには、次のコマンドを実行します(完了までに長い時間がかかります)。

$ sudo nmap -n -PN -sT -sU -p- localhost

4. lsofコマンドを使用する

オープンポートを問い合わせるための最後のツールはlsofコマンドです。これはLinuxでオープンファイルを一覧表示するために使用されます。すべてUnix/Linuxではファイルなので、開いているファイルはストリームまたはネットワークファイルです。

すべてのインターネットファイルとネットワークファイルを一覧表示するには、 -i オプションを使用します。このコマンドでは、サービス名と数値ポートが混在して表示されます。

$ sudo lsof -i

どのアプリケーションが特定のポートでリッスンしているかを調べるには、このフォームで lsof を実行します。

$ sudo lsof -i :80

それで全部です!この記事では、Linuxでオープンポートをチェックする4つの方法について説明しました。また、どのプロセスが特定のポートにバインドされているかを確認する方法も示しました。あなたはあなたの考えを共有するか、または以下のフィードバックフォームを通して質問をすることができます。