はじめに
自宅PCのHyper-V上でネットワークのシミュレータeve-ngを動かしているのですが、VLAN周りでドはまりしたので、そのメモです。
やりたかったこと
自宅PCの構成は↓の通り。
- 自宅PCとAT-x210-9GTはTrunk接続して、Intel PROSetの機能でVLAN接続。OS上ではVLAN11とVLAN251が別のネットワークアダプタとして認識。
- 自宅PC上のHyper-Vでeve-ngが動いている。eve-ngにはVLAN251のネットワークアダプタを割り当て。
- VLAN11とVLAN251間はRTX1200がルーティング。
- 自宅PCのホスト側のVLAN11のインタフェイスから、RTX1200を経由してeve-ngに乗り込みたい。
現象
eve-ngからRTX1200への通信
eve-ngからRTX1200に対してpingを打つと通らない。
各ポイントでパケットキャプチャしてみるとARPの応答がvSwitchあたりで消えてます。
eve-ng 自宅PC RTX1200
ARP(Broadcast) -------------------------->
ARP(Response) ×<-------------------
RTX1200からeve-ngへの通信
RTX1200からeve-ngに対してpingを打っても通らない。
同じく各ポイントでパケットキャプチャしてみると、pingがvSwitchあたりで消えています。
※ARPは先の確認でARPテーブルに入ってました。
eve-ng 自宅PC RTX1200
ping(Request) ×<-------------------
Hyper-VのゲストOS同士の通信
eve-ngと同じvSwitchに接続する別の仮想OSを用意してみてゲストOS間で通信できるか確認してみたところ、問題なくpingが通ります。
物理機器同士の通信
RTX1200と同じVLAN251にノートPCを接続して通信できるか確認してみたところ、問題なくpingが通ります。
試行錯誤
ググる
ググること丸一日wよくわかりませんでした。
だいたいよくあるのは、Hyper-Vの設定でMACスプーフィング機能をONにしなさいということ。
それは当然やってます。
Hyper-Vの設定を色々調べる
ゲストOSのネットワークアダプタの設定でVLANIDを指定する必要があったようです。
すでに、Intel PROSetの設定でホストOSレベルでVLANごとのネットワークアダプタが用意されてて、そのアダプタをHyper-Vの仮想スイッチに割り当てているので、あえてHyper-V上でVLANIDを指定する必要性は認識なかったのですが。。
ま、とりあえず解決したからよし。