Hyper-VゲストのLinux(Debian 12)間でvlanを構成したのですが当初は通信できませんでした。特に難しい設定ではないので、同様の設定を物理マシン間で再現したところ、通信できたので、どうやらHyper-Vは何もしていない場合、Guest上で設定したtagged vlanではvm間で通信できないようです。
そこで調べたところ、以下の様にするとVM同士のVLAN間で取敢えず通信できましたが、複数のNICを持たせてある場合、他が通信できなくなる落とし穴がありました。
具体的には以下の様にします。既に変更してしまった場合、一旦Untaggedの状態にします。(この状態にしないとhypev-vマネージャーではエラーがでて変更することができませんでした。)
参考までに、r20 r21 r22の/etc/network/interfaces.d以下の設定は以下の通りです。
そこで調べたところ、以下の様にするとVM同士のVLAN間で取敢えず通信できましたが、複数のNICを持たせてある場合、他が通信できなくなる落とし穴がありました。
Set-VMNetworkAdapterVlan r20 –Trunk –AllowedVlanIdList 1-4094 –NativeVlanId 0 Set-VMNetworkAdapterVlan r21 –Trunk –AllowedVlanIdList 1-4094 –NativeVlanId 0 Set-VMNetworkAdapterVlan r22 –Trunk –AllowedVlanIdList 1-4094 –NativeVlanId 0trunkはトランク接続つまりtagged vlan 接続のことであり、このコマンドレットでr21-r22のGuest間でtagged vlan接続できるようになりましたが、複数のネットワークアダプターを持っている場合、上述のコマンドだとすべてのアダプターに対して、トランクモードが設定されてしまい、Hyper-Vマネージャで設定したvlan設定もすべてすっ飛んでしまいます。
> Get-VMNetworkAdapterVlan r20 VMName VMNetworkAdapterName Mode VlanList ------ -------------------- ---- -------- r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094 r20 ネットワーク アダプター Trunk 0,1-4094しかも、どれが何のアダプターかわかりません。特定のネットワークアダプターのみTrunk接続させたい場合、要は対象となるネットワークアダプター名を先に変更してから、trunk接続の設定をする必要があるようです。
具体的には以下の様にします。既に変更してしまった場合、一旦Untaggedの状態にします。(この状態にしないとhypev-vマネージャーではエラーがでて変更することができませんでした。)
Set-VMNetworkAdapterVlan -VMName r20 -Untagged続いて、どのネットワークアダプタがどれなのかわからいので、hyper-vマネージャーで手動でvlanとswitchの設定を基に戻し、確認します。
> Get-VMNetworkAdapterVlan -VMName r20 VMName VMNetworkAdapterName Mode VlanList ------ -------------------- ---- -------- r20 ネットワーク アダプター Untagged r20 ネットワーク アダプター Access 20 r20 ネットワーク アダプター Access 21 r20 ネットワーク アダプター Access 22 r20 ネットワーク アダプター Access 23 r20 ネットワーク アダプター Access 24 r20 ネットワーク アダプター Untagged次に、以下の様にしてアダプターを特定できるように確認します。
> Get-VMNetworkAdapter -VMName r20 Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses ---- -------------- ------ ---------- ---------- ------ ----------- ネットワーク アダプター False r20 vsw01 00155D019C68 {Ok} {} ネットワーク アダプター False r20 vsw20 00155D012020 {Ok} {10.1.20.1, 240b... ネットワーク アダプター False r20 vsw21 00155D012021 {Ok} {10.1.21.1, fe80... ネットワーク アダプター False r20 vsw22 00155D012022 {Ok} {10.1.22.1, fe80... ネットワーク アダプター False r20 vsw23 00155D012023 {Ok} {10.1.23.1, fe80... ネットワーク アダプター False r20 vsw24 00155D012024 {Ok} {10.1.24.1, fe80... ネットワーク アダプター False r20 vsw-vlan-test00 00155D019C6E {Ok} {10.1.27.1, fe80...今回はSwitchNameが"vsw-vlan-test00"でMacAddressが"00155D019C6E"のネットワークアダプター名を変更して、それだけをtrunk 接続に接続してみます。まず、ネットワークアダプター名の変更は以下の様にしてみました。
> $vmnetadapt = Get-VMNetworkAdapter -VMName r20 | Where-Object {$_.MacAddress -EQ "00155D019C6E"} > Rename-VMNetworkAdapter -VMNetworkAdapter $vmnetadapt -NewName vNic01 > Get-VMNetworkAdapter -vmname r20 Name IsManagementOs VMName SwitchName MacAddress Status IPAddresses ---- -------------- ------ ---------- ---------- ------ ----------- ネットワーク アダプター False r20 vsw01 00155D019C68 {Ok} {} ネットワーク アダプター False r20 vsw20 00155D012020 {Ok} {10.1.20.1, 240b... ネットワーク アダプター False r20 vsw21 00155D012021 {Ok} {10.1.21.1, fe80... ネットワーク アダプター False r20 vsw22 00155D012022 {Ok} {10.1.22.1, fe80... ネットワーク アダプター False r20 vsw23 00155D012023 {Ok} {10.1.23.1, fe80... ネットワーク アダプター False r20 vsw24 00155D012024 {Ok} {10.1.24.1, fe80... vNic01 False r20 vsw-vlan-test00 00155D019C6E {Ok} {10.1.27.1, fe80...ここまでくればあとはvNic01に対しtrunk接続できるように設定するだけです。
> Set-VMNetworkAdapterVlan r20 -VMNetworkAdapterName vNic01 –Trunk –AllowedVlanIdList 1-4094 –NativeVlanId 0 > Get-VMNetworkAdapterVlan -VMName r20 VMName VMNetworkAdapterName Mode VlanList ------ -------------------- ---- -------- r20 ネットワーク アダプター Untagged r20 ネットワーク アダプター Access 20 r20 ネットワーク アダプター Access 21 r20 ネットワーク アダプター Access 22 r20 ネットワーク アダプター Access 23 r20 ネットワーク アダプター Access 24 r20 vNic01 Trunk 0,1-4094以上の設定を他のVMにも適用してください。
参考までに、r20 r21 r22の/etc/network/interfaces.d以下の設定は以下の通りです。
# r20 /etc/network/interfaces.d/eth6.27 auto eth6.27 iface eth6.27 inet static address 10.1.27.1 netmask 255.255.255.0 # r21 /etc/network/interfaces.d/eth2.27 auto eth2.27 iface eth2.27 inet static address 10.1.27.2 netmask 255.255.255.0 # r22 /etc/network/interfaces.d/eth2.27 auto eth2.27 iface eth2.27 inet static address 10.1.27.3 netmask 255.255.255.0Hyper-vのネットワーク関係は設定が少し面倒だけど、何とかなりました。今回は以上です。それでは。
コメント
コメントを投稿