外观
Linux Bridge 是什么,vmbr0 为什么长这样
装完 PVE,节点 → System → Network 里有两个东西:一块物理网卡(名字像 enp3s0),和一个叫 vmbr0 的网桥。物理网卡上没有 IP,IP 在 vmbr0 上。这篇解释为什么。
网桥就是一台虚拟交换机
把 vmbr0 想象成机箱里的一台交换机:
text
物理网络(你家的路由器)
│
enp3s0(物理网卡 = 交换机的上联口)
│
┌────────┴────────┐
│ vmbr0 │ ← 虚拟交换机
└─┬─────┬─────┬───┘
│ │ │
宿主机 VM100 CT101
的 IP 的网卡 的网卡物理网卡是这台虚拟交换机的上联口,所有客户机的虚拟网卡插在它的其他口上,宿主机自己也在上面占一个口(这就是 IP 在 vmbr0 上的原因)。
这样做的结果是:客户机和宿主机、和你家路由器下的其他设备在同一个二层网络里。客户机可以从路由器拿 DHCP 地址,你可以从手机直接访问客户机的服务。这种模式叫桥接,是 PVE 的默认,也是绝大多数场景想要的。
读懂配置文件
网络配置的唯一真相在 /etc/network/interfaces:
sh
cat /etc/network/interfaces典型内容:
text
auto lo
iface lo inet loopback
iface enp3s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.1.10/24
gateway 192.168.1.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0逐行看:
| 行 | 含义 |
|---|---|
iface enp3s0 inet manual | 物理网卡启用,但不配 IP——它只负责把包送进网桥 |
auto vmbr0 | 开机自动启用这个接口 |
address 192.168.1.10/24 | 宿主机的管理 IP |
bridge-ports enp3s0 | 这个网桥的上联口是哪块物理网卡 |
bridge-stp off | 关闭生成树协议,家庭环境不需要 |
bridge-fd 0 | 转发延迟为 0,接口起来后立即转发 |
网卡名字为什么这么怪
enp3s0 是 systemd 的「可预测网卡命名」:en = ethernet,p3 = PCI 总线 3,s0 = 插槽 0。它的好处是不会因为插拔顺序变化而改变,不像老式的 eth0。换了主板或网卡,这个名字会变,届时需要同步改配置文件。
客户机怎么接上来
创建虚拟机或容器时,网络那一步要选 Bridge,默认就是 vmbr0。
虚拟机的网卡配置里还有几项值得知道:
| 选项 | 说明 |
|---|---|
| Model | 建议 VirtIO (paravirtualized),性能最好,但客户机要有驱动。Windows 需要装 VirtIO 驱动 |
| Bridge | 接到哪个网桥 |
| VLAN Tag | 留空即可,除非你在做 VLAN |
| Firewall | PVE 防火墙开关,见下文 |
| MAC address | 自动生成。不要手动设成和别的设备相同的值 |
Model 选 VirtIO 还是 E1000
装系统时如果客户机认不到 VirtIO 网卡(老系统、某些安装器),可以临时用 E1000 或 Realtek 把系统装好,装完驱动再换回 VirtIO。E1000 是模拟真实硬件,兼容性好但 CPU 开销明显更高。
防火墙的三层开关
PVE 的防火墙有点绕:它有三个层级的开关,而且是与的关系——任何一层关着,规则就不生效。
| 层级 | 位置 | 作用 |
|---|---|---|
| 数据中心 | 数据中心 → 防火墙 → 选项 | 总开关 |
| 节点 | 节点 → 防火墙 → 选项 | 保护宿主机自己 |
| 客户机 | 虚拟机/容器 → 防火墙 → 选项,以及网卡上的 Firewall 勾选框 | 保护单个客户机 |
开总开关之前先想清楚
数据中心级防火墙的默认入站策略是 DROP。如果你没有先放行 8006(Web UI)和 22(SSH)就打开它,会把自己关在门外。
PVE 默认会为管理接口保留必要的放行规则,但不同版本行为可能不同。稳妥做法:先在节点级别配好放行规则,确认规则列表无误,并且确保你有物理控制台可用,再打开总开关。
家庭内网环境里,多数人不开 PVE 防火墙,靠路由器隔离。这是可以接受的取舍,前提是你的内网确实可信。
其他网络模式
桥接不是唯一选择,但另外两种用得少:
- NAT:客户机在一个内部网段,通过宿主机做地址转换出去。外面主动访问不到客户机。适合不想让客户机占用内网 IP 的场景,需要手动配置。
- Routed:宿主机做路由。ISP 只给一个 MAC 地址的托管环境会用到,家庭环境基本不用。
PVE 还有 SDN(软件定义网络)功能,能做更复杂的拓扑,属于网络进阶的内容。
检查结果
sh
# 1. 网桥存在且有 IP
ip -4 addr show vmbr0
# 2. 网桥上挂了哪些接口(包括客户机的 tap/veth)
bridge link show
# 3. 网关通
ping -c 3 192.168.1.1
# 4. DNS 能解析
ping -c 3 download.proxmox.com开一台客户机,在里面确认能拿到和宿主机同网段的 IP、能 ping 通网关,桥接就工作正常。
常见问题
客户机拿不到 IP。 依次查:网卡是否接在 vmbr0 上 → 客户机里网卡是否 up → bridge link show 里有没有这个客户机的接口 → 客户机网卡 Model 是否为客户机系统所支持。
客户机之间能通,但出不去。 检查 bridge-ports 里的物理网卡名是否正确,以及网线是否插在那块网卡上(多网口机器容易插错)。
改了网卡 Model 之后客户机网络没了。 Linux 客户机可能把新网卡认成 eth1 而配置还在 eth0 上。进客户机用 ip a 看实际网卡名。