を使用してマシンの新しいVLAN IPを作成しました
vconfig add eth0 22
それから私はしました:
ifconfig eth0.22 192.168.3.2 netmask 255.255.255.0 up`.
この後、ping 192.168.3.2
を実行すると、成功します。
この後、このプロセスをやり直して、同じローカルネットワーク(192.168.3.1
)内の別のマシンに別のVLAN IP)を作成し、pingを実行すると、失敗します。ただし、成功します。コマンドping 192.168.3.1 -I eth0
のようにpingを実行した場合。
私の質問は、内部で何が起こっているのかということです。
VLANを作成しています。つまり、(この場合)eth0.22パケットから送信されたパケットには、パケットの宛先がVLAN)であることを示す802.1Qヘッダー(タグ)がプレフィックスとして付けられます。 = 22.スイッチは、トランクインターフェイスでこのパケットを受け入れ、許可として定義されているポートからパケットを転送しますVLAN 22(またはVLANを許可するように定義されています)。
出力インターフェイスがアクセススイッチポート(つまり、トランクではない)の場合、802.1Qヘッダーが削除され、パケットが転送されます。ポートがトランクの場合、802.1Qタグはそのまま残ります。
これらすべてが機能するためには、VLANを理解するマネージドスイッチが必要です。あなたの場合、あなたはそれを持っていないか、あなたが接続しているポートがトランクとして構成されていないかのどちらかです。
アンマネージドスイッチでは、タグ付きパケットが理解されないため、破棄されます。
あなたの場合に起こっていることは、pingを実行すると、OSが適切なインターフェイス(eth0.22)を選択するため、802.1qタグを付けてパケットを送信します。
OSは、ルーティングテーブルに基づいて適切なインターフェイスを選択します。なので 192.168.3.0
は明示的にeth0.22インターフェースに接続されており、このネットワークのパケットはデフォルトでこのインターフェースを介して送信されます。ルーティングテーブルを参照してください。
$ netstat -rn
Kernel IP routing table
Destination Gateway Genmask Flags MSS Window irtt Iface
[..snip..]
192.168.3.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0.22
これは、処理方法がわからないため、スイッチでドロップされます。
Eth0インターフェイスからpingを強制的に出力すると、タグなしインターフェイスから出力されるため、スイッチはパケットを認識して転送します。受信側のマシンはそれを認識し、pingの動作方法の癖により、より適切なeth0.22インターフェイスではなく、pingが到着したインターフェイスから応答します。
Pingは機能しますが、他のサービスは機能しない場合があります。
VLANを使用する場合は、VLAN対応スイッチが必要です。それ以外の場合は、eth0インターフェイスにセカンダリアドレスがない場合は、セカンダリアドレスを使用できます。
自分自身にpingを実行しているときにこれが機能する理由は、802.1qタグ付けが出力まで発生しないためです。したがって、192.168.3.1
がpingを実行しています192.168.3.1
、パケットをネットワークに送信しないため、タグを付けません。