ネットワーク情報の確認
ネットワーク情報の確認 とは
ネットワーク情報を確認するコマンドをターミナルで実行し、IPアドレスなどを調べます。本レッスンでは、ネットワーク情報の確認 の基本から実際の使いどころまでを整理し、現場で迷わず使える形に落とし込みます。
なぜネットワーク情報を見るか
サーバーやコンテナで作業していると、しばしばこんな問いが必要になります。
- 自分のホストの IP アドレスは何か
- どのポートでサービスが listen しているか
- そのポートを掴んでいるプロセスは何か
- ルーティング設定はどうなっているか
これらを把握するための定番が ip と ss です。古い ifconfig や netstat を置き換える存在で、現代の Linux ではこちらを使うのが標準になっています。
ip コマンドの構造
ターミナル
ip [オプション] サブコマンド [引数]サブコマンドが豊富で、見たい対象によって切り替えます。よく使うものは次の通りです。
| サブコマンド | 見る対象 | 例 |
|---|---|---|
ip a | インターフェイスと IP | ip a |
ip r | ルーティングテーブル | ip r |
ip n | ARP テーブル | ip n |
ip link | NIC リンク状態 | ip link |
ip a は ip addr show の省略形で、最も頻繁に使います。
図解 インターフェイスの種類
物理 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.1eth0は最初の Ethernet NIC。クラウド VM ならens3やenp0s3という名前のことも多いinetで始まる行が IPv4 アドレス、inet6で始まる行が IPv6 アドレスUPのフラグが付いていなければ NIC は無効化されている
ss でポートを見る
ss は socket 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))オプションの意味は次の通りです。
-tTCP-llisten 中のソケットだけ-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.5default via の行が「分からない宛先はとりあえずこのルーターに渡す」というデフォルトゲートウェイ。これが無いと外部に出られません。
旧コマンドとの対応
| 旧 | 新 | 用途 |
|---|---|---|
ifconfig -a | ip a | NIC と IP の一覧 |
route -n | ip r | ルーティングテーブル |
arp -a | ip n | ARP テーブル |
netstat -tlnp | ss -tlnp | listen ポート |
netstat -anp | ss -anp | 全ソケット |
古い Stack Overflow の回答にはまだ ifconfig や netstat の例が大量にあります。読むのは構いませんが、自分が書く側に回るときは新コマンドを使いましょう。
Docker / Kubernetes 環境では
ip aで見えるインターフェイスがコンテナ内の仮想 NIC だけで、ホスト本体の物理 NIC は見えません。必要に応じてdocker inspectやkubectl describe podでホスト側からの情報を併用してください。
まとめ
ip aでインターフェイスと IP を確認するip rでルーティング、ip nで ARPss -tlnpで listen ポートと掴んでいるプロセスを特定/etc/hostsと/etc/resolv.confは名前解決の基本ファイル- 旧
ifconfig/netstatは非推奨。ipとssを使う
次のレッスン
次は リモート接続 SSH で、ネットワーク情報を確認するコマンドをターミナルで実行し、IPアドレスなどを調べます を学びます。
事前確認 — 進む前に次の 3 つができることを確認しましょう。
- ip と ss の要点を自分の言葉で説明できる
- このレッスンの最小コード (または操作手順) を見ずに書ける
- 練習問題やクイズで間違えた箇所を読み直して理解した
理解度チェック (30 秒)
Q. ip と ss とは何か、1 文で説明してください。
A. 本文の「このレッスンで分かること」または冒頭の説明文を見直し、自分の言葉で要約できれば OK。詰まったら本レッスンの最初の H2 セクションを読み返してみましょう。
関連レッスン
課題
- ip -o addr show lo を使う
- 出力に lo が含まれるか確認する
- 出力に inet が含まれるか確認する