🌐

【ネットワーク】netstatコマンドとssコマンドを用いて、基本的なネットワーク情報の確認する

2024/05/15に公開

基本的なネットワーク情報の確認するためのコマンドとしてnetstatコマンドとssコマンドが挙げられる。その使用方法などについて解説する。

接続状態を確認するコマンド(netstat)

接続されているべき機器が正常に接続され、通信が行われているかどうか、どのくらいの情報が流されているのかといったことを確認することができる。

1.netstatの基本的な使い方

ターミナル
netstat
ターミナル(出力結果)
$ netstat
Active Internet connections (w/o servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
tcp        0     27 localhost:38488         localhost:40787         ESTABLISHED
tcp        0      0 localhost:38262         localhost:40787         ESTABLISHED
tcp        0      0 localhost:40787         localhost:38488         ESTABLISHED
tcp        0      0 localhost:40787         localhost:38262         ESTABLISHED
Active UNIX domain sockets (w/o servers)
Proto RefCnt Flags       Type       State         I-Node   Path
unix  2      [ ]         DGRAM                    16219    /var/run/chrony/chronyd.sock
unix  2      [ ]         DGRAM                    20785    /run/user/1000/systemd/notify
unix  3      [ ]         DGRAM      CONNECTED     18509    /run/systemd/notify
unix  2      [ ]         DGRAM                    18518    /run/systemd/journal/syslog
unix  8      [ ]         DGRAM      CONNECTED     18526    /run/systemd/journal/dev-log
項目 内容 備考
Proto 使われているプロトコル だいたいTCP
Recv-Q ソケットの受信バッファに残っている受信データのバイト数
Send-Q ソケットの送信バッファに残っている送信データのバイト数
Local Address ローカル側のアドレスとポート番号 IPアドレス:ポート番号
Foregin Address 相手側のアドレスとポート番号
State TCPの接続状態のステータス CLOSEDやESTABLISHEDなど
Stateの詳細について
項目 内容
CLOSED 未使用のTCPポート(netstatコマンドを実行してもこれは表示されない)
ESTABLISHED TCPコネクションが確立して通信している状態。
LISTEN 待ち受け状態
SYN_SENT 通信開始の要求(SYN:Synchronize)を送信したが、それに対する応答(ACK:Acknowledgement)を受け取っていない状態。ACKを受け取るとESTABLISHEDになる。
SYN_RECEIVED クライアントからSYNを受け取った状態。受け取ったSYNに対してACKを送信するとESTABLISHEDになる。
FIN_WAIT_1 自分側から先にFIN(転送終了のパケット)を送信した状態。そのFINに対するACKを受信するとFIN_WAIT_2になるが、先に相手からのFINを受け取るとCLOSINGになる。
FIN_WAIT_2 自分側から先にFIN(転送終了のパケット)を送信した状態。自分側から送信したFINに対するACKを受け取った状態。相手からのFINを受け取り、それに対してACKを返すとTIME_WAITになる。
TIME_WAIT コネクションの終了待ち状態。しばらくしてからCLOSEDになる。(netstatの表示から消える。)
CLOSE_WAIT 相手からのFINを受け取った状態。FINを送信してからLAST_ACKになる。
LAST_ACK 送信したFINに対するACK待ち状態。ACKを受け取ったらCLOSEDになる。(netstatの表示から消える。)
CLOSING FINに対するACKを受け取るとTIME_WAITになる。

2.netstatのオプション

項目 内容
-a すべての接続を表示
-n 外部アドレスをIPアドレスで表示,プロトコルではなくポート番号で表示
-e インターフェースの統計情報を表示
-r ルーティングテーブルを表示
-tuln ルーティングテーブルを表示

接続状態を確認するコマンド(ss)

接続されているべき機器が正常に接続され、通信が行われているかどうか、どのくらいの情報が流されているのかといったことを確認することができる。

1.ssの基本的な使い方

ターミナル
ss
ターミナル(出力結果)
$ ss 
Netid           State            Recv-Q            Send-Q                       Local Address:Port                        Peer Address:Port           Process           
udp             UNCONN           0                 0                            127.0.0.53%lo:53                               0.0.0.0:*                                
udp             UNCONN           0                 0                                127.0.0.1:323                              0.0.0.0:*                        

2.ssのオプション

項目 内容
-a すべての接続を表示
-s インターフェースの統計情報を表示
-tuln ルーティングテーブルを表示

参考

https://atmarkit.itmedia.co.jp/ait/articles/0207/20/news003.html
https://qiita.com/Nats72/items/4ff57a8a6ba819965c10

Discussion