Proxmoxでトランク(タグ)
Proxmoxでトランク(802.1Qタグ)を扱う。環境を用意しやすいGNS3で実現。内容的には「VMware ESXiを試す(その2)&久しぶりにGNS3(その49)」と同じ。ここでは、Proxmox ISOを利用。
環境
Proxmox上に3つのコンテナが存在し、コンテナdebian1が仮想スイッチvmbr1(アクセスポート)に接続され、コンテナdebian10とコンテナdebian20とが仮想スイッチvmbr2(トランクポート)に接続され、前者がVLAN10、後者がVLAN20に属する。vmbr1はdhcpServer1に、vmbr2はトランクポートをもつSwitchに接続されている。SwitchはVLAN10およびVLAN20のアクセスポートを持ち、それぞれ、dhcpServer2およびdhcpServer3に接続されている。それぞれのコンテナは、DHCPサーバーから異なるネットワークのIPアドレスを取得するというストーリー。IPアドレス情報は図に記載のとおり。
設定
DHCP Server
関連するところのみ記載。下記はdhcpServer2。1も3も内容的には同じ(IPアドレスなどが異なるのみ)。
ip dhcp excluded-address 10.2.2.101 10.2.2.254
ip dhcp pool P2
network 10.2.2.0 255.255.255.0
default-router 10.2.2.254
interface Ethernet0/0
ip address 10.2.2.254 255.255.255.0
Switch
- Port0: Trunk Port
- Port1: VLAN10 Access Port
- Port2: VLAN20 Access Port
Proxmox
VirtualBox上で動作。
ホスト
ネットワークI/Fとして、nic0、enp0s8、enp0s9、enp0s10をもち、仮想スイッチ(vmbr)への所属状況は下記。
- vmbr0: nic0(ホスト制御用、Proxmoxインストール時に自動作成)
- vmbr1: enp0s8(アクセスポート、マニュアル作成)
- vmbr2: enp0s9(トランクポート、マニュアル作成)
- vmbr3: enp0s10(トランクポート、GUIによる作成、実質未使用)
ネットワーク設定状況は下記である。
auto lo
iface lo inet loopback
iface nic0 inet manual
iface enp0s8 inet manual
iface enp0s9 inet manual
iface enp0s10 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.10.73/24
gateway 192.168.10.1
bridge-ports nic0
bridge-stp off
bridge-fd 0
auto vmbr1
iface vmbr1 inet static
bridge-ports enp0s8
bridge-stp off
bridge-fd 0
auto vmbr2
iface vmbr2 inet static
bridge-ports enp0s9
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 10 20
auto vmbr3
iface vmbr3 inet manual
bridge-ports enp0s10
bridge-stp off
bridge-fd 0
bridge-vlan-aware yes
bridge-vids 2-4094
ほぼ、自明であろう。今回、実質未使用であったが、GUIで仮想スイッチを作成する手順は下記となる。なお、GUIで作成すると、VLAN ID 2-4096が登録されるようだ。
「Linux Bridge」クリック。
ブリッジポート(enp0s8など)を指定して、「作成」をクリック。
「設定を適用」をクリック。
完成。
コンテナ
インストール時にDHCPからIPアドレス取得を指定するのみ。
検証
ホスト
IPアドレス
root@prox:~# ip address
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: nic0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vmbr0 state UP group default qlen 1000
link/ether 08:00:27:f6:43:db brd ff:ff:ff:ff:ff:ff
altname enx080027f643db
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vmbr1 state UP group default qlen 1000
link/ether 08:00:27:04:dd:bd brd ff:ff:ff:ff:ff:ff
altname enx08002704ddbd
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master vmbr2 state UP group default qlen 1000
link/ether 08:00:27:3a:18:93 brd ff:ff:ff:ff:ff:ff
altname enx0800273a1893
5: enp0s10: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master vmbr3 state DOWN group default qlen 1000
link/ether 08:00:27:37:dc:49 brd ff:ff:ff:ff:ff:ff
altname enx08002737dc49
6: bond0: <NO-CARRIER,BROADCAST,MULTICAST,MASTER,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 0e:99:f9:1a:26:26 brd ff:ff:ff:ff:ff:ff
7: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:f6:43:db brd ff:ff:ff:ff:ff:ff
inet 192.168.10.73/24 scope global vmbr0
valid_lft forever preferred_lft forever
inet6 fe80::a00:27ff:fef6:43db/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
8: vmbr1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:04:dd:bd brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe04:ddbd/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
9: vmbr2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether 08:00:27:3a:18:93 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a00:27ff:fe3a:1893/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever
10: vmbr3: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc noqueue state DOWN group default qlen 1000
link/ether 08:00:27:37:dc:49 brd ff:ff:ff:ff:ff:ff
11: veth1001i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr1 state UP group default qlen 1000
link/ether fe:55:06:32:fc:0e brd ff:ff:ff:ff:ff:ff link-netnsid 0
12: veth1010i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr2 state UP group default qlen 1000
link/ether fe:6c:06:f1:83:da brd ff:ff:ff:ff:ff:ff link-netnsid 1
13: veth1020i0@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr1020i0 state UP group default qlen 1000
link/ether fe:18:7f:56:10:9b brd ff:ff:ff:ff:ff:ff link-netnsid 2
14: fwbr1020i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether ee:c5:b8:ad:be:bf brd ff:ff:ff:ff:ff:ff
15: fwpr1020p0@fwln1020i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master vmbr2 state UP group default qlen 1000
link/ether 8a:5a:6d:1b:db:a1 brd ff:ff:ff:ff:ff:ff
16: fwln1020i0@fwpr1020p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master fwbr1020i0 state UP group default qlen 1000
link/ether ee:c5:b8:ad:be:bf brd ff:ff:ff:ff:ff:ff
ブリッジ
root@prox:~# bridge link
2: nic0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr0 state forwarding priority 32 cost 5
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr1 state forwarding priority 32 cost 5
4: enp0s9: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr2 state forwarding priority 32 cost 5
5: enp0s10: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 master vmbr3 state disabled priority 32 cost 100
11: veth1001i0@nic0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr1 state forwarding priority 32 cost 2
12: veth1010i0@nic0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr2 state forwarding priority 32 cost 2
13: veth1020i0@nic0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master fwbr1020i0 state forwarding priority 32 cost 2
15: fwpr1020p0@fwln1020i0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master vmbr2 state forwarding priority 32 cost 2
16: fwln1020i0@fwpr1020p0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master fwbr1020i0 state forwarding priority 32 cost 2
root@prox:~# bridge vlan
port vlan-id
nic0 1 PVID Egress Untagged
enp0s8 1 PVID Egress Untagged
enp0s9 1 PVID Egress Untagged
10
20
enp0s10 1 PVID Egress Untagged
2
3
...
4092
4093
4094
vmbr0 1 PVID Egress Untagged
vmbr1 1 PVID Egress Untagged
vmbr2 1 PVID Egress Untagged
vmbr3 1 PVID Egress Untagged
veth1001i0 1 PVID Egress Untagged
veth1010i0 10 PVID Egress Untagged
veth1020i0 1 PVID Egress Untagged
fwbr1020i0 1 PVID Egress Untagged
fwpr1020p0 20 PVID Egress Untagged
fwln1020i0 1 PVID Egress Untagged
コンテナ
IPアドレス取得状況
CUI
root@debian20:~# ip addr
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0@if13: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether bc:24:11:94:9d:17 brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 10.3.3.1/24 brd 10.3.3.255 scope global dynamic eth0
valid_lft 82820sec preferred_lft 82820sec
inet6 fe80::be24:11ff:fe94:9d17/64 scope link proto kernel_ll
valid_lft forever preferred_lft forever```
GUI
Gateway(DHCPサーバー)へのping
root@debian20:~# ping 10.3.3.254 -c 3
PING 10.3.3.254 (10.3.3.254) 56(84) bytes of data.
64 bytes from 10.3.3.254: icmp_seq=1 ttl=255 time=11.9 ms
64 bytes from 10.3.3.254: icmp_seq=2 ttl=255 time=1.93 ms
64 bytes from 10.3.3.254: icmp_seq=3 ttl=255 time=1.97 ms
--- 10.3.3.254 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2074ms
rtt min/avg/max/mdev = 1.934/5.278/11.935/4.707 ms
Wiresharkで取得したデータ
ProxmoxとSwitchとの間で取得した、上記のping実行時のデータである。
VLANタグが確認できる。
EOF








