Linuxでポートの使用状況を確認するコマンド|ss・lsof・netstatの使い分け


この記事の監修:宮崎智広(Linux教育歴15年以上・受講者3,100名超)
HOMELinux技術 リナックスマスター.JP(Linuxマスター.JP)Linuxtips > Linuxでポートの使用状況を確認するコマンド|ss・lsof・netstatの使い分け
「サービスが起動しているはずなのに、なぜかポートにアクセスできない」
「どのポートがどのプロセスで使われているかを一目で確認したい」

Linuxサーバーのトラブル対応で、ポートの状態確認は最初にやるべき基本操作の一つです。

この記事では、sslsofnetstat の3つのコマンドを使ってLinuxのポート使用状況を確認する方法を解説します。
各コマンドの特徴と現場での使い分け基準まで順番にまとめました。

【この記事でわかること】

・ss -tlnp でLISTEN中のポートとプロセスを確認できる(現在の推奨)
・lsof -i :ポート番号 で特定ポートを使用しているプロセスを特定できる
・netstat は古いコマンドだが既存サーバーでは今も使われている
・ss・lsof・netstat の使い分けの基準を現場目線で解説


「このままじゃマズい」と感じていませんか?
参考書を開く気力もない、同年代に取り残される不安——
でも安心してください。プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
図解60P/登録10秒/解除も3秒 / 詳細はこちら

Linuxのポート状況を確認する

Linuxのポート確認には、lsof、ss、netstat、nmap等、
得たい情報やLinuxの状況によって、
様々なコマンドを利用して確認する方法があります。
そんなLinuxのポート確認方法を解説します。

ポートとは?

そもそもポートとは何でしょうか?

ポートとは、IPアドレスを家に例えると、
ネットワークとコンピュータを行き来するための出入り口になります。
このポートを利用してパケットを送受信することでコンピュータは通信を行います。

一般的に、Webサイトへアクセスする際は、
「IPアドレス」のみで接続していると思われがちですが、
実は「IPアドレス+ポート番号」で接続を行っています。

ネットワーク上のどのコンピュータに接続するのかを「IPアドレス」で識別し、
そのコンピュータ上で動いているどのプログラムに
アクセスするのかを識別するのに必要なのが「ポート番号」になります。
ポート番号は16ビット整数であり、 0番~65535番まであります。

ポートの種類

ポートには、ウェルノウンポートという規格が存在し、
TCP(Transmission Control Protocol)やUDP(User Datagram Protocol)で
使用する有名なサービスやプロトコルには、事前にポート番号(0番~1023番)が
予約されています。

有名なポート番号としては下記があります。
TCP 20 FTP (データ)
TCP 21 FTP (制御)
TCP 22 SSH
TCP 23 Telnet
TCP 25 SMTP
UDP 53 DNS
UDP 67 DHCP(サーバ)
UDP 68 DHCP(クライアント)
TCP 80 HTTP
TCP 110 POP3
UDP 123 NTP
TCP 443 HTTPS

ただし、このウェルノウンポート番号をそのまま利用すると、
セキュリティ上好ましくない場合は、敢えて任意の番号に変更して利用します。
例えば、ポート番号22のSSHなどはデフォルトポートではなく
他の番号に変更して運用することが多いです。

Linuxで接続待ちをしているポートを確認する(ssコマンド)

Linuxで接続待ちをしているポートを確認するには、
ssコマンド、またはnetstatコマンドを利用します。
CentOS7からnetstatコマンドに変わってssコマンドを利用することが推奨されています。
本章ではssコマンドを使用した確認方法を紹介します。
※netstatコマンドの確認方法は、本ページの次章を参照してください。

■ssコマンドのオプション
-a 全てのソケットを表示
-n サービス名に変換せずに表示
-t TCP情報のみ表示
-u UDP情報のみ表示

■ssコマンドで接続待ちをしているポートを確認する
・TCPポートのみを表示する
ssコマンドにオプション「-atn」を付けて実行します。

# ss -atn
State Recv-Q Send-Q Local Address:Port Peer Address:Port
LISTEN 0 100 *:993 *:*
LISTEN 0 100 *:995 *:*
LISTEN 0 128 127.0.0.1:10024 *:*
LISTEN 0 128 127.0.0.1:9000 *:*
LISTEN 0 100 127.0.0.1:10025 *:*
LISTEN 0 100 *:587 *:*
LISTEN 0 100 *:110 *:*
LISTEN 0 128 127.0.0.1:783 *:*
LISTEN 0 100 *:143 *:*
LISTEN 0 128 *:80 *:*
LISTEN 0 128 *:21 *:*
LISTEN 0 128 127.0.0.1:5432 *:*
LISTEN 0 100 *:25 *:*
LISTEN 0 128 *:443 *:*



・UDPポートのみを表示する
ssコマンドにオプション「-anu」を付けて実行します。

# ss -anu
State Recv-Q Send-Q Local Address:Port Peer Address:Port
UNCONN 0 0 127.0.0.1:323 *:*
UNCONN 0 0 ::1:323 :::*
ESTAB 0 0 ::1:48654 ::1:48654


・TCP、UDPポート両方表示する
ssコマンドにオプション「-atnu」を付けて実行します。

# ss -atnu
Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port
udp UNCONN 0 0 127.0.0.1:323 *:*
udp UNCONN 0 0 ::1:323 :::*
udp ESTAB 0 0 ::1:48654 ::1:48654
tcp LISTEN 0 100 *:993 *:*
tcp LISTEN 0 100 *:995 *:*
tcp LISTEN 0 128 127.0.0.1:10024 *:*
tcp LISTEN 0 128 127.0.0.1:9000 *:*
tcp LISTEN 0 100 127.0.0.1:10025 *:*
tcp LISTEN 0 100 *:587 *:*
tcp LISTEN 0 100 *:110 *:*
tcp LISTEN 0 128 127.0.0.1:783 *:*
tcp LISTEN 0 100 *:143 *:*
tcp LISTEN 0 128 *:80 *:*
tcp LISTEN 0 128 *:21 *:*
tcp LISTEN 0 128 127.0.0.1:5432 *:*
tcp LISTEN 0 100 *:25 *:*
tcp LISTEN 0 128 *:443 *:*


・通信が確立しているポートを表示する
ssコマンドにオプション「-t」を付けて実行します。

# ss -t
State Recv-Q Send-Q Local Address:Port Peer Address:Port
FIN-WAIT-2 0 0 150.95.XXX.XXX:https 174.97.215.128:11774
ESTAB 0 0 150.95.XXX.XXX:https 66.249.79.64:45943
ESTAB 0 0 150.95.XXX.XXX:http 66.249.79.69:61550
ESTAB 0 96 150.95.XXX.XXX:EtherNet/IP-1 221.XXX.XXX.XXX:vrtl-vmf-ds
ESTAB 0 0 150.95.XXX.XXX:https 66.249.79.69:60933
ESTAB 0 0 150.95.XXX.XXX:EtherNet/IP-1 221.XXX.XXX.XXX:gilatskysurfer
ESTAB 0 0 150.95.XXX.XXX:https 66.249.79.67:51637
ESTAB 0 0 150.95.XXX.XXX:EtherNet/IP-1 221.XXX.XXX.XXX:61865

※150.95.XXX.XXX、221.XXX.XXX.XXXにはLinuxのIPアドレスが表示されます。

プロセス名も一緒に確認する(-pオプション)

ssコマンドに「-p」オプションを追加すると、
そのポートを使用しているプロセス名まで一緒に確認することができます。
root権限で実行してください。

# ss -atnp | grep LISTEN
LISTEN 0 128 *:80 *:* users:(("httpd",pid=1234,fd=4))
LISTEN 0 128 *:22 *:* users:(("sshd",pid=5678,fd=3))


右端の「users」欄にプロセス名とPIDが表示されます。
例えば80番ポートはhttpdが使用中、といったことが一目で分かります。

また、確認したいポートが決まっている場合は、
grepで絞り込むと便利です。

# ss -atn | grep ':80 '
LISTEN 0 128 *:80 *:*


■ssコマンド実行結果の各項目説明
Netid Socketのタイプ
u_str:UNIX Domainソケット
tcp :TCPソケット
udp :UDPソケット
State 通信の状態
Recv-Q 受信キューの数
Send-Q 送信キューの数
Local Address:Port サーバー側のIP又はソケットファイル、ポートを表示
Peer Address:Port 通信している側のIP又はソケットファイル、ポートを表示

Linuxで接続待ちをしているポートを確認する(netstatコマンド)

前の章でも触れましたが、
CentOS7からは、Linuxで接続待ちをしているポートを確認するには、
netstatコマンドよりもssコマンドを利用することが推奨されています。

しかし、
ssコマンドの一部のバージョンでは、TCPとUDPを同時に表示させた場合、
UDPポートがTCPポートとして表示されてしまう既知のバグが存在します。


そのような環境ではssコマンドは利用せず、
netstatコマンドを利用することが推奨されます。

■netstatコマンドのオプション
-a 全てのソケットを表示
-n サービス名に変換せずに表示
-t TCP情報のみ表示
-u UDP情報のみ表示

■netstatコマンドで接続待ちをしているポートを確認する
・TCPポートのみを表示する
netstatコマンドにオプション「-atn」を付けて実行します。

# netstat -atn
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN


・UDPポートのみを表示する
netstatコマンドにオプション「-anu」を付けて実行します。

# netstat -anu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
udp6 0 0 ::1:48654 ::1:48654 ESTABLISHED


・TCP、UDPポート両方表示する
netstatコマンドにオプション「-atnu」を付けて実行します。

# netstat -atnu
Active Internet connections (servers and established)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 0.0.0.0:993 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:995 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10024 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:10025 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:587 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:110 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:783 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:143 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:25 0.0.0.0:* LISTEN
tcp 0 0 0.0.0.0:443 0.0.0.0:* LISTEN
tcp 0 0 127.0.0.1:9000 127.0.0.1:48142 TIME_WAIT
~中略~
udp 0 0 127.0.0.1:323 0.0.0.0:*
udp6 0 0 ::1:323 :::*
udp6 0 0 ::1:48654 ::1:48654 ESTABLISHED


・通信が確立しているポートを表示する
netstatコマンドにオプション「-t」を付けて実行します。

# netstat -t
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address Foreign Address State
tcp 0 0 localhost:cslistener localhost:48232 TIME_WAIT
tcp 0 0 localhost:cslistener localhost:48222 TIME_WAIT
tcp 0 96 v150-95-1:EtherNet/IP-1 221x254x141:vrtl-vmf-ds ESTABLISHED
tcp 0 0 v150-95-XXX-XXX.a:https cpe-174-97-215-12:12582 ESTABLISHED
tcp 0 0 localhost:cslistener localhost:48226 TIME_WAIT
tcp 0 0 localhost:cslistener localhost:48224 TIME_WAIT
tcp 0 0 v150-95-XXX-XXX.a0:http crawl-66-249-79-8:41706 ESTABLISHED
tcp 0 0 v150-95-XXX-XXX.a:https crawl-66-249-79-6:60933 TIME_WAIT
tcp 0 0 v150-95-XXX-XXX.a:https crawl-66-249-79-6:63493 ESTABLISHED
tcp 0 0 v150-95-1:EtherNet/IP-1 221x254x:gilatskysurfer ESTABLISHED
tcp 0 0 v150-95-XXX-XXX.a:https crawl-66-249-79-7:50643 TIME_WAIT
tcp 0 0 v150-95-XXX-XXX.a:https crawl-66-249-79-6:56649 ESTABLISHED
tcp 0 0 localhost:48234 localhost:cslistener ESTABLISHED
tcp 0 0 v150-95-1:EtherNet/IP-1 221x254xXXXxXX.ap:61865 ESTABLISHED
tcp 0 0 localhost:cslistener localhost:48230 TIME_WAIT

※150-95-XXX-XXX.にはLinuxのIPアドレスが表示されます。

■netstatコマンド実行結果の各項目説明
Proto Socketのタイプ
u_str:UNIX Domainソケット
tcp :TCPソケット
udp :UDPソケット
Recv-Q 受信キューの数
Send-Q 送信キューの数
Local Address サーバー側のIP又はソケットファイル、ポートを表示
Foreign Address 通信している側のIP又はソケットファイル、ポートを表示
State 通信の状態

Linuxでプロセスが使用しているポートを確認する(lsofコマンド)

Linuxでプロセスが使用しているポートを確認するには「lsofコマンド」を利用します。
Linuxでプロセスが利用しているポートを確認することは、
不要プログラムが実行されてないか、不正なバックドアが仕掛けられてないか等を調べ、
Linuxのセキュリティ状況を確認する上で非常に重要です。

lsofコマンドは、Linuxが使用してるプロセス名や実行ユーザー名を
表示することができるコマンドになります。
ポートの利用情報のみを確認したい場合は、オプション「-i」を付けて実行します。

また、lsofコマンドで表示できるのは、コマンドを実行するユーザーに対して、
読み取り権限が設定されるファイルに限ります。
つまり、ポートなどの利用情報すべてを確認するためには、
rootユーザーでlsofコマンドを実行しなければなりません。

■プロセスが使用しているポートを確認する
プロセスが使用しているポートを一覧表示するには、
lsofコマンドにオプション「-i」を付けて実行します。

# lsof -i
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
proftpd 683 nobody 0u IPv4 15203 0t0 TCP *:ftp (LISTEN)
chronyd 685 chrony 1u IPv4 15207 0t0 UDP localhost:323
chronyd 685 chrony 2u IPv6 15208 0t0 UDP localhost:323
php-fpm 925 root 6u IPv4 19066 0t0 TCP localhost:cslistener (LISTEN)
sshd 934 root 3u IPv4 19972 0t0 TCP *:EtherNet/IP-1 (LISTEN)
postgres 949 postgres 3u IPv6 19990 0t0 TCP localhost:postgres (LISTEN)
postgres 949 postgres 4u IPv4 19991 0t0 TCP localhost:postgres (LISTEN)
postgres 949 postgres 8u IPv6 20026 0t0 UDP localhost:48654->localhost:48654


■lsofコマンド実行結果の各項目説明
COMMAND 実行プログラム
PID プロセス番号
USER 実行ユーザー
NODE プロトコル
NAME ポート
(LISTEN) 待ち受け状態

■特定のポート番号から使用しているプロセスを表示する
特定のポート番号を使用しているプロセスを確認するには、
lsofコマンドにオプション「-i」を付け、
「:」(コロン)で区切って特定のポート番号を指定して実行します。
下記の例では、ポート80番がNginxに利用されていることが分かります。

# lsof -i:80
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
nginx 26810 root 12u IPv4 206674 0t0 TCP *:http (LISTEN)
nginx 26811 nginx 12u IPv4 206674 0t0 TCP *:http (LISTEN)


下記例では、ポート3306番がMySQLに利用されていることが分かります。

# lsof -i:3306
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
mysqld 1473 mysql 17u IPv6 22561 0t0 TCP *:mysql (LISTEN)

※これらの結果はサーバー環境によって異なります。
※上記と同じ結果を得るにはNginx、MySQLが
Linuxにインストールされている必要があります。

ファイアウォールの設定を確認する(firewall-cmd)

ssコマンドでポートが開いていることを確認したのに、
外部から接続できないという場合は、
ファイアウォールでブロックされている可能性があります。
これは現場で非常に多いケースです。

RHEL系(CentOS、AlmaLinux等)のLinuxでは、
firewall-cmdコマンドでファイアウォールの許可状況を確認できます。

■現在許可されているポートを確認する

# firewall-cmd --list-ports
8080/tcp 443/tcp


■現在許可されているサービスを確認する

# firewall-cmd --list-services
ssh dhcpv6-client http https


ssコマンドでポートが開いているのに外部から接続できない場合は、
まずこのコマンドでファイアウォールの許可状況を確認しましょう。

Linuxの外部からどのポートが開いているか確認する(nmapコマンド)

これまでは、Linuxシステム内でポートを確認する方法を紹介してきましたが、
本章ではLinuxにログインせず、
外部からどのポートが開いているか確認する方法を紹介します。

<<重要>>
本章で紹介する手順は、自分が管理している機器に対してのみ行ってください。
他人や他組織が管理している機器に行った場合、ハッキング行為と見なされます。
取り扱いには充分に注意してください。

外部からどのポートが空いているかを確認するには、
Linux環境ではnmapコマンドを使用したポートスキャンを実施します。

■nmapコマンド:外部からポートがどのポートが開いているか確認する

# nmap 150.XXX.XXX.XXX
Starting Nmap 6.40 ( http://nmap.org ) at 2018-05-23 03:57 JST
Nmap scan report for v150-XXX-XXX-XXX.a088.g.XXX.XXXX.XXX.io (150.XXX.XXX.XXX)
Host is up (0.00068s latency).
Not shown: 992 filtered ports
PORT STATE SERVICE
20/tcp closed ftp-data
21/tcp open ftp
25/tcp open smtp
53/tcp closed domain
80/tcp open http
110/tcp open pop3
443/tcp open https

※例では、IPアドレスを指定していますが、伏せ字にしています。
nmapを実行すると、ポートスキャンした対象のサーバーの
どのポートが開いているか一覧表示されます。

■nmapコマンド:ポートのスキャン範囲を指定して開いているポートを確認する
下記例では、ポート1~99までを指定してポートスキャンを行っています。
# nmap -p 1-99 150.XXX.XXX.XXX

Starting Nmap 6.40 ( http://nmap.org ) at 2019-11-26 15:23 JST
Nmap scan report for 192.168.0.10
Host is up (0.0000030s latency).
Not shown: 97 closed ports
PORT   STATE SERVICE
21/tcp open  ftp
80/tcp open  http

■外部からポートスキャンが行えない場合の確認ポイント
Linuxが起動していて、ネットワークにも接続出来ている状態で、
外部からポートスキャンが行えない場合は、以下の点について確認してみてください。

・ポートスキャン対象の機器でファイアウォールが有効になっていませんか?
(iptables、firewalld等)

・ルーターのポートは開いていますか?
・ファイアウォール機器のポートは開いていますか?
・ポートスキャン対策ソフトが導入されていませんか?
本ページの解説を動画でご覧頂けます。
好評なら今後も動画アップしますのでよろしくおねがいします。

Linux内のサービスのポート番号をファイルで確認する(/etc/services)

Linuxで稼働するサービスは、
デフォルトでサービス固有のポート番号が使用されます。
例えば、httpならTCPポートの80番、httpsなら443番などです。

これらのポート番号を把握するには、
サービス独自の設定ファイルを確認しなければなりませんが、
一般的に想定されているポート番号は、/etc/servicesファイルに記載されています。

/etc/servicesファイルには、
各行ごとにサービス名とポート番号/プロトコル名が記載されています。
# view /etc/services
 /etc/services:
# $Id: services,v 1.55 2013/04/14 ovasik Exp $
#
# Network services, Internet style
# IANA services version: last updated 2013-04-10
#
# Note that it is presently the policy of IANA to assign a single well-known
# port number for both TCP and UDP; hence, most entries here have two entries
# even if the protocol doesn't support UDP operations.
# Updated from RFC 1700, ``Assigned Numbers'' (October 1994).  Not all ports
# are included, only the more common ones.
#
# The latest IANA port assignments can be gotten from
#       http://www.iana.org/assignments/port-numbers
# The Well Known Ports are those from 0 through 1023.
# The Registered Ports are those from 1024 through 49151
# The Dynamic and/or Private Ports are those from 49152 through 65535
#
# Each line describes one service, and is of the form:
#
# service-name  port/protocol  [aliases ...]   [# comment]

tcpmux          1/tcp                           # TCP port service multiplexer
tcpmux          1/udp                           # TCP port service multiplexer
rje             5/tcp                           # Remote Job Entry
rje             5/udp                           # Remote Job Entry
echo            7/tcp
echo            7/udp
discard         9/tcp           sink null
discard         9/udp           sink null
systat          11/tcp          users
systat          11/udp          users
daytime         13/tcp
daytime         13/udp
qotd            17/tcp          quote
qotd            17/udp          quote
msp             18/tcp                          # message send protocol (historic)
msp             18/udp                          # message send protocol (historic)
chargen         19/tcp          ttytst source
chargen         19/udp          ttytst source
ftp-data        20/tcp
ftp-data        20/udp
# 21 is registered to ftp, but also used by fsp
ftp             21/tcp

~中略~

netrjs-3        73/udp                          # Remote Job Service
netrjs-4        74/tcp                          # Remote Job Service
netrjs-4        74/udp                          # Remote Job Service
finger          79/tcp
finger          79/udp
http            80/tcp          www www-http    # WorldWideWeb HTTP
http            80/udp          www www-http    # HyperText Transfer Protocol
http            80/sctp                         # HyperText Transfer Protocol
kerberos        88/tcp          kerberos5 krb5  # Kerberos v5
kerberos        88/udp          kerberos5 krb5  # Kerberos v5
supdup          95/tcp
supdup          95/udp
hostname        101/tcp         hostnames       # usually from sri-nic
hostname        101/udp         hostnames       # usually from sri-nic
iso-tsap        102/tcp         tsap            # part of ISODE.
csnet-ns        105/tcp         cso             # also used by CSO name server

以下省略


※但し、各種サービスの設定ファイルでポート番号を任意に変更できるため、
 ここに記載されているポートで実際にサービスが動いているとは限りません。

netstatコマンドでネットワーク状態を確認する(非推奨・後継はss)

かつてはnetstatが広く使われていましたが、現在の多くのLinuxディストリビューションではnetstatは非推奨です。後継コマンドはssです。レガシー環境でnetstatが必要な場合のために使い方を記載します。

# netstatのインストール(net-toolsパッケージ) sudo dnf install net-tools # RHEL9/Rocky9 sudo yum install net-tools # CentOS7 # 全接続を表示(TCPとUDP) netstat -a # LISTENしているポートを表示 netstat -l # 数値でポート番号を表示 netstat -an # TCPの接続状態を表示 netstat -ant # プロセス名も表示(root権限推奨) sudo netstat -antp

netstatの主なオプション

-a:すべてのソケットを表示(LISTEN含む)
-n:ホスト名・サービス名を数値で表示(解決しない)
-t:TCPソケットのみ表示
-u:UDPソケットのみ表示
-l:LISTENしているソケットのみ表示
-p:プロセスIDとプログラム名を表示

netstatとssの対応表

やりたいこと netstat(旧) ss(新・推奨)
全ポートを表示 netstat -an ss -an
LISTENポートを表示 netstat -anl ss -anl
TCPのみ表示 netstat -ant ss -ant
プロセス名も表示 sudo netstat -antp sudo ss -antp

本記事のまとめ

本記事で紹介したポート確認コマンドの早見表です。

やりたいこと コマンド
TCPの接続待ちポートを確認 ss -atn | grep LISTEN
プロセス名も一緒に確認 ss -atnp | grep LISTEN
特定ポートだけ絞り込む ss -atn | grep ':80 '
TCP+UDPの両方を確認 ss -atnu
旧環境でポートを確認 netstat -atnu
ポートを使用しているプロセスを特定 lsof -i:ポート番号
ファイアウォールの許可状況を確認 firewall-cmd --list-ports
外部からポートの開放状況を確認 nmap IPアドレス
サービスのデフォルトポート番号を確認 view /etc/services

あわせて読みたい関連記事

firewalldコマンドの設定方法 — ポート確認の次にファイアウォール設定
systemctlコマンドの使い方 — ポートを使っているサービスの制御

ポート確認コマンドの使い分けを覚えて、ネットワーク障害の調査時間を短縮する

ss・lsof・netstatを状況に応じて使い分けられると、サービスが起動しない原因を素早く特定できます。
ネットの切れ端の情報をコピペするだけでなく、現場で通用する安全なLinuxサーバー構築の「型」を体系的に身につけたい方へ、『Linuxサーバー構築入門マニュアル(図解60P)』を完全無料でプレゼントしています。

「独学の時間がもったいない」「プロから直接、現場の技術を最短で学びたい」という本気の方には、2日で実務レベルのスキルが身につく【初心者向けハンズオンセミナー】も開催しています。


暗記不要・1時間後にはサーバーが動く

3,100名以上が実践した「型」を無料で公開中

プロのエンジニアはコマンドを暗記していません。
「現場で使える型」を効率よく使いこなしているだけです。
その「型」を図解60Pにまとめた入門マニュアルを、完全無料でプレゼントしています。

登録10秒/合わなければ解除3秒 / 詳細はこちら

Linux無料マニュアル(図解60P) 名前とメールで30秒登録

宮崎 智広

この記事を書いた人

宮崎 智広(みやざき ともひろ)

株式会社イーネットマーキュリー代表。現役のLinuxサーバー管理者として15年以上の実務経験を持ち、これまでに累計3,100名以上のエンジニアを指導してきたLinux教育のプロフェッショナル。「現場で本当に使える技術」を体系的に伝えることをモットーに、実践型のLinuxセミナーの開催や無料マニュアルの配布を通じてLinux人材の育成に取り組んでいる。

趣味は、キャンプにカメラ、トラウト釣り。好きな食べ物は、ラーメンにお酒。休肝日が作れない、酒量を減らせないのが悩み。最近、ドラマ「フライトエンジェル」を観て涙腺が崩壊しました。