web-dev-qa-db-ja.com

VLAN IPのPingコマンドを使用する

を使用してマシンの新しい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を実行した場合。

私の質問は、内部で何が起こっているのかということです。

  1. 同じマシンのVLANIPが成功します。
  2. 一般的なpingコマンドを使用する他のマシンのVLANIPが失敗します。
  3. Eth0を指定したpingコマンドで他のマシンのVLANIPが成功します。
1
sbhatla

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、パケットをネットワークに送信しないため、タグを付けません。

3
Paul