桥接网络的正确隔离
我正在尝试建立一个与公共网络空间隔离的专用网络空间。
在公共空间中,我希望我的来宾操作系统 NIC 通过 DHCP 服务器获取其 IP 地址。
这是我想到的网络拓扑:
问题
我遇到的问题是ens3
并且ens4
没有被正确隔离。当我启动来宾虚拟机时:
ens3 IP: 192.168.1.60 <-- Good, ens3 is getting it's IP via DHCP server!
ens4 IP: 192.168.1.61 <-- Uh-Oh, ens4 is also getting IP via DHCP Server. Networks are not properly isolated!
交通必须从ens3
到ens4
或者从br0
到br1
不知何故。
通过 iproute2 设置 br0
以下是我的设置方式br0
(不应允许主机服务器和来宾虚拟机之间的流量):
# ip link set eth3 up
# ip link add br0 type bridge
# ip link set dev eth3 master br0
# ip tuntap add dev tap0 mode tap
# ip link set tap0 master br0
# ip link set dev br0 type bridge vlan_filtering 1
# bridge vlan del dev br0 vid 1 self
# ip link set dev br0 up
通过 iproute2 设置 br1
以下是我的设置方式br1
(允许主机服务器和来宾虚拟机之间的流量):
# ip link set eth2 up
# ip link add br1 type bridge
# ip link set dev eth2 master br1
# ip tuntap add dev tap1 mode tap
# ip link set dev tap1 master br1
# ip link set dev br1 up
通过 qemu 启动来宾 VM
这是我的 qemu 启动命令:
$ qemu-system-x86_64 \
-m 4G \
-enable-kvm \
-cpu host \
-smp 2 \
-net nic,macaddr=52:54:00:00:00:05 \
-net tap,ifname="tap0",script=no,downscript=no \
-net nic,macaddr=52:54:00:00:00:10 \
-net tap,ifname="tap1",script=no,downscript=no \
-vga virtio -display gtk,gl=on \
-drive format=qcow2,file=disk.cow,index=0,if=virtio
当我的来宾虚拟机运行后,我将水龙头设置为向上
# ip link set dev tap0 up
# ip link set dev tap1 up
问题
如何使用 iproute2 正确设置此网络以将br0
(eth3
、tap0
、 & ens3
)与主机服务器的其余部分和我的专用网络空间隔离?