深夜2時にEthernetに「裏切られた」とき
クラシックなシナリオ:深夜、リモートで拠点のサーバーを修正している最中に、突然センターのスイッチが故障するか、唯一のLANケーブルがネズミに囓られて切断されてしまいます。Ethernetポートは麻痺。唯一の希望はこのサーバーがオフィスのバックアップWi-Fiを拾えることですが、あいにくそれはヘッドレス版 — インターフェースもマウスもなく、点滅するコマンドプロンプトがあるだけです。
正直なところ、そのような状況でCLIをしっかり把握していないと、冷や汗をかくことになります。サーバーに直接モニターを接続するのはほぼ不可能です。これこそが、コマンドラインによるネットワーク管理スキルが、眠れない夜を救うために力を発揮する瞬間です。
nmcliとwpa_supplicant、どちらを選ぶべきか?
マウスを使わずにLinuxでWi-Fiに接続するには、通常2つの方法があります。使用しているディストリビューション(distro)によって、付属するツールが異なります。
1. nmcli (NetworkManager CLI)
これはUbuntu 22.04以降、CentOS/RHEL、Fedoraなどの現代的なディストリビューションにおけるデフォルトのツールです。nmcliは非常に強力で、直感的な構文を持ち、設定ファイルを自動的に適切に処理します。システム管理者にとっての十徳ナイフのような存在です。
2. wpa_supplicant
nmcliが多目的SUVなら、wpa_supplicantは無骨ながらも非常にタフなジープのようなものです。これは低レベルのツールで、Wi-Fiセキュリティプロトコル(WPA2、WPA3)の処理に特化しています。Raspberry Pi OS Liteのような超軽量(minimal)システムやIoTデバイスでは、これが唯一の選択肢となることが多いです。
メリットとデメリットの比較
- nmcli:
- メリット: 非常に高速で、1〜2個のコマンドでネットワークに接続可能。再起動後も自動的に再接続される(永続的)。
- デメリット:
network-managerパッケージが比較的重く(RAMを10〜15MB程度消費)、D-Busなどの多くの依存関係を伴う。
- wpa_supplicant:
- メリット: ほぼすべてのLinuxマシンに搭載されている。非常に軽量で、リソースの少ないサーバーに適している。
- デメリット: 構文が冗長。
dhclientを使用して手動でIPを割り当てるか、テキスト設定ファイルを手動で編集する必要があり、スペース一つ間違えるだけで動作しなくなる。
「生き残る」ためにどちらを選ぶか?
深夜2時の最優先事項はスピードです。サーバーにNetworkManagerがインストールされている場合(systemctl status NetworkManagerで確認)、すぐにnmcliを使用してください。そうでない場合は、wpa_supplicantを使いましょう。
方法1:nmcliを使用する(迅速かつ簡潔)
まず、Wi-Fiインターフェースの名前を確認します。デフォルトがwlan0であるとは限りません。wlp2s0やenp0s20f3の場合もあります。
ip link show
ステップ1:Wi-Fiカードを有効化する
nmcli radio wifi on
ステップ2:周囲のネットワークをスキャンする
このコマンドにより、サーバーが電波を拾っていることを確認し、接続先のSSIDを正確に把握できます。
nmcli device wifi list
ステップ3:接続する
nmcli device wifi connect "あなたのSSID" password "Wi-Fiパスワード"
“Device ‘wlan0’ successfully activated”という行が表示されれば成功です。このプロファイルは永続的に保存されます。
方法2:wpa_supplicantを使用する(手動かつ確実)
この方法は、Debian Minimalや旧世代のサーバーを使用している場合に適しています。
ステップ1:セキュリティ設定ファイルを作成する
誤って設定ファイルをcatした際にパスワードが露出しないよう、パスワードをプレーンテキストで書き込むのではなく、wpa_passphraseツールを使用して暗号化します。
wpa_passphrase "あなたのSSID" "パスワード" | sudo tee /etc/wpa_supplicant/wpa_supplicant.conf
ステップ2:バックグラウンドでサービスを実行する
sudo wpa_supplicant -B -i wlan0 -c /etc/wpa_supplicant/wpa_supplicant.conf
ここで、-B(Background)オプションにより、ターミナルを維持して次のコマンドを入力できるようになります。
ステップ3:IPアドレスを要求する
wpa_supplicantは自動的にIPを取得しないため、DHCPクライアントを呼び出す必要があります。
sudo dhclient wlan0
ルーティングの罠:接続済みと表示されるのにインターネットに繋がらないのはなぜ?
非常によくあるエラー:Ethernetポートの方がメトリックが低く(優先度が高いため)、サーバーが切断されたEthernetポート経由でトラフィックを送信しようとし続けることがあります。Wi-Fi接続には成功しても、Googleにpingが飛ばない状態です。
ルーティングテーブルを確認してください:
ip route show
Ethernetのゲートウェイがまだ最初の行(default via…)に居座っている場合は、それを削除するか、Wi-Fiのメトリックを上げる必要があります。この際、サブネットの競合を避けるために、静的IPを割り当てる(必要な場合)範囲の計算が非常に重要になります。
ヒント: サブネットを素早く分割したり、予備のIP範囲を確認したりする必要がある場合、私はよく Subnet Calculator や toolcraft.app/ja/tools/developer/ip-subnet-calculator を使います。CIDR(例:/24や/26)を入力するだけで、利用可能なIP範囲とブロードキャストアドレスがすぐに分かり、ゲートウェイIPの重複によるネットワークループを防ぐことができます。これは疲れているときには非常にデバッグが困難なエラーです。
最終結果の確認
仕上げに、お決まりのpingコマンドを忘れずに:
ping -c 4 8.8.8.8
20〜50ms程度の遅延で応答があれば、ケーブル一本使わずにサーバーを救出することに成功しました。おめでとうございます。
CLIによるLinux管理には細心の注意が必要です。この「深夜のトラブルシューティング」の経験が、LANケーブルが突然機能しなくなった際の自信に繋がれば幸いです。

