如何创建虚拟网络接口并将其连接到网桥

How to Create a virtual network interface and connect it to a bridge

我正在尝试使用 Arch Linux 上的网桥创建虚拟 qemu 机器和主机网络,以测试我编写的分布式程序。我找到了许多关于使用桥上主机的物理 NIC 连接到 VM 的方法。这很好用。但是,我不希望 VM 对外部网络可见,而是在主机上创建一个虚拟接口来连接到 VM。这是我在创建网桥并在其上启动 VM 后到目前为止所做的尝试:

ip tuntap add tap2 mode tap
ip link set tap2 up
ip addr add dev tap2 10.10.10.2/24
ip link set tap2 master br0

由于我无法从主机访问虚拟机,所以我一定是遗漏了什么。 ip link 输出为:

➜  ~ ip link                         
[...]
7: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
    link/ether e6:69:29:67:cb:41 brd ff:ff:ff:ff:ff:ff
10: tap2: <NO-CARRIER,BROADCAST,MULTICAST,UP> mtu 1500 qdisc fq_codel master br0 state DOWN mode DEFAULT group default qlen 1000
    link/ether e6:69:29:67:cb:41 brd ff:ff:ff:ff:ff:ff

另外,路由显示为down:

➜  ~ ip route
[...]
10.10.10.0/24 dev tap2 proto kernel scope link src 10.10.10.2 linkdown 

有人知道我错过了什么吗?

不需要设置另一个虚拟接口,因为可以为网桥分配一个 IP:

ip addr add dev br0 <ip>

这可以用于与网桥上的其他设备通信,如果这些设备的 IP 地址在同一子网中