Linuxのssコマンドでネットワーク接続を監視する方法【基本から実践テクニックまで】

Linuxを使っていると、ネットワークの状態をもっと詳しく知りたい場面に必ず出会います。そうしたニーズに応えられるツールは数多く存在しますが、中には扱いが複雑なものもあります。ssコマンドは多くのLinuxマシンに標準でインストールされているため、その使い方を知っておくと非常に便利です。
ssコマンドとは?
2文字だけのコマンド名は一見謎めいて見えますが、実際はとてもシンプルです。多くのLinux/Unixコマンドと同じように、コマンド名はその機能を表す略語になっています。「ss」は「Socket Statistics(ソケット統計)」の略です。
Socket Statisticsは、従来のnetstatツールの後継として開発されたもので、より使いやすく理解しやすいことを目指しています。ソケットに関する情報を表示するのが主な役割で、最もよく使われるTCPやUDPのソケットだけでなく、DCCP、RAW、Unixドメインソケットにも対応しています。
基本的な使い方
ssコマンドの最もシンプルな使い方は、引数なしでそのまま実行することです。ただし、大量のデータが出力されるため、読みやすくするためにlessにパイプで渡すのがおすすめです。
ss | less
このままでも情報は得られますが、出力が多すぎて読みづらいのが難点です。そこで、特定の種類のソケットだけを絞り込んで表示すると、格段に見やすくなります。
たとえば、TCPソケットのみを一覧表示するには次のようにします。
ss -t

逆にUDPソケットだけを表示したい場合はこちらです。
ss -u
デフォルトでは、これらのオプションは確立済みの接続を持つソケットのみを表示します。待ち受け中(listening)のものも含めてすべてのTCPソケットを一覧したい場合は、次のように実行します。
ss -t -a
ここまではかなりシンプルですね。さらに詳しく見ていきましょう。
ssコマンドでできる便利なこと
基本を押さえたところで、いよいよssコマンドを使ってネットワークを監視してみましょう。できることはたくさんありますが、まずは始めやすい例をいくつか紹介します。
TCPステートの監視
ネットワークに詳しい方ならご存じのとおり、TCP接続にはいくつかの段階(ステート)があります。これらは接続のライフサイクル全体を表しており、ssコマンドを使えば特定のステートに絞り込んで確認できます。
「established」や「closed」といった標準的なTCPステートに加えて、ssコマンドは独自のフィルターにも対応しています。たとえば「connected」ステートは、「listening」と「closed」以外のすべてのTCPステートを意味します。これを使うには、次のように実行します。
ss state connected
IPv4とIPv6のフィルタリング
ネットワークでIPv6とIPv4のアドレスが混在している場合も、ssコマンドで簡単にフィルタリングできます。-4または-6フラグを使うだけです。たとえば、すべてのIPv4接続を確認しつつTCPステートで絞り込むには、次のようにします。
ss -4 state connected

すべてのIPv6ソケットを表示したい場合は、次のコマンドを実行するだけです。
ss -6
どのプロセスがこのソケットを使っているのか調べる
あるソケットが待ち受け状態にあるのは分かっているけれど、どのプログラムによるものか不明——そんなときも簡単に突き止められます。次のコマンドを実行すると、接続済みのIPv4 TCPソケットすべてについて、プロセス名とプロセスID(PID)が表示されます。
ss -4p state connected

サマリーを表示する
ときには、マシン上のソケット状況を手短に把握したいだけということもあるでしょう。これは最も簡単なコマンドの一つで、アルファベットの「s」とハイフン1つだけで構成されています。
ss -s

これにより、マシン上の全ソケットの概要が表示され、それぞれがIPv4かIPv6かも確認できます。
ネットワークについてもっと知りたい方へ
ここで紹介したのは、ssコマンドでできることのほんの一部です。強力なツールなので、習得する価値は十分にあります。さらに深く知りたい場合は、ターミナルを開いてmanページのドキュメントを参照してみてください。man ssを実行すればすぐに始められます。
また、マシンのセキュリティ強化を目指しているなら、ssは便利な道具の一つですが、それだけが選択肢ではありません。オープンポートの確認方法を解説したガイドも併せてチェックして、知識を広げてみてください。
-
Linuxのteeコマンド使い方ガイド|画面表示とファイル保存を同時に実現
Linuxシェルでパイプやリダイレクトを使っているなら、teeコマンドの出番もきっとあるはずです。teeは「標準出力に表示しながら、同時にファイルにも書き込む」ことができる便利なユーティリティです。この記事では、teeコマンドの基本操作から、sudoとの組み合わせ、追記モード、エラー出力の扱い方まで、実例を交えながら詳しく解説します。 teeコマンドとは何をするもの? まず、次のようなコマンドを見てみましょう。 ls このコマンドは、現在のディレクトリの内容を表示します。つまり、標準出力(stdout)へ出力するわけです。標準出力とは通常、画面、正確には仮想端末のディスプレイのことです
-
Linuxのwatchコマンドの使い方と実用例をわかりやすく解説
Linuxのwatchコマンドは、指定したコマンドを一定間隔で繰り返し実行し、その結果を画面に表示し続けるためのツールです。コマンドの出力が時間とともにどう変化するかをリアルタイムで監視したい場合に非常に便利です。この記事では、watchコマンドの基本的な使い方と、覚えておくと役立つ実用的な例を紹介します。 watchコマンドの基本構文 watchコマンドの構文は以下のとおりです。 watch オプション コマンド 各要素の意味は次のとおりです。 オプション: 後述の表から選択したオプションを指定します。watchコマンドのデフォルト動作を変更できます。 コマンド: watchが繰り返し実行