ダミーデバイスドライバの コード をチェックしています。 dummy_xmit()
関数はパケットを破棄します。ダミーデバイスの実際の使用法は何ですか、それとも今日は役に立たず、レガシーデバイスタイプですか?
ダミーデバイスタイプで次のテストを行う場合:
_$ Sudo ip link add dummy1 type dummy
$ Sudo ip addr add 2.2.2.2/24 dev dummy1
$ Sudo ip link set dummy1 up
_
_2.2.2.2
_にpingを実行すると、ループバックインターフェイスに移動します。 _2.2.2.10
_にpingを実行すると、dummy_xmit()
関数に移動しますが、パケットが破棄されます。パケットが破棄されない唯一のケースがループバックが使用されている場合である場合、ループバックを使用しないのはなぜですか?
ダミーインターフェイスは実際には少しエキゾチックですが、それでもかなり便利です。その主な利点は、スタンドアロンホスト、およびIPネットワーク接続がダイヤルアップリンクのみであるマシンを使用することです。実際、後者はほとんどの場合スタンドアロンホストでもあります。
スタンドアロンホストのジレンマは、アクティブなネットワークデバイスが1つしかないことです。ループバックデバイスには、通常、アドレス127.0.0.1が割り当てられています。ただし、場合によっては、ローカルホストの「公式」IPアドレスにデータを送信する必要があります。たとえば、この例の期間中、ネットワークから切断されたラップトップvliteについて考えてみます。
Vlite上のアプリケーションは、同じホスト上の別のアプリケーションにデータを送信したい場合があります。/etc/hostsでvliteを検索すると、191.72.1.65のIPアドレスが生成されるため、アプリケーションはこのアドレスに送信しようとします。ループバックインターフェイスは現在マシン上で唯一のアクティブなインターフェイスであるため、カーネルはこのアドレスが実際に自分自身を参照していることを認識していません。その結果、カーネルはデータグラムを破棄し、アプリケーションにエラーを返します。
これは、ダミーデバイスが介入する場所です。ループバックインターフェイスの分身として機能するだけで、ジレンマを解決します。 vliteの場合は、アドレス191.72.1.65を指定し、それを指すホストルートを追加するだけです。 191.72.1.65のすべてのデータグラムは、ローカルに配信されます。適切な呼び出しは次のとおりです。
# ifconfig dummy vlite
# route add vlite