Proxmox VE (PVE) 宿主机随机离线:Intel 82579V 网卡 Bug 与 conntrack 表满深度解决方案

1. 故障背景

在公网独立服务器上运行 PVE 8.x,如果虚拟机内有 飞牛OS/fnOS、qBittorrent、OPNsense 等高并发网络应用,宿主机可能会突然断网离线。

  • 现象:PING 不通,SSH 断开。
  • 诊断报错:在 journalctl 或系统日志中发现: nf_conntrack: table full, dropping packet 甚至伴随 e1000e: Detected Hardware Unit Hang

2. 方案 A:解决物理网卡假死 (Intel 82579V/e1000e)

老款 Intel 网卡的硬件卸载功能与 PVE 虚拟网桥存在兼容性 Bug。最稳妥的办法是关闭它。

操作: 编辑 /etc/network/interfaces,在物理网卡(如 eno1)下添加:

auto eno1
iface eno1 inet manual
    # 彻底关闭硬件加速,杜绝网卡驱动崩溃
    post-up /usr/sbin/ethtool -K eno1 tso off gso off gro off

3. 方案 B:通过 Web UI 解决连接表爆满 (推荐做法)

不需要手动修改底层 /etc/sysctl.conf,直接通过 PVE 官方界面修改,既安全又防冲突。

步骤:

  1. 进入路径:选中 节点 (Node)FirewallOptions
  2. 提升上限:找到 nf_conntrack_max,修改为 1048576(100万)。
  3. 加速回收:找到 nf_conntrack_tcp_timeout_established,修改为 7875(这是 GUI 允许的最小值)。
  • 注:默认值是 5 天,改为 2 小时后能极大释放内存账本。
  1. 放宽过滤:将 TCP flags filter 设置为 No

4. 验证命令

修改完成后,在宿主机 Shell 执行以下命令,确认设置是否真的生效(内核不会撒谎):

# 确认网卡状态 (应全为 off)
ethtool -k eno1 | grep -E "segmentation|receive-offload"

# 确认连接数上限
cat /proc/sys/net/netfilter/nf_conntrack_max

# 确认超时回收时间
cat /proc/sys/net/netfilter/nf_conntrack_tcp_timeout_established

5. 总结

  • 原理:第一步修好了“路”(网卡),第二步扩建了“收费站账本”(连接表)。