我只需要将 1 个主机物理端口专用于 1 个来宾虚拟端口,无需 libvirt 的帮助。
主机有:
- 2 个物理接口:eth0 和 eth1
- 1个虚拟网桥(vmbr0),包括所有VM的虚拟接口
- eth0 与 vmbr0 处于桥接模式。由于所有访客和主机都位于同一子网 (192.168.247.0/24)。
这是我的配置/etc/network/interfaces
auto lo
iface lo inet loopback
iface eth0 inet manual
iface eth1 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.247.2
netmask 255.255.255.0
gateway 192.168.247.1
bridge_ports eth0
bridge_stp off
bridge_fd 0
eth1 必须连接到 ISP 调制解调器。因此 eth1 将退出互联网。我想将 eth1 专用于虚拟防火墙,该防火墙是主机中的虚拟机之一。虚拟防火墙将完成所有路由工作,而不是主机。
据我所知,对于该任务,我必须使用 MacVTap (macvlan),但我看到的所有指南都是针对 KVM+libvirt,而且我没有 libvirt!Proxmox 正在执行所有“用户友好的任务”
正如您可以在下面看到的,现在只启用了 1 个虚拟机,它是接口 Tap101i0 和 Tap101i1,其中 Tap101i0 假设位于 vmbr0 中,并与主机的 eth0 共享相同的子网掩码。并且tap101i1必须与主机的eth1 100%绑定,因此它将退出互联网。
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast master vmbr0 state UP mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff
3: eth1: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:67 brd ff:ff:ff:ff:ff:ff
6: tap101i0: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether 06:97:77:30:cc:a7 brd ff:ff:ff:ff:ff:ff
7: tap101i1: <BROADCAST,MULTICAST,PROMISC,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UNKNOWN mode DEFAULT group default qlen 1000
link/ether ce:b4:f3:40:38:0d brd ff:ff:ff:ff:ff:ff
8: vmbr0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000
link/ether 00:15:17:50:95:66 brd ff:ff:ff:ff:ff:ff
答案1
您可以使用 macvlan 来实现此目的。
- 在 eth1 上创建 macvlan 接口:
ip link add link eth1 name macvlan1 type macvlan mode bridge
- 为 macvlan 接口分配 IP 地址。 VM 将使用此 IP 地址:
ip addr add 192.168.247.3/24 dev macvlan1
- 调出 macvlan 接口:
ip link set macvlan1 up
- 获取虚拟机的PID(替换
vm-name
为实际名称):ps aux | grep [v]m-name
- 将 macvlan 接口添加到虚拟机的网络命名空间(替换
PID
为实际的 PID):ip link set macvlan1 netns PID
- 打开虚拟机内的 macvlan 接口(再次替换 PID):
ip netns exec PID ip link set macvlan1 up
现在,虚拟机应该能够使用 eth1,就像直接连接到它一样。该虚拟机的 IP 地址为 192.168.247.3,并且能够通过 eth1 与互联网进行通信。