首页 最新 热门 推荐

  • 首页
  • 最新
  • 热门
  • 推荐

PVE 网卡冗余配置

  • 25-04-22 19:21
  • 3161
  • 12229
juejin.cn

在 Proxmox VE (PVE) 环境中配置网卡冗余,实现有线网卡和无线网卡的混合使用。通过 Linux Bonding 技术,可以在保持单一 IP 地址的情况下,实现网络连接的自动切换和冗余备份。

应用场景

在我的使用环境中,由于物理限制(显示器和网线接口位于不同位置),需要在连接显示器时临时断开网线。通过配置网卡冗余,可以:

  • 实现有线网卡和无线网卡的无缝切换
  • 保持 WebUI/SSH 访问的 IP 地址不变
  • 提供网络连接的冗余保障

网络结构

bash
代码解读
复制代码
+----------------------------+ | PVE 主机 | | (WebUI / SSH / VM) | +-------------+--------------+ | +----------+-----------+ | vmbr0 (桥接接口) | <-- 主机 IP: 192.168.1.10 +----------+-----------+ 网关: 192.168.1.1 | +----------+-----------+ | bond0 (网卡绑定) | <-- 模式: active-backup +----------+-----------+ / \ / \ +--------+ +---------+ | | [ eno1 ] [ wlxe84e0679ad17 ] (主有线网卡) (备用无线网卡) active backup

网络层级关系:

scss
代码解读
复制代码
vmbr0 (192.168.1.10) └─ bond0 (active-backup) ├─ eno1 (有线网卡,主用) └─ wlxe84e0679ad17 (无线网卡,备用)

前期准备

安装必要工具

bash
代码解读
复制代码
apt update apt install wpasupplicant iw -y

说明:

  • wpasupplicant:用于处理 Wi-Fi 网络的 WPA/WPA2 安全认证
  • iw:用于配置无线网卡接口的现代化工具,替代了旧版的 iwconfig

注意:请确保在安装工具前系统能够连接网络,离线安装这些包会比较复杂。

识别网卡设备

使用以下命令查看系统中的网络接口:

bash
代码解读
复制代码
ip link

输出示例:

bash
代码解读
复制代码
1: lo: mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000 link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00 2: eno1: mtu 1500 qdisc pfifo_fast master vmbr0 state UP mode DEFAULT group default qlen 1000 link/ether b4:xx:99:60:xx:d2 brd ff:ff:ff:ff:ff:ff altname enp0s31f6 3: wlxe84e0679ad17: mtu 1500 qdisc noop state DOWN mode DEFAULT group default qlen 1000 link/ether e8:xx:06:79:xx:17 brd ff:ff:ff:ff:ff:ff 4: vmbr0: mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000 link/ether b4:xx:99:60:xx:d2 brd ff:ff:ff:ff:ff:ff

网络接口说明:

  • lo:本地回环接口
  • eno1:内置有线网卡
  • wlxe84e0679ad17:USB 无线网卡
  • vmbr0:PVE 默认的桥接网络接口

配置网络接口

修改网络配置文件

编辑网络配置文件:

bash
代码解读
复制代码
nano /etc/network/interfaces

配置内容:

bash
代码解读
复制代码
# 回环接口 auto lo iface lo inet loopback # 有线网卡配置 auto eno1 iface eno1 inet manual # 无线网卡配置 auto wlxe84e0679ad17 iface wlxe84e0679ad17 inet manual # 配置网卡绑定 auto bond0 iface bond0 inet manual bond-slaves eno1 wlxe84e0679ad17 bond-mode active-backup bond-primary eno1 bond-miimon 100 bond-downdelay 200 bond-updelay 200 # 配置桥接接口 auto vmbr0 iface vmbr0 inet static address 192.168.1.10/24 gateway 192.168.1.1 bridge-ports bond0 bridge-stp off bridge-fd 0 source /etc/network/interfaces.d/*

配置参数说明:

  1. 网卡绑定(bond0)配置:

    • bond-slaves:指定要绑定的物理网卡
    • bond-mode active-backup:使用主备模式,同一时间只有一个网卡工作
    • bond-primary:指定主用网卡
    • bond-miimon:链路监控间隔(毫秒)
    • bond-downdelay:确认链路故障的延迟时间(毫秒)
    • bond-updelay:确认链路恢复的延迟时间(毫秒)
  2. 桥接接口(vmbr0)配置:

    • bridge-ports:指定要桥接的接口
    • bridge-stp:禁用生成树协议
    • bridge-fd:设置转发延迟

应用网络配置:

bash
代码解读
复制代码
ifreload -a # 或者 systemctl restart networking

验证配置:

bash
代码解读
复制代码
# 检查网络接口状态 ip a # 检查路由表 ip r # 检查网卡绑定状态 cat /proc/net/bonding/bond0

配置WIFI网卡连接到网络

配置无线网络连接

创建 wpa_supplicant 配置文件:

bash
代码解读
复制代码
nano /etc/wpa_supplicant/wpa_supplicant-wlxe84e0679ad17.conf

注意:配置文件命名格式为 wpa_supplicant-<网卡名称>.conf,这是 systemd 服务查找配置文件的标准格式。

配置文件内容:

bash
代码解读
复制代码
ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=CN network={ ssid="您的Wi-Fi名称" psk="您的Wi-Fi密码" key_mgmt=WPA-PSK disabled=0 scan_ssid=1 priority=1 }

配置参数说明:

  1. 基础配置

    • ctrl_interface:指定控制接口目录和访问权限
    • update_config:允许动态更新配置
    • country:指定国家/地区代码,影响频段和功率限制
  2. 网络配置

    • ssid:Wi-Fi 网络名称
    • psk:Wi-Fi 密码
    • key_mgmt:认证方式(WPA-PSK)
    • disabled:是否禁用该配置(0表示启用)
    • scan_ssid:启用对隐藏网络的扫描
    • priority:连接优先级,数值越大优先级越高

启用无线网络服务

创建并启用 wpa_supplicant 服务:

bash
代码解读
复制代码
# 创建服务链接 sudo ln -s /lib/systemd/system/[email protected] /etc/systemd/system/[email protected] # 设置开机启动 sudo systemctl enable wpa_supplicant@wlxe84e0679ad17 # 启动服务 sudo systemctl start wpa_supplicant@wlxe84e0679ad17

验证服务状态:

bash
代码解读
复制代码
sudo systemctl status wpa_supplicant@wlxe84e0679ad17

检查无线连接状态:

bash
代码解读
复制代码
iw dev wlxe84e0679ad17 link

经常掉线的问题

在配置完 bonding 后,访问 PVE 的 webui 和 ssh 隔一段时间都会出现网络错误和卡掉的情况。

禁用wifi 网卡后就没事了:

bash
代码解读
复制代码
ip link set wlxe84e0679ad17 down

查询日志:

bash
代码解读
复制代码
journalctl -u wpa_supplicant@wlxe84e0679ad17 -n 100
bash
代码解读
复制代码
Apr 21 22:29:44 pve wpa_supplicant[738]: wlxe84e0679ad17: WPA: Key negotiation completed with dc:xx:93:b7:xx:9e [PTK=CCMP GTK=CCMP] Apr 21 22:29:44 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-CONNECTED - Connection to dc:xx:93:b7:xx:9e completed [id=0 id_str=] Apr 21 22:29:44 pve wpa_supplicant[738]: wlxe84e0679ad17: TRANSITION-DISABLE 01 Apr 21 22:30:44 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-DISCONNECTED bssid=dc:xx:93:b7:xx:9e reason=4 locally_generated=1 Apr 21 22:30:44 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD Apr 21 22:30:44 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=USER type=COUNTRY alpha2=CN Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: SME: Trying to authenticate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz) Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: Trying to associate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz) Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: Associated with dc:xx:93:b7:xx:9e Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=CN Apr 21 22:30:45 pve wpa_supplicant[738]: RRM: Ignoring radio measurement request: Not associated Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: WPA: Key negotiation completed with dc:xx:93:b7:xx:9e [PTK=CCMP GTK=CCMP] Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-CONNECTED - Connection to dc:xx:93:b7:xx:9e completed [id=0 id_str=] Apr 21 22:30:45 pve wpa_supplicant[738]: wlxe84e0679ad17: TRANSITION-DISABLE 01 Apr 21 22:30:56 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-DISCONNECTED bssid=dc:xx:93:b7:xx:9e reason=4 locally_generated=1 Apr 21 22:30:56 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD Apr 21 22:30:56 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=USER type=COUNTRY alpha2=CN Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: SME: Trying to authenticate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz) Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: Trying to associate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz) Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: Associated with dc:xx:93:b7:xx:9e Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-SUBNET-STATUS-UPDATE status=0 Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=COUNTRY_IE type=COUNTRY alpha2=CN Apr 21 22:30:57 pve wpa_supplicant[738]: RRM: Ignoring radio measurement request: Not associated Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: WPA: Key negotiation completed with dc:xx:93:b7:xx:9e [PTK=CCMP GTK=CCMP] Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-CONNECTED - Connection to dc:xx:93:b7:xx:9e completed [id=0 id_str=] Apr 21 22:30:57 pve wpa_supplicant[738]: wlxe84e0679ad17: TRANSITION-DISABLE 01 Apr 21 22:31:08 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-DISCONNECTED bssid=dc:xx:93:b7:xx:9e reason=4 locally_generated=1 Apr 21 22:31:08 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=CORE type=WORLD Apr 21 22:31:08 pve wpa_supplicant[738]: wlxe84e0679ad17: CTRL-EVENT-REGDOM-CHANGE init=USER type=COUNTRY alpha2=CN Apr 21 22:31:15 pve wpa_supplicant[738]: wlxe84e0679ad17: SME: Trying to authenticate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz) Apr 21 22:31:15 pve wpa_supplicant[738]: wlxe84e0679ad17: Trying to associate with dc:xx:93:b7:xx:9e (SSID='ci0n' freq=2447 MHz)

日志很明确了:Wi-Fi 接口 wlxe84e0679ad17 在频繁断线重连,每隔 10~60 秒就掉线,这正是导致 WebUI 报错 / SSH 卡顿的根源。

在 PVE webui 的系统日志中也可以看到这个网卡在刷屏

查看这个网卡的驱动:

bash
代码解读
复制代码
ethtool -i wlxe84e0679ad17
bash
代码解读
复制代码
driver: rtl8192cu version: 6.8.12-9-pve firmware-version: N/A expansion-rom-version: bus-info: 1-4:1.0 supports-statistics: yes supports-test: no supports-eeprom-access: no supports-register-dump: no supports-priv-flags: no

这个网卡有三个驱动,以下是比较:

特性rtl8192curtl8xxxurtl8188eus (Aircrack-ng)
来源Realtek 官方(也有社区版)Linux 内核主线Aircrack-ng 社区维护
支持芯片RTL8192CU、RTL8188CU 等RTL8188CU、RTL8192CU、RTL8723BU 等RTL8188EU、RTL8188EUS 等
内核支持不包含,需手动安装已集成内核,开箱即用不包含,需自行编译
Monitor Mode 支持否(或需打补丁)否是(默认支持)
Packet Injection 支持否(或需打补丁)否是(默认支持)
驱动稳定性一般,需自行调试高,适合普通用途中,适用于特定任务
安装难度中,需要编译或 DKMS低,系统自动加载高,需要手动编译安装
社区活跃度低(已停止维护)高(Linux 内核维护)中等(活跃在安全圈)
典型用途普通无线联网普通无线联网(推荐)Wi-Fi 安全测试(抓包、破解)
兼容性问题常见,需手动禁用其他驱动少见,推荐优先使用可能与内核冲突,需 blacklist 其他驱动

如表格所示,我们应该切换到 rtl8xxxu 驱动。

bash
代码解读
复制代码
# 禁用当前驱动 echo "blacklist rtl8192cu" | tee /etc/modprobe.d/blacklist-rtl8192cu.conf # 卸载旧驱动 modprobe -r rtl8192cu # 加载新驱动 modprobe rtl8xxxu # 重启系统使更改生效 reboot

附录:网卡管理

添加新网卡

还有一张玩黑苹果剩下的 BCM94360,天线不见了,改天要替换掉现在的 usb 网卡。

如需添加新的无线网卡(例如 wlan2),按以下步骤操作:

  1. 修改网络配置:
bash
代码解读
复制代码
nano /etc/network/interfaces
diff
代码解读
复制代码
+ auto wl2 + iface wl2 inet manual auto bond0 iface bond0 inet manual + bond-slaves eno1 wlxe84e0679ad17 wlan2 - bond-slaves eno1 wlxe84e0679ad17
  1. 配置无线连接:
bash
代码解读
复制代码
# 创建 wpa_supplicant 配置 nano /etc/wpa_supplicant/wpa_supplicant-wlan2.conf # 启用服务 systemctl enable wpa_supplicant@wlan2 systemctl start wpa_supplicant@wlan2
  1. 应用更改:
bash
代码解读
复制代码
ifreload -a
  1. 检查连接状态
bash
代码解读
复制代码
iw dev wlan2 link

移除网卡

如需移除网卡(例如 wlxe84e0679ad17),步骤如下:

  1. 修改网络配置:
bash
代码解读
复制代码
nano /etc/network/interfaces
diff
代码解读
复制代码
- auto wlxe84e0679ad17 - iface wlxe84e0679ad17 inet manual auto bond0 iface bond0 inet manual + bond-slaves eno1 wlan2 - bond-slaves eno1 wlxe84e0679ad17 wlan2
  1. 停用服务:
bash
代码解读
复制代码
systemctl stop wpa_supplicant@wlxe84e0679ad17 systemctl disable wpa_supplicant@wlxe84e0679ad17
  1. 清理配置文件(可选):
bash
代码解读
复制代码
rm /etc/wpa_supplicant/wpa_supplicant-wlxe84e0679ad17.conf
  1. 应用更改:
bash
代码解读
复制代码
ifreload -a
注:本文转载自juejin.cn的pzehrel的文章"https://juejin.cn/post/7495705474499837988"。版权归原作者所有,此博客不拥有其著作权,亦不承担相应法律责任。如有侵权,请联系我们删除。
复制链接
复制链接
相关推荐
发表评论
登录后才能发表评论和回复 注册

/ 登录

评论记录:

未查询到任何数据!
回复评论:

分类栏目

后端 (14832) 前端 (14280) 移动开发 (3760) 编程语言 (3851) Java (3904) Python (3298) 人工智能 (10119) AIGC (2810) 大数据 (3499) 数据库 (3945) 数据结构与算法 (3757) 音视频 (2669) 云原生 (3145) 云平台 (2965) 前沿技术 (2993) 开源 (2160) 小程序 (2860) 运维 (2533) 服务器 (2698) 操作系统 (2325) 硬件开发 (2492) 嵌入式 (2955) 微软技术 (2769) 软件工程 (2056) 测试 (2865) 网络空间安全 (2948) 网络与通信 (2797) 用户体验设计 (2592) 学习和成长 (2593) 搜索 (2744) 开发工具 (7108) 游戏 (2829) HarmonyOS (2935) 区块链 (2782) 数学 (3112) 3C硬件 (2759) 资讯 (2909) Android (4709) iOS (1850) 代码人生 (3043) 阅读 (2841)

热门文章

143
阅读
关于我们 隐私政策 免责声明 联系我们
Copyright © 2020-2024 蚁人论坛 (iYenn.com) All Rights Reserved.
Scroll to Top