生存是唯一的长路

  • 资料来源:
    • pve下使用无线网卡做桥接的另一种解决方案:四地址模式
    • Proxmox配置无线桥接(代理ARP桥)
  • 更新
1
2025.06.10 初始

导语

比较无语的需求:搬家导致 NAS 服务器(PVE All-in-One)实在没法插网线。虽然 WIFI 网卡换到了 AX210,理论上性能足够,但实际操作起来才发现,在 PVE 下实现无线桥接,让虚拟机获得与物理机同网段的 IP,简直是个天坑。

本文旨在记录两种主流的 PVE 无线桥接方案:四地址模式 (4addr)代理 ARP 桥 (Proxy ARP Bridge),以及我个人的实践结果。

为什么无线不能直接桥接?

简单来说,标准的 802.11 无线协议帧格式只包含三个 MAC 地址,不足以在桥接场景下同时标识源设备、目标设备和无线接入点(AP)。这导致无线网卡默认无法像有线网卡一样直接加入到 PVE 的 vmbr0 网桥中。

方案一:四地址模式 (4addr) - 失败的尝试

四地址模式通过在 802.11 帧中增加第四个 MAC 地址字段,理论上解决了无线桥接的问题。这是最理想的方案,因为它能实现真正的二层桥接,效果与有线无异。

检查与配置

  1. 检查网卡和驱动支持

    1
    iw list

    在输出的 Supported interface modes 中查找 AP/VLANmesh point。我的 AX210 显示完全支持。

  2. 开启 4addr 模式

    1
    2
    # 将 wlan0 替换为你的无线网卡名称
    iw dev wlan0 set 4addr on
  3. 写入开机自启
    可以将命令写入 /etc/network/interfacespost-up 指令中,实现开机自动开启。

实践结果

失败。尽管 iw list 显示我的 AX210 网卡支持该模式,并且上游路由器也理应支持 WDS,但始终无法成功建立桥接。虚拟机无法获取到 IP,网络不通。具体原因不明,但这条看似最完美的道路最终走不通。

方案二:代理 ARP 桥 - 可行的妥协

既然真正的二层桥接走不通,退而求其次,采用三层的代理 ARP (Proxy ARP) 方案。这种方式通过欺骗 ARP 请求,让 PVE 主机响应针对虚拟机的 ARP 请求,并将流量进行转发,从而模拟出桥接的效果。

配置步骤

1 安装依赖

1
2
apt -y update
apt -y install wpasupplicant parprouted

parprouted 是实现代理 ARP 的核心工具。

2 开启 IPv4 转发
编辑 /etc/sysctl.conf,添加或取消注释以下行, 然后执行 sysctl -p 使其生效.

1
net.ipv4.ip_forward = 1

3 配置 WIFI 连接

1
2
# 将 ssid 和 password 替换为你的 WIFI 名称和密码
wpa_passphrase ssid password > /etc/wpa_supplicant/wpa_supplicant-wlan0.conf

启动并设置开机自启:

  • 如果是其他的配置文件名称, 记得替换 @wlan0
1
2
systemctl start [email protected]
systemctl enable [email protected]

1-3 本质是连接上 WIFI, 但是没有指定上分配 IP

4 修改网络接口配置
这是最关键的一步。编辑 /etc/network/interfaces,将原有的 vmbr0 配置进行修改。

修改前 (示例)**:

1
2
3
4
5
6
7
auto vmbr0
iface vmbr0 inet static
address 192.168.0.6/24
gateway 192.168.0.1
bridge_ports enp2s0
bridge_stp off
bridge_fd 0

修改后 (最终配置):

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# 物理有线网卡接口,保留但通常不用
iface enp2s0 inet manual

# PVE 管理网桥,移除物理接口,IP 设为 static none 或者不设置
auto vmbr0
iface vmbr0 inet manual
# address 还是要有, parprouted 需要, 这一点和原资料不同, 疑似版本变更
address 192.168.0.6/24
# gateway 192.168.0.1 vmbr 绝对不要有 gateway 否则冲突了
bridge_ports none
bridge_stp off
bridge_fd 0

# 无线网卡接口配置
auto wlan0
iface wlan0 inet static
# 此处 IP 必须是 PVE 主机的 IP
address 192.168.0.6/24
gateway 192.168.0.1
# 关键:在接口启动后运行 parprouted
post-up /usr/sbin/parprouted vmbr0 wlan0
post-down /usr/bin/killall /usr/sbin/parprouted

注意:
- vmbr0 不再桥接任何物理端口 (bridge_ports none)。
- PVE 的 IP 地址和网关现在配置在 wlan0 接口上。
- post-up 指令是核心,它在 wlan0 连接后,启动 parprouted 来监听 vmbr0wlan0 之间的数据包,实现代理 ARP。

5 重启网络服务或重启 PVE

1
2
systemctl restart networking
# 或者直接 reboot

重启后,PVE 主机通过 wlan0 上网,而虚拟机依旧桥接到 vmbr0。此时,虚拟机的网络请求会通过 parprouted 被正确转发到 wlan0,实现了与主路由同网段。

代理 ARP 的缺点

这种方式并非完美的二层桥接,其最大的缺点在于对多播 (multicast) 和广播 (broadcast) 的支持不佳

例如,我使用的 Home Assistant (HA) 中,大量设备依赖 updp 协议进行自发现和通信。在代理 ARP 桥接模式下,这些基于组播的实现几乎全部失效,导致设备离线。目前对此没有找到特别好的解决办法,算是一个必须接受的妥协。

其次: 这里一定要配置 wlan0 静态 ip, 尝试 dhcp 时候时常遇到 parprouted 启动失败;

总结

对于 PVE 无线桥接的需求,四地址模式 (4addr) 是理论上的最优解,但实践中可能因设备或驱动兼容性问题而失败。代理 ARP 桥 是一种可行的替代方案,配置相对简单,能满足大部分虚拟机的联网需求,但需要注意它对组播和广播的限制。如果你的应用严重依赖局域网设备发现(如 DLNA, mDNS, UPnP),可能会遇到问题。

最终,有线永远是服务器最稳定可靠的选择。

  • clixon plugin 备忘录
  • 更新
1
2025.05.00 初始
阅读全文 »

  • clixon cli 备忘录
  • 更新
1
2025.05.00 初始 初始
阅读全文 »