ネットワークインターフェースの確認
Linuxでは有線・無線・仮想などの接続口を「インターフェース」として扱い、それぞれに名前(例: eth0、ens33、lo)が付きます。各インターフェースにはIPアドレスとMACアドレスが結び付いています。ip addr で割り当て状況や状態(UP/DOWN)を確認でき、トラブル調査の第一歩になります。lo は自分自身を指すループバックです。
Linuxでは、ネットワークへの接続口を「ネットワークインターフェース」という単位で扱います。有線LANのポート、無線LANのアダプタ、仮想マシンの仮想NIC、ソフトウェア的に作られる接続口など、種類はさまざまですが、いずれもインターフェースとして同じように管理されます。各インターフェースには名前が付いており、有線では eth0 や ens33、enp0s3 のような名前、無線では wlan0 のような名前が割り当てられます。名前の付き方は環境(OSの版やハードウェア構成)によって違うため、「どの環境でも eth0」と思い込まず、まず自分の機器で実際の名前を確認する習慣が大切です。インターフェースを正しく見られることは、ネットワーク設定やトラブル調査のいちばん最初の一歩になります。
IPアドレスとMACアドレス
各インターフェースには、通常2種類のアドレスが結び付いています。ひとつは前のトピックで扱ったIPアドレスで、これはネットワーク設定によって割り当てられ、変更もできる論理的な番地です。もうひとつがMACアドレスで、こちらはネットワーク機器(NIC)に製造時から書き込まれている物理的な識別番号です。MACアドレスは48ビットで、00:1a:2b:3c:4d:5e のように2桁の16進数を6つコロンでつないだ形で表されます。原則として世界中で重複しないように管理されており、同一ネットワーク内で「どの機器宛てか」を指定する際の宛先として使われます。IPアドレスが「変えられる住所」、MACアドレスが「機器固有の名札」と捉えると、両者の役割の違いが整理できます。なお、同じネットワーク内でIPアドレスから相手のMACアドレスを調べる仕組みがARPで、その学習結果は ip neigh コマンドで確認できます。
ループバックインターフェース
インターフェースの一覧には、必ず lo という特別なものが現れます。これはループバックインターフェースと呼ばれ、外のネットワークには出ず、自分自身を指す閉じた通信に使われます。IPアドレスは 127.0.0.1 が割り当てられ、ホスト名 localhost もこれを指します。lo 宛てに送ったパケットは外へ出ることなく自分自身に返ってくるため、同じ機器の上で動くサービスの動作確認に便利です。たとえば自分のPCで起動したWebサーバを、まず ping 127.0.0.1 で自機のIP通信機能が生きているか確かめ、次に localhost 経由で接続テストする、といった使い方をします。ネットワークケーブルが抜けていても lo は常に有効なので、「IP通信の仕組みそのものが動いているか」を切り分ける基準点としても役立ちます。アプリのつながらない不具合で、まず lo への疎通を確かめると、問題が機器の外にあるのか中にあるのかを早い段階で分けられます。
ip addr で確認する
インターフェースの割り当て状況を確認する基本コマンドが ip addr(ip addr show とも書く)です。実行すると、lo・eth0 といったインターフェースごとに、状態やアドレス情報が表示されます。各ブロックの inet の行に 192.168.1.10/24 のようにIPアドレスとサブネットマスクが、link/ether の行に MACアドレスが示されます。MACアドレスだけを確認したいなら ip link show でも見られます。手早く全インターフェースの状態とアドレスを一覧したいときは ip -br addr が便利で、名前・状態・アドレスが1行ずつ簡潔に並びます。無線を含めたより詳しい接続管理には nmcli というコマンドもあり、nmcli device status で各インターフェースの接続状態を一覧できます。いずれも状態を見るだけのコマンドなので、安心して何度でも実行できます。
出力を読むときに見落としがちなのが、インターフェースの状態を表す UP / DOWN の表示です。各インターフェースの行には <UP> や state UP のような状態が示され、UP なら有効化されて通信できる状態、DOWN なら無効または未接続の状態を意味します。IPアドレスがそれらしく割り当たっていても、肝心のインターフェースが DOWN のままでは通信できません。トラブル調査では、まず ip addr で「目的のインターフェースが UP になっているか」「IPアドレスが想定どおり割り当たっているか」を確認するのが出発点になります。仮想マシンの仮想NICでは通信速度や全二重・半二重の情報が取れない(unknown と表示される)ことがありますが、これは仮想化の都合で異常ではありません。
実務でありがちな失敗の典型が、インターフェース名の思い込みです。設定ファイルやスクリプトに eth0 と書いたのに、その環境では実際には ens33 だった、というすれ違いはよく起こります。まず ip addr や ip link show で実在する名前を確認してから設定する、という順番を守るだけで、こうした取り違えの多くは防げます。また、IPアドレスが 169.254 で始まる値になっているときは、DHCPからアドレスを受け取れず一時的なリンクローカルアドレスが割り当たっているサインで、DHCPサーバへの到達やネットワーク接続そのものを疑う手がかりになります。逆に、想定したインターフェースに inet の行がまったく無いなら、そのインターフェースにIPアドレスが割り当たっていないということなので、設定やケーブル、無線の接続状態を確認します。調査の基本動作は、ip addr で「名前・UP/DOWN・割り当てアドレス」の3点を一度に把握し、必要に応じて ip link show でMACアドレスや物理的なリンク状態を確かめる、という流れです。古いシステムでは ifconfig -a でも似た情報が見られますが、現在のLinuxでは ip コマンド系が標準なので、ip addr を中心に据えて慣れておくのが安全です。