Linux TUN/TAP

最終更新: 2024-12-30 08:13:57 +0800 +0800
原文は英語で書かれています。あなたはAI翻訳版を読んでいます。

TUN/TAP は、ユーザー空間のファイルディスクリプターに接続された仮想ネットワーク インターフェイスを作成します。TUN デバイスはレイヤー 3 の IP パケットを運び、 TAP デバイスはレイヤー 2 の Ethernet フレームを運びます。VPN、パケットアナライザー、 ユーザー空間ネットワークスタック、仮想マシンで使用されます。

インターフェイスの作成 #

/dev/net/tun を読み書き用に開き、ifreq とともに TUNSETIFF を発行します。 IFF_TUN または IFF_TAP を設定し、プログラムがパケットまたはフレームだけを 受信する場合は IFF_NO_PI も追加します。IFF_NO_PI がない場合、各 read は フラグとプロトコルを含む 4 バイトのパケット情報ヘッダーで始まります。カーネルが ネットワークインターフェイスを作成した後、ip link、ip address、ip route で 管理状態、アドレス、ルートを設定します。

自動的に作成されないシステムでは、デバイスノードはキャラクターデバイスの major 10、minor 200 です。アクセスは慎重に制御する必要があります。インターフェイスの 作成やネットワーク名前空間への接続には適切な権限が必要です。最後のファイル ディスクリプターを閉じると、永続化が設定されていない非永続 TUN/TAP インターフェイス は削除されます。

パケットの方向 #

プログラムが書き込んだパケットは、仮想インターフェイスに到着したかのように カーネルが受信します。カーネルがそのインターフェイス経由で送信するパケットは、 read(2) によってプログラムへ返されます。ip tuntap add dev tun0 mode tun または mode tap を使用すると、カスタム C プログラムなしで基本的な作成を行えます。

コメント

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