はじめに
Linuxでポートの状態を確認する方法について、以下に解説します。
ポート確認の目的
- 特定のポートが使用中かどうかを確認
- ポートを使用しているプロセスを特定
- サーバが特定のポートで接続を受け付けているか確認
主なコマンド一覧
lsofコマンド
特定ポートを使用しているプロセスを確認できます。
# ポート番号を指定して確認
$ sudo lsof -i:<ポート番号>
# 例: 80番ポートの確認
$ sudo lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 1234 root 6u IPv4 12345 0t0 TCP *:http (LISTEN)
プロセスを確認して、プロセスを停止(kill)する。
$ sudo kill <プロセスID>
# 例: PID 1234 の確認
$ sudo kill 1234
ssコマンド
netstat
の代替として推奨されるコマンドで、高速かつ詳細な情報を提供します。
# LISTEN状態のTCP/UDPポートを表示
$ sudo ss -lntu
# 特定ポートのみを絞り込み
$ sudo ss -tulpn | grep :<ポート番号>
# 例: 80番ポートの確認
$ sudo ss -tulpn | grep :80
tcp LISTEN 0 511 0.0.0.0:80 0.0.0.0:* users:(("nginx",pid=1234,fd=6))
ncコマンド
クライアント側から疎通確認が可能。
# サーバと特定ポートへの疎通確認
$ nc -vz <接続先サーバ> <ポート番号>
# 疎通可能な場合の例:
Ncat: Connected to <接続先>:22.
# 疎通不可の場合の例:
Ncat: Connection refused.
nmapコマンド
外部から接続可能なポートをスキャンできます。
# ローカルホストの開いているポート一覧を取得
$ nmap localhost
Starting Nmap ...
PORT STATE SERVICE
22/tcp open ssh
443/tcp open https