ネットワーク情報の確認

ネットワーク情報の確認 とは

ネットワーク情報を確認するコマンドをターミナルで実行し、IPアドレスなどを調べます。本レッスンでは、ネットワーク情報の確認 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。

なぜネットワーク情報を見るか

サーバーやコンテナで作業していると、しばしばこんな問いが必要になります。

  • 自分のホストの IP アドレスは何か
  • どのポートでサービスが listen しているか
  • そのポートを掴んでいるプロセスは何か
  • ルーティング設定はどうなっているか

これらを把握するための定番が ipss です。古い ifconfignetstat を置き換える存在で、現代の Linux ではこちらを使うのが標準になっています。

ip コマンドの構造

ターミナル

ip [オプション] サブコマンド [引数]

サブコマンドが豊富で、見たい対象によって切り替えます。よく使うものは次の通りです。

サブコマンド見る対象
ip aインターフェイスと IPip a
ip rルーティングテーブルip r
ip nARP テーブルip n
ip linkNIC リンク状態ip link

ip aip addr show の省略形で、最も頻繁に使います。

図解 インターフェイスの種類

diagram (will load when visible)

物理 NIC、Wi-Fi、loopback、Docker の仮想ブリッジなど、Linux 上には複数のインターフェイスが共存します。ip a を打つとこれらが一覧表示されます。

ip a の読み方

ターミナル

ip a # 1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 ... # inet 127.0.0.1/8 scope host lo # 2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 ... # inet 10.0.0.5/24 scope global eth0

ポイントは次のとおりです。

  • lo (loopback) は自分自身を指す特殊な NIC で、IP は 127.0.0.1
  • eth0 は最初の Ethernet NIC。クラウド VM なら ens3enp0s3 という名前のことも多い
  • inet で始まる行が IPv4 アドレス、inet6 で始まる行が IPv6 アドレス
  • UP のフラグが付いていなければ NIC は無効化されている

ss でポートを見る

sssocket statistics の略で、サーバープロセスがどのポートを掴んでいるかを確認します。

ターミナル

ss -tlnp # Netid State Recv-Q Send-Q Local Address:Port Peer Address:Port Process # tcp LISTEN 0 511 0.0.0.0:8080 0.0.0.0:* users:(("node",pid=1234,fd=20)) # tcp LISTEN 0 128 0.0.0.0:22 0.0.0.0:* users:(("sshd",pid=789,fd=3))

オプションの意味は次の通りです。

  • -t TCP
  • -l listen 中のソケットだけ
  • -n 名前解決せず数値で表示 (高速化)
  • -p プロセス情報を付ける (root 権限が要ることも)

-u で UDP、-a で全ソケット、-s でサマリ統計が見られます。

「8080 番ポートで何かが起動してしまっていてアプリが立ち上がらない」という典型的なトラブルは、ss -tlnp | grep 8080 で犯人を一発で特定できます。

/etc/hosts と /etc/resolv.conf

名前解決の設定ファイルも見ておきましょう。/etc/hosts はホスト名と IP の手動マッピング、/etc/resolv.conf は DNS サーバーの一覧です。

ターミナル

cat /etc/hosts # 127.0.0.1 localhost # ::1 localhost ip6-localhost cat /etc/resolv.conf # nameserver 8.8.8.8 # nameserver 1.1.1.1

ローカル開発で myapp.local のような独自ドメインを使いたいときは /etc/hosts に追記します。

ルーティングテーブル

ターミナル

ip r # default via 10.0.0.1 dev eth0 # 10.0.0.0/24 dev eth0 proto kernel scope link src 10.0.0.5

default via の行が「分からない宛先はとりあえずこのルーターに渡す」というデフォルトゲートウェイ。これが無いと外部に出られません。

旧コマンドとの対応

用途
ifconfig -aip aNIC と IP の一覧
route -nip rルーティングテーブル
arp -aip nARP テーブル
netstat -tlnpss -tlnplisten ポート
netstat -anpss -anp全ソケット

古い Stack Overflow の回答にはまだ ifconfignetstat の例が大量にあります。読むのは構いませんが、自分が書く側に回るときは新コマンドを使いましょう。

Docker / Kubernetes 環境では ip a で見えるインターフェイスがコンテナ内の仮想 NIC だけで、ホスト本体の物理 NIC は見えません。必要に応じて docker inspectkubectl describe pod でホスト側からの情報を併用してください。

まとめ

  • ip a でインターフェイスと IP を確認する
  • ip r でルーティング、ip n で ARP
  • ss -tlnp で listen ポートと掴んでいるプロセスを特定
  • /etc/hosts/etc/resolv.conf は名前解決の基本ファイル
  • ifconfig / netstat は非推奨。ipss を使う

次のレッスン

次は リモート接続 SSH で、ネットワーク情報を確認するコマンドをターミナルで実行し、IPアドレスなどを調べます を学びます。

事前確認 — 進む前に次の 3 つができることを確認しましょう。

  1. ip と ss の要点を自分の言葉で説明できる
  2. このレッスンの最小コード (または操作手順) を見ずに書ける
  3. 練習問題やクイズで間違えた箇所を読み直して理解した

理解度チェック (30 秒)

Q. ip と ss とは何か、1 文で説明してください。

この章のポイント

A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。

関連レッスン

課題

  1. ip -o addr show lo を使う
  2. 出力に lo が含まれるか確認する
  3. 出力に inet が含まれるか確認する

ヒント

script.sh
script.sh
学習モード
script.sh
ターミナル出力