
仕事で、Windows から Linux に製品を移植するという課題を受けました。その製品機能の一部は、ネットワーク バッファーのみを通過する NDIS6 ミニポート ネットワーク アダプターです。このアダプターには識別子と MAC アドレスがあります。別のサービス アプリケーションがそのネットワーク ドライバーをアクティブ化し、このアダプターを介してネットワーク トラフィックを渡す IP サービスを開始します。
私の質問は、Linux 上でこのような「ダミー」ネットワーク ドライバーを機能的に置き換えるものは何でしょうか?
答え1
Linux での Windows ミニポート ネットワーク アダプターの置換とは何ですか?
「ミニポートネットワークアダプタ」では、あまり説明できません。ミニポート ドライバーこれは Windows ドライバー モデルに特有のものであり、ドライバーがどのように記述されたかを説明しますが、ドライバーが何をするかについては説明しません。
イーサネット パケットのパススルーとして動作し、プログラムで有効化および無効化でき、プログラムで IP ネットワークを設定するために使用できるエンティティ (モジュール?)
ソフトウェアによって制御されるネットワークインターフェース(つまり、インターフェースを介して送信されたパケットがファイルハンドルを介してプログラムによって受信され、その逆も同様)を作成することが目的の場合は、tap
またはtun
インターフェース。(前者はレイヤー 2 イーサネット ヘッダー付きのパケットを伝送し、後者はヘッダーなしのパケットを伝送しますが、それ以外は同じです。)
公式ドキュメント:
https://www.kernel.org/doc/Documentation/networking/tuntap.txt
(このドキュメントはかなり古いものです。最近の Linux ディストリビューションでは、デバイス ノードを手動で作成したり、カーネル モジュールを手動でロードしたりする必要はありません。ただし、セクション 3「プログラム インターフェイス」と ioctl ベースの API は依然として正確です。)
TUN/TAP インターフェイスは、Linux 上のほとんどの VPN および VM ソフトウェアで使用されています。実際、Windows で使用できる「TAP-Windows」および「Wintun」NDIS ドライバーは、それらを模倣して作成されました。
同じことを実行する独自のネットワーク インターフェイス ドライバー (VirtualBox で使用される 'vboxnetadp' や SheepShaver Mac エミュレーターで使用される 'sheep_net' など) を作成することもできますが、ほとんどのシステム管理者は、そうせずに代わりに標準の tun/tap を使用することに感謝するでしょう。