我试图做一些应该很容易的事情但由于某种原因它没有奏效。
我想将两个 LXD 容器桥接到同一个 VLAN。
为此,我在物理接口上创建了 VLAN 接口,然后将其分配给 LXD 容器使用的相同虚拟网桥。
这是我用来创建接口和桥的脚本
#!/usr/bin/env bash
sudo ip link add link $1 name $1.$2 type vlan id $2
sudo ifconfig $1.$2 $3 # this is useless I think
sudo ip link add vnet$2 type bridge
sudo ip link set vnet$2 up
sudo ip link set $1.$2 up
sudo ip link set dev $1.$2 master vnet$2
read -n 1 -s -r -p "Press any key to destroy..."
sudo ip link del vnet$2
sudo ip link del $1.$2
这是容器使用的配置文件
lxc profile show vlan
config: {}
description: Default LXD profile
devices:
eth0:
name: eth0
nictype: bridged
parent: vnet2
type: nic
root:
path: /
pool: default
type: disk
name: vlan
used_by:
- /1.0/containers/lxd1
我为两个容器在同一个子网中分配了两个 IP 地址,但是如果我尝试使用 tcpdump 进行 ping 操作,我可以看到两个主机中的一个接收 ARP 请求并发送答复,而另一个没有收到答复。
有什么建议吗?
这张图片代表我的试验台
+-------------------------+ +-------------------------+
| Host1 | | Host2 |
|-------------------------| |-------------------------|
| | | |
| +---------+ +----------+ +----------+ +----------+ |
| | ens2.2 +-------> |ens2 <---+ ens2 | <----+ ens2.2 | |
| +----^----+ +----------+ +----------+ +------^---+ |
| | | | | |
| +----+----+ | | +------+---+ |
| | vnet2 | | | | vnet2 | |
| +---^-----+ | | +------^---+ |
| | | | | |
| | | | | |
| +-----+-------------+ | | +------------+-----+ |
| | LXD Container | | | | LXD Container | |
| +-------------------+ | | +------------------+ |
| | | |
+-------------------------+ +-------------------------+
答案1
实际上 LXD 和 Bridge 配置正常,但由于某种原因,交换机无法管理 VLAN