正常に実行されていることがわかっているサービスのトラブルシューティングを行う場合、次のステップは、サービスが正しいネットワークポートでリッスンしていることを確認することです。
netstat
コマンドは、Linuxサーバー上のポートをリッスンしているサービスと、それらに対して現在行われている接続の詳細を表示します。基本的なネットワークデーモンのトラブルシューティング中に考慮すべき接続の詳細は、デーモンがリッスンしているアドレス(ポート番号を含む)、デーモンのプロセス識別子( PID)、およびプログラム名。
netstat
を実行する必要があります サービスを実行しているサーバー上。Netstat
ファイアウォール構成の影響を受けません。
注: lsof
を使用することもできます およびss
ポートをチェックするコマンド。この記事に含まれているコマンドフラグの多くは、lsof
を実行しても同じです。 およびss
コマンド。ただし、これらのコマンドを使用したときに返される出力は、netstat
の出力とは異なる場合があります。 道具。両方のコマンドの詳細については、lsof
を参照してください。 およびss
コマンドマニュアル。
リッスンされているTCPポート、および各リスナーのデーモンの名前とそのPIDを一覧表示するには、次のコマンドを実行します。
sudo netstat -plnt
次の例は、3つの異なるソケットでリッスンしている3つの一般的なプログラムの出力を示しています。
$ sudo netstat -plnt
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:3306 0.0.0.0:* LISTEN 3686/mysqld
tcp 0 0 :::443 :::* LISTEN 2218/httpd
tcp 0 0 :::80 :::* LISTEN 2218/httpd
tcp 0 0 :::22 :::* LISTEN 1051/sshd
リスニングデーモンのリストが長い場合は、grep
を使用できます。 たとえば、デフォルトのWebサーバーポート80
以外のすべてを除外します。 、次のコマンドを実行します:
$ sudo netstat -plnt | grep ':80'
tcp 0 0 :::80 :::* LISTEN 8448/httpd
一般的な結果には、次の結果が含まれます。
- ポートで何もリッスンしていません。サービス構成ファイルを確認してから、サービスを再起動してください。
- 正しいサービスが正しいポートでリッスンしています。この場合、サービスをより徹底的にテストする必要があります。 netcatを使用した応答のリスニングサービスのテストに関する記事にスキップしてください。
- 期待されるサービス以外のものがポートでリッスンしているようです。
注 :xinetdなどのスーパーサーバーがポートでリッスンしている可能性があります。 xinetdの構成をチェックして、この動作が許容できることを確認してください。
他の何かがポートでリッスンしている場合は、sudo service httpd stop
を実行してプログラムを無効にできます。 、またはその構成を変更して、ポートでリッスンしなくなるようにします。 netstat
の場合 ポートが空いていることを示し、正しいサービスを有効にします(たとえば、sudo service vsftpd start
。
誤ったサービスがリッスンしているために変更を加えた場合は、netstat
を実行してください もう一度コマンドします。 netstat
の場合 正しいポートでリッスンしているプログラムが表示されない場合は、先に進む前にその構成に対処する必要があります。
この時点で変更を加える場合は、必ずセットアップをテストして、問題が解決したことを確認してください。
netstat
を使用する場合 ポートの問題が解決しなかった場合は、netcatコマンドを使用してサービスへの接続を引き続きテストしてください。