調べていますパスワード仮想デバイスドライバ。この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
pingすると2.2.2.2
ループバックインターフェイスに移動します。 pingをすると2.2.2.10
関数に移動しdummy_xmit()
ますが、これはパケットを破壊します。パケットが破損していない唯一の時間がループバックを使用している場合にのみ、なぜループバックを使用しないのですか?
答え1
仮想インターフェイスは確かに少し華やかですが、それにもかかわらず便利です。主な利点は、IPネットワーク接続がダイヤルアップリンクのみであるスタンドアロンホストとコンピュータに適していることです。実際、後者はほとんどの場合スタンドアロンホストでもあります。
スタンドアロンホストのジレンマは、通常、アドレス127.0.0.1が割り当てられるループバックデバイスと呼ばれるアクティブなネットワークデバイスが1つしかないことです。ただし、場合によっては、ローカルホストの「公式」IPアドレスにデータを送信する必要があります。たとえば、この例では、ネットワークから切断されたノートブックvliteを考えてみましょう。
vliteのアプリケーションは、同じホスト上の他のアプリケーションにいくつかのデータを転送しようとすることができます。 /etc/hosts で vlite が見つかると、IP アドレス 191.72.1.65 が表示されるため、アプリケーションはそのアドレスに転送しようとします。ループバックインターフェイスは現在システム上の唯一のアクティブインターフェイスなので、カーネルはこのアドレスが実際に自分自身を参照しているかどうかわかりません。その結果、カーネルはデータグラムを削除し、アプリケーションにエラーを返します。
仮想アプライアンスが介入する場所です。単にループバックインターフェイスの分身として機能することでこのジレンマを解決します。 vliteの場合は、アドレス191.72.1.65を指定し、それを指すホストパスを追加するだけです。これにより、191.72.1.65のすべてのデータグラムがローカルに渡されます。正しい呼び出しは次のとおりです。
# ifconfig dummy vlite
# route add vlite