iproute2

最終更新: 2026-08-28 10:51:46 +0800 +0800
原文は英語で書かれています。あなたはAI翻訳版を読んでいます。

iproute2 は、カーネルのネットワークスタックを調査、設定するための標準的な Linux ユーザー空間スイートです。リンク、アドレス、ルート、近隣、トンネル、トラフィック制御、 ソケット、ハードウェアオフロード、および複数の専用ネットワークサブシステムを扱います。 大半のコマンドはカーネルと Netlink メッセージを交換しますが、パケットを転送する データプレーン自体を実装するものではありません。

プロジェクトは Linux カーネルの各リリースに対応するリリースを一つ公開しています。 対応するバージョンは同世代のカーネルインターフェイスを公開します。ただし、新しい iproute2 でも、 未対応の機能を要求しない限り、古いカーネルに対して動作できます。

Linux ユーザー空間ネットワーク管理の歴史 #

Linux のネットワーク管理は複数のレイヤーを重ねて発展しました。低レベルユーティリティは 稼働中のカーネル状態を変更し、設定フレームワークとデーモンは永続化する状態と適用時期を決定します。

時期ソフトウェア役割と歴史的意義
1990 年代初頭BSD 由来のコマンドと net-toolsifconfig、route、arp、netstat などの個別コマンドが、リンク、IPv4 アドレス、ルート、近隣エントリ、統計情報を扱う従来の Linux インターフェイスになりました。これらのインターフェイスはネットワーク関連の ioctl と /proc に大きく依存するため、後に追加された多くのカーネル機能を表現できません。
1990 年代以降ディストリビューションのネットワークスクリプトと ifupdownDebian の /etc/network/interfaces やディストリビューション固有のネットワークスクリプトなどのファイルにより、低レベルコマンドを利用した永続設定が追加されました。ifup と ifdown はインターフェイスのライフサイクルを記述しますが、カーネル API ではなくオーケストレーションツールです。
1990 年代後半以降iproute2Alexey Kuznetsov は、カーネルの高度なルーティング、トラフィック制御、RTnetlink の開発と並行して iproute2 を作成しました。ip は ifconfig、route、arp、iptunnel が公開していたオブジェクトモデルを統合し、ss と tc はソケット調査とトラフィック制御を担いました。Netlink の拡張可能なメッセージベースのインターフェイスにより、このスイートは新しいカーネル機能に追随できました。
2004 年以降NetworkManagerNetworkManager は、動的な有線、Wi-Fi、モバイル、VPN 接続に対応する常駐型接続マネージャーを導入しました。接続プロファイルが望ましい状態を表現し、nmcli、nmtui、グラフィカルクライアントがデーモンを制御します。
2014 年以降systemd-networkdsystemd 210 は、起動時および継続的に管理されるリンクを対象とした宣言的ネットワークマネージャーを追加しました。.link、.netdev、.network ファイルが命名、仮想デバイス、アドレス、ルート、関連ポリシーを定義し、networkctl が実行時の調査と制御を提供します。
2016 年以降Netplan およびその他の設定フロントエンドNetplan は、NetworkManager または systemd-networkd 用の設定を生成する YAML 設定レイヤーを追加しました。この種のフロントエンドは、選択したネットワーク管理デーモンや、その下層にあるカーネルインターフェイスを置き換えることなくポリシーを標準化します。

各世代は異なる問題を解決するため、併存しています。ip addr add は実行中のカーネルを 即座に変更する一方、NetworkManager、systemd-networkd、ifupdown は永続ポリシーを 管理し、後からその変更を置き換える可能性があります。診断または意図的な一時状態の設定を除き、 デーモンが管理するインターフェイスを場当たり的な ip コマンドで変更するべきではありません。

パケットフィルタリングも別の系譜に属します。iptables と nft は、iproute2 が管理する ルーティングオブジェクトやリンクオブジェクトではなく、Netfilter を設定します。

ip のオブジェクトモデル #

ip は ip [options] object command という形式を使用します。主要なオブジェクトは カーネルのネットワーク概念に対応します。

オブジェクト用途
linkネットワークデバイスとリンク層プロパティを調査または設定する
addressIPv4 および IPv6 アドレスを管理する
routeユニキャスト、マルチキャスト、特殊ルートを管理する
ruleルーティングポリシーデータベースの規則を管理する
neighbourARP および IPv6 近隣探索エントリを管理する
netns名前付きネットワーク名前空間を作成し、その内部で操作する
tunnel, l2tp, macsecトンネルとセキュアリンクの種類を設定する
xfrmIPsec の状態とポリシーを管理する
nexthop再利用可能なネクストホップオブジェクトとグループを管理する
mptcpMultipath TCP のエンドポイントと制限を管理する
monitorRTnetlink の状態変更をストリーミングする

ip は一つの実行ファイルにまとめられたフロントエンド群として機能するため、 オブジェクト一覧は増え続けています。ip help はトップレベルオブジェクトを一覧表示し、 ip object help はインストール済みリリースでサポートされるコマンドを説明します。

iproute2 7.1.0 によってインストールされる実行ファイル #

アップストリームのリリースアーカイブには、ビルド済みバイナリではなくソースコードが含まれます。 次の表は、執筆時点の最新リリースである iproute2 7.1.0 の アップストリーム make install 規則によってインストールされる全コマンド名を示します。 ディストリビューションパッケージでは、コマンドが分割、省略、再配置、またはパッチ適用される場合があります。

コマンド用途ビルドまたはインストールに関する注記
ipリンク、アドレス、近隣、ルート、規則、名前空間、トンネル、関連ネットワークオブジェクトを調査、設定するコアコマンド
rtmonRTnetlink のリンク、アドレス、ルート、近隣イベントを記録し、後から調査できるようにするコアコマンド。ip monitor は一部重複する対話的機能を提供する
routelルーティングテーブルを列指向の形式で出力するインストールされる Python スクリプト
tcトラフィック制御のキューイング規律、クラス、フィルター、アクションを設定するコアコマンド
bridgeブリッジリンク、転送データベース、VLAN、マルチキャストデータベース、ブリッジポート状態を管理するコアコマンド
ssソケット、プロトコル状態、所有者、キュー、メモリ、診断データを調査するnetstat のソケット報告機能の後継
nstat前回の呼び出し以降の変化を含む、カーネルの SNMP カウンターとプロトコルカウンターを報告するコア統計コマンド
ifstatインターフェイスごとのパケットカウンターとバイトカウンターを報告するコア統計コマンド
rtacctカーネルのルートアカウンティングデータから、ルーティングレルム別にまとめたトラフィックカウンターを報告するコア統計コマンド
lnstat/proc/net/stat を通じて公開される選択済みカウンターを定期的に報告する汎用統計コマンド
rtstatlnstat の互換モードを通じてルーティングキャッシュ統計を報告するlnstat へのシンボリックリンク
ctstatlnstat の互換モードを通じてコネクショントラッキング統計を報告するlnstat へのシンボリックリンク
arpdユーザー空間の ARP キャッシュを維持し、永続データベースからカーネルの近隣要求に応答するBerkeley DB 互換ヘッダーとライブラリが利用できる場合のみビルドされる
genlGeneric Netlink ファミリーを照会、呼び出すコアコマンド。主にプロトコル開発と診断に有用
tipcTransparent Inter-Process Communication のベアラー、リンク、ノード、ソケット、名前空間を設定、調査するlibmnl が利用できる場合にビルドされる
devlinkデバイスレベルのネットワークリソース、ポート、ファームウェアパラメーター、ヘルスレポーター、トラップ、ハードウェアレートを設定、診断するlibmnl が利用できる場合にビルドされる
rdmaRDMA デバイス、リンク、リソース、システム設定、統計を調査、設定するlibmnl が利用できる場合にビルドされる
dcbData Center Bridging のバッファー、優先度、Priority Flow Control、ETS、アプリケーションマッピングを調査、設定するlibmnl が利用できる場合にビルドされる
vdpavDPA 管理デバイスと仮想データパスアクセラレーターデバイスを管理するlibmnl が利用できる場合にビルドされる
netshaperNetlink を通じて公開されるハードウェア送信シェーピングオブジェクトを調査、設定するlibmnl が利用できる場合にビルドされる
dpllネットワーククロック同期に使用する Digital Phase-Locked Loop デバイスとピンを調査、設定、監視するlibmnl が利用できる場合にビルドされる

maketable、normal、pareto、paretonormal という名前のプログラムも ソースツリーにありますが、ビルドでは tc の分布表の生成だけに使用されます。 インストールターゲットはこれらのホストツールではなく、生成されたデータをコピーするため、 リリースコマンドには含まれません。

適切なレイヤーの選択 #

  • 即時の調査、診断、実験、および上位レベルのマネージャーが公開していない低レベル設定には、 iproute2 を使用します。
  • 再起動後も状態を維持し、デバイスのライフサイクルイベントに一貫して対応する必要がある場合は、 NetworkManager、systemd-networkd、ifupdown、またはディストリビューションの 設定レイヤーを使用します。
  • パケットフィルタリングとネットワークアドレス変換には nft を使用します。これらの処理は Netfilter に属するためです。
  • ユーザー空間はビルド時に既知だった機能しかエンコードできず、実行中のカーネルは 実装済みの機能しか受け付けられないため、iproute2 のドキュメントをインストール済み バージョンに合わせます。

参考資料 #

コメント

GitHub で閲覧・コメントする(投稿にはログインが必要です)