ifconfigを廃止すべき時が来た
2024年にifconfigを叩くのは、Googleマップの時代に紙の地図を使うようなものです。まだ動作はしますが、あまりにも多くの重要な情報が欠けています。iproute2ツールスイートは単なる代替品ではありません。これはLinuxカーネルのネットワークスタックに深く介入できる強力なエコシステムです。
2年前、私は約200ユーザーを抱えるIPv4とIPv6混在のサーバークラスターを管理していました。その時の課題は、セキュリティのために会計部門のトラフィックを専用의リーストライン(専用線)に流し、他の部門は通常のFTTH回線を使用させることでした。古いスタイルのroute -nだけを使っていたら、間違いなく失敗していたでしょう。以下に、私が実戦から学んだテクニックを紹介します。
クイックスタート:日常的に使うコマンド集
複雑な設定を行う前に、システムの状態を正確に把握する必要があります。出力されるテキストの山に惑わされないようにしましょう。
1. インターフェース管理 (ip link)
ifconfigの代わりに、ip linkを使ってネットワークカードの物理層を確認します。
# ネットワークカードを状態(UP/DOWN)付きで一覧表示
ip link show
# eth0を即座に有効化
sudo ip link set eth0 up
# フィルタリングを回避するためにMACアドレスを変更(例: aa:bb:cc:dd:ee:ff)
sudo ip link set eth0 address aa:bb:cc:dd:ee:ff
2. IPアドレス管理 (ip addr)
一つのインターフェースに複数のIPを割り当てることができます。これは、複数の仮想IPを必要とするWebサーバーを構築する際に非常に便利です。
# IPの詳細を表示
ip addr show
# eth0にセカンダリIPを追加
sudo ip addr add 192.168.1.100/24 dev eth0
# 不要になったIPを削除
sudo ip addr del 192.168.1.100/24 dev eth0
3. ルーティングテーブル管理 (ip route)
# 現在のルーティングテーブルを表示
ip route show
# 特定のネットワーク範囲へのルートを追加
sudo ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0
ip linkとMTU最適化の話
実務において、ip linkはパフォーマンスの難題を解決するのに役立ちます。よく見落とされるパラメータがMTU (Maximum Transmission Unit)です。
WireGuard VPNを導入した際、パケットには80バイトのヘッダーが追加されます。デフォルトのMTU 1500のままだと、パケットの断片化(フラグメンテーション)が発生し、ネットワーク速度が30〜40%低下します。MTUを1420に下げるだけで、すべてがスムーズに動作するようになります。
# VPNトンネル의 MTUを1420に調整
sudo ip link set wg0 mtu 1420
# 追加ツールなしでVLAN 10を素早く作成
sudo ip link add link eth0 name eth0.10 type vlan id 10
Metric:デフォルトゲートウェイの仲裁役
サーバーに2つの異なるISPに接続された2枚のネットワークカードがある場合、両方にデフォルトゲートウェイがあるとLinuxは混乱します。ここでmetricが役割を発揮します。
メトリック値が小さいほど、優先度が高くなります。通常、私はメインの光回線に100、バックアップの4G回線に200を設定します。
# eth1 (VNPT) より eth0 (Viettel) を優先
sudo ip route add default via 192.168.1.1 dev eth0 metric 100
sudo ip route add default via 10.0.0.1 dev eth1 metric 200
パケットがどこへ行くか知りたいですか?推測するのではなく、ip route getを使って実際の経路を確認しましょう。
# Google (8.8.8.8) へのパケットがどのインターフェースを通るか確認
ip route get 8.8.8.8
ポリシーベースルーティング (PBR):ip ruleによる高度な制御
通常、Linuxは「宛先」に基づいてルーティングを行いますが、ip ruleを使えば「送信元」に基づいたルーティングが可能です。ポリシーベースルーティング (PBR)を使えば、より柔軟な通信制御が可能になります。
シナリオ: サーバーに2つのパブリックIP(ISP1とISP2)があるとします。ISP2から入ってきたパケットに対し、サーバーがデフォルトゲートウェイに従ってISP1から返信してしまうと、キャリアのファイアウォールによって即座にドロップされます。これが非対称ルーティング(asymmetric routing)のエラーです。
解決策は、ISP2専用のルーティングテーブルを作成することです:
# 1. 'isp2' という名前のテーブルを作成 (ID 200)
echo "200 isp2" | sudo tee -a /etc/iproute2/rt_tables
# 2. isp2テーブルがISP2のゲートウェイを通るように設定
sudo ip route add default via 10.0.0.1 dev eth1 table isp2
# 3. ルール:送信元IPが10.0.0.50の場合、isp2テーブルの使用を強制
sudo ip rule add from 10.0.0.50 table isp2
このテクニックは、Multi-WANを構築したり、複雑なハイブリッドクラウドを運用したりする際に非常に重要です。
ネットワーク構築における「血の教訓」
本番環境でネットワークの修正に明け暮れた結果、以下の4つの注意点にたどり着きました:
- 設定の保存:
ipコマンドによる変更は、再起動後にすべて消失します。Netplan (Ubuntu) や/etc/network/interfacesに必ず記述してください。 - 「追加」ではなく「置換」: “File exists”エラーが出た場合は、
addの代わりにip route replaceを使って既存のルートを素早く更新します。 - 優先順位:
ip rule showを実行してPriorityを確認してください。数値が小さいものが先に実行されます。汎用的なルール(defaultなど)が特定のルールを上書きしないように注意しましょう。 - キャッシュのクリア: ルーティングを変更しても反映されない場合は、
sudo ip route flush cacheを実行してシステムに一時テーブルを強制更新させます。
link、route、ruleをマスターすれば、Linuxネットワークの80%をコントロールしたも同然です。GUIで手探りするよりも、コマンド入力を習得することで、SSH経由のトラブルシューティングを何倍も速くこなせるようになります。

