CentOS 7 サーバーを設定して、KVM 仮想マシンが Cisco Meraki MX (ファイアウォール) で構成された VLAN 30 から DHCP リースを取得し、VLAN 1 から分離されるようにしたいと考えました。
物理インターフェースが 2 つもないので、1 つを仮想化して、それに VLAN タグを追加し、仮想化された VLAN タグ付きインターフェースをブリッジして、それを virt-install スクリプトで設定することにしました。ただし、CentOS ボックス自体に送信されるすべてのトラフィックが VLAN 1 に留まるようにしたいと考えました (VM に向かうトラフィックを除く)。
先日は動作していると思ったのですが、ふと思いついてサブネット間で ping を実行してみたところ、ICMP 応答が返ってきて驚きました。
私はすべてをセットアップする際に、このリファレンスを(ある程度)従いました。ifcfg ファイルを使用した 802.1Q VLAN タグ付けの設定
現在、/etc/sysconfig/network-scripts/ifcfg-em1
(デフォルトのイーサネット インターフェイス)は次のように設定されています。
TYPE="Ethernet"
PROXY_METHOD="none"
BROWSER_ONLY="no"
BOOTPROTO="dhcp"
GATEWAY="192.168.128.1"
DEFROUTE="yes"
IPV4_FAILURE_FATAL="no"
NAME="em1"
UUID="bac1228e-fe29-4e7c-9073-6b2d4542d003"
DEVICE="em1"
ONBOOT="yes"
ZONE=public
このインターフェースは、VLAN 1 サブネットから 192.168.128.x IP を正常に取得します。
/etc/sysconfig/network-scripts/ifcfg-em1.30
次に(VLAN 30 タグ付きの仮想インターフェイス)があります:
TYPE="Ethernet"
#BOOTPROTO="dhcp"
DEVICE="em1.30"
ONBOOT="yes"
ZONE=public
VLAN="yes"
BRIDGE="br0"
これは、BRIDGE オプションが原因であると考えられますが、IP アドレスは取得されません。
最後に、/etc/sysconfig/network-scripts/ifcfg-br0
(em1.30 からのブリッジ接続):
BOOTPROTO="dhcp"
IPV6INIT="no"
DEFROUTE="no"
GATEWAY="10.100.0.1"
IPV6_AUTOCONF="no"
ONBOOT="yes"
TYPE="Bridge"
DELAY="0"
ZONE=public
このインターフェースは、VLAN 30サブネット(10.100.0.x)から正しいDHCPルートも取得します。
virt-install スクリプトで br0 インターフェイスを使用すると、起動時にすべての VM が VLAN 30 サブネットからも正常にプルされるため、機能しているように見えます。ただし、前述のように、1 つのサブネットから別のサブネットに ping (または SSH) を実行しようとすると、完全な応答が返されます。
これはおそらくルートと関係があるのではないかと思います。出力は次のとおりですroute -n
。
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.128.1 0.0.0.0 UG 0 0 0 em1
10.100.0.0 0.0.0.0 255.255.255.0 U 0 0 0 br0
169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 em1
169.254.0.0 0.0.0.0 255.255.0.0 U 1045 0 0 br0
192.168.128.0 0.0.0.0 255.255.255.0 U 0 0 0 em1
参考までに、/etc/sysconfig/network
現在は空白です。NetworkManager を無効にしており、動作していると思っていたときに、ifcfg-br0 に DEFROUTE または GATEWAY オプションが設定されていませんでした (今日これらを追加しましたが、結果に変化がなかったので、そのままにしました)。
ifcfg-em1.30 だけでなく、ifcfg-br0 でも VLAN オプションを設定する必要があるのでしょうか? ここまでお読みいただきありがとうございました。