- 路由器不支持多 ip
物理线路连接问题:
- 确定物理网口和 nic 的对应关系:可以使用“闪烁灯光”命令。执行后,对应的物理网口灯会持续闪烁 10 秒。去机房/机柜后面看哪个灯在闪,就能确认线有没有插对。
bashethtool -p nic3 10
ip route
ip a
监听网卡上的 ARP 数据包发现个网口现在接收到的全是 192.168.1.x 网段的广播包,说明网口连接到的交换机,连接到了路由器 LAN 口。交换机变成了内网交换机。
tcpdump -i nic3 -n -e arp
宿主机 ip route 结果
default via 220.163.7.33 dev vmbr1 proto kernel onlink192.168.1.0/24 dev vmbr0 proto kernel scope link src 192.168.1.150220.163.7.32/29 dev vmbr1 proto kernel scope link src 220.163.7.36
路由表配置:
- 默认路由正确:
default via 220.163.7.33 dev vmbr1确保了所有访问互联网的流量都会尝试通过公网网口发出。 - 网段隔离清晰:内网流量走
vmbr0,公网流量走vmbr1,互不干扰。
绑定 IP
修改 PVE 宿主机的 vmbr1 配置,删掉它的 IP 地址和网关,只保留网桥和物理口的绑定关系。这样宿主机在外网就“隐身”了,更安全。
虚拟机手动配置 IP (Netplan 方式)
cat <<EOF | sudo tee /etc/netplan/00-installer-config.yamlnetwork:version: 2renderer: networkdethernets:ens18:addresses: [220.163.7.35/29]nameservers:addresses: [8.8.8.8, 114.114.114.114]routes:- to: defaultvia: 220.163.7.33EOF
sudo netplan apply
我 vmbr0 里面配的地址是 192.168.1.150,为什么我在虚拟机里使用 vmbr0 后,配 ip 192.168.126 也能行?
在 PVE 中,vmbr0 是一个网桥(Bridge),本质上是一台虚拟的逻辑上“傻瓜交换机”。
- 宿主机的 IP (192.168.1.150):可以理解为 PVE 自己的管理口也“插”在了这台虚拟交换机的一个端口上。
- 虚拟机的 IP (192.168.1.126):是虚拟机通过虚拟网线(tap 设备)“插”在了这台虚拟交换机的另一个端口上。
因为它们都插在同一个“交换机”上,只要它们在同一个网段(都是 192.168.1.x),它们就能互通,也能通过 vmbr0 绑定的物理网卡出去找路由器。网桥不关心你给虚拟机配了什么 IP。它的工作原理是在**二层(MAC 地址层)**转发数据包。
只要满足以下条件,就能行:
- 二层连通:虚拟机的网卡挂载在
vmbr0上。 - 三层同段:虚拟机配的是
192.168.1.126(你可能漏打了一个1),只要它和宿主机192.168.1.150都在192.168.1.0/24网段内。 - 网关指向正确:只要虚拟机的网关也指向你的内网路由器(比如
192.168.1.1),它就能上网。

