在 Proxmox VE 虚拟化环境中,为虚拟机添加多块网卡是一个常见需求。例如需要分离管理网络和业务网络,或者连接到不同的网段。本文将详细介绍如何在 Proxmox VE 中为虚拟机添加网卡,并正确配置网络。

一、通过 Web 界面添加网卡

步骤1:登录 Proxmox VE 管理界面

打开浏览器访问 Proxmox VE 管理地址: https://your-proxmox-ip:8006

使用管理员账号登录(默认用户名:root)

步骤2:选择虚拟机

在左侧导航栏中:

  1. 点击"数据中心"展开节点列表
  2. 选择目标节点(如 pve)
  3. 在节点下找到目标虚拟机(如 VM 101)
  4. 点击虚拟机名称

步骤3:进入硬件设置

在虚拟机详情页面:

  1. 点击"硬件"(Hardware)标签页
  2. 这里会显示当前虚拟机的所有硬件设备

步骤4:添加网络设备

在硬件列表上方:

  1. 点击"添加"(Add)按钮
  2. 从下拉菜单中选择"网络设备"(Network Device)

步骤5:配置新网卡

在弹出的对话框中设置:

选项说明推荐值
网桥(Bridge)选择要连接的网桥vmbr0、vmbr1 等
模型(Model)网卡驱动类型VirtIO(半虚拟化)
MAC 地址自动生成或手动指定保持自动
VLAN 标签可选的 VLAN ID留空(如不需要)
速率限制带宽限制留空(无限制)
防火墙是否启用防火墙根据需求选择

网卡模型选择说明:

模型特点适用场景
VirtIO性能最佳,Linux 原生支持Linux 虚拟机(推荐)
Intel E1000兼容性好,性能中等Windows 虚拟机
RTL8139老旧驱动,性能差不推荐
VMware vmxnet3VMware 优化驱动特殊需求

推荐配置:

  • Linux 虚拟机:选择 VirtIO(paravirtualized)
  • Windows 虚拟机:选择 Intel E1000 或安装 VirtIO 驱动后选择 VirtIO

步骤6:确认添加

  1. 确认配置无误后,点击"添加"(Add)按钮
  2. 新网卡会立即出现在硬件列表中
  3. 注意新网卡的设备名称(如 net1)

注意事项:

  • 虚拟机必须关机或重启后新网卡才能生效
  • 如果虚拟机正在运行,需要先关机再开机(重启可能不够)

二、在虚拟机内配置网络

添加网卡后,需要在虚拟机操作系统内配置网络。以下以 Debian/Ubuntu 系统为例。

步骤1:查看网卡状态

登录虚拟机后,执行以下命令查看网络接口:

查看所有网卡: ip addr show

或使用旧命令: ifconfig -a

识别新网卡:

  • 通常新网卡会显示为 eth1、ens19 等
  • 如果看不到,可能需要重启虚拟机

步骤2:编辑网络配置文件

备份原配置: cp /etc/network/interfaces /etc/network/interfaces.bak

编辑配置文件: nano /etc/network/interfaces

配置示例:双网卡静态 IP

正确的配置应该是:

回环接口

auto lo iface lo inet loopback

第一块网卡 - 公网/管理网络

auto eth0 iface eth0 inet static address 192.168.8.110 netmask 255.255.255.0 gateway 192.168.8.1 dns-nameservers 8.8.8.8 8.8.4.4

第二块网卡 - 内网/业务网络

auto eth1 iface eth1 inet static address 192.168.0.110 netmask 255.255.255.0

配置说明:

重要原则:

  • 只有一块网卡可以设置网关(gateway)
  • 通常将网关设在主网卡(eth0)上
  • 其他网卡只配置 IP 和子网掩码
  • DNS 服务器可以在主网卡配置中指定

常见错误:

  • ❌ 两块网卡都设置网关(会导致路由冲突)
  • ❌ 不设置 auto 参数(网卡不会自动启动)
  • ❌ IP 地址冲突(两块网卡使用同一网段)

配置示例:主网卡静态 IP + 备用网卡 DHCP

第一块网卡 - 静态 IP

auto eth0 iface eth0 inet static address 192.168.8.110 netmask 255.255.255.0 gateway 192.168.8.1

第二块网卡 - 动态 IP

auto eth1 iface eth1 inet dhcp

步骤3:重启网络服务

Debian/Ubuntu 传统方式: /etc/init.d/networking restart

或使用 systemd: systemctl restart networking

也可以只重启特定网卡: ifdown eth1 && ifup eth1

如果遇到问题,建议直接重启虚拟机: reboot

步骤4:验证配置

检查网卡状态: ip addr show

检查路由表: ip route show

输出示例(正确配置): default via 192.168.8.1 dev eth0 192.168.8.0/24 dev eth0 proto kernel scope link src 192.168.8.110 192.168.0.0/24 dev eth1 proto kernel scope link src 192.168.0.110

测试连通性:

测试主网卡

ping -I eth0 -c 4 192.168.8.1

测试第二块网卡

ping -I eth1 -c 4 192.168.0.1

三、高级配置场景

场景1:多网关配置(策略路由)

如果两块网卡都需要访问外网,需要配置策略路由:

编辑配置文件: nano /etc/network/interfaces

配置示例:

第一块网卡

auto eth0 iface eth0 inet static address 192.168.8.110 netmask 255.255.255.0 gateway 192.168.8.1 # 为 eth0 创建路由表 post-up ip route add 192.168.8.0/24 dev eth0 src 192.168.8.110 table eth0_table post-up ip route add default via 192.168.8.1 dev eth0 table eth0_table post-up ip rule add from 192.168.8.110/32 table eth0_table post-up ip rule add to 192.168.8.0/24 table eth0_table

第二块网卡

auto eth1 iface eth1 inet static address 192.168.0.110 netmask 255.255.255.0 # 为 eth1 创建路由表 post-up ip route add 192.168.0.0/24 dev eth1 src 192.168.0.110 table eth1_table post-up ip route add default via 192.168.0.1 dev eth1 table eth1_table post-up ip rule add from 192.168.0.110/32 table eth1_table post-up ip rule add to 192.168.0.0/24 table eth1_table

创建路由表: echo "200 eth0_table" >> /etc/iproute2/rt_tables echo "201 eth1_table" >> /etc/iproute2/rt_tables

场景2:网卡绑定(Bond)

将两块网卡绑定为一块,提供冗余或带宽聚合:

安装绑定支持: apt install ifenslave

加载内核模块: modprobe bonding echo "bonding" >> /etc/modules

配置绑定:

Bond 接口

auto bond0 iface bond0 inet static address 192.168.8.110 netmask 255.255.255.0 gateway 192.168.8.1 bond-slaves eth0 eth1 bond-mode active-backup bond-miimon 100 bond-primary eth0

物理网卡

auto eth0 iface eth0 inet manual bond-master bond0

auto eth1 iface eth1 inet manual bond-master bond0

Bond 模式说明:

  • active-backup:主备模式,一块工作,一块待命
  • balance-rr:轮询模式,提升带宽
  • 802.3ad:LACP 聚合(需交换机支持)

场景3:VLAN 配置

在单块网卡上创建多个 VLAN 子接口:

安装 VLAN 支持: apt install vlan

加载内核模块: modprobe 8021q echo "8021q" >> /etc/modules

配置 VLAN:

主网卡

auto eth0 iface eth0 inet manual

VLAN 10 - 管理网络

auto eth0.10 iface eth0.10 inet static address 192.168.10.110 netmask 255.255.255.0 gateway 192.168.10.1 vlan-raw-device eth0

VLAN 20 - 业务网络

auto eth0.20 iface eth0.20 inet static address 192.168.20.110 netmask 255.255.255.0 vlan-raw-device eth0

四、Windows 虚拟机网卡配置

对于 Windows 虚拟机,配置过程略有不同。

步骤1:识别新网卡

在 Windows 虚拟机中:

  1. 打开"控制面板" → "网络和共享中心"
  2. 点击"更改适配器设置"
  3. 找到新添加的网络适配器(通常显示为"以太网 2")

步骤2:配置 IP 地址

右键点击新网卡,选择"属性":

  1. 双击"Internet 协议版本 4 (TCP/IPv4)"
  2. 选择"使用下面的 IP 地址"
  3. 填写 IP 配置:
    • IP 地址:192.168.0.110
    • 子网掩码:255.255.255.0
    • 默认网关:留空(只有主网卡设置网关)
    • DNS 服务器:留空或填写备用 DNS

步骤3:调整网卡优先级

如果两块网卡都需要上网,需要设置路由优先级:

打开命令提示符(管理员):

查看路由表

route print

添加静态路由(如果需要)

route add 192.168.0.0 mask 255.255.255.0 192.168.0.1 metric 10

持久化路由

route -p add 192.168.0.0 mask 255.255.255.0 192.168.0.1

安装 VirtIO 驱动(可选)

如果选择了 VirtIO 网卡但 Windows 无法识别:

  1. 下载 VirtIO 驱动: 访问 https://fedorapeople.org/groups/virt/virtio-win/direct-downloads/

  2. 在 Proxmox 中挂载 ISO:

    • 在虚拟机"硬件"中添加 CD/DVD 驱动器
    • 选择下载的 virtio-win.iso
  3. 在 Windows 中安装驱动:

    • 打开设备管理器
    • 找到未知设备
    • 右键"更新驱动程序"
    • 选择光驱中的驱动文件

五、常见问题与解决方案

问题1:新网卡无法识别

可能原因:

  • 虚拟机未完全重启
  • 驱动程序缺失(特别是 VirtIO)
  • 网卡模型选择不当

解决方法:

  1. 完全关机再开机(不要用重启)
  2. 检查虚拟机日志:查看 /var/log/qemu-server/
  3. 更换网卡模型为 Intel E1000

问题2:网络配置后无法上网

排查步骤:

检查网卡状态: ip link show

检查 IP 配置: ip addr show

检查路由表: ip route show

检查网关连通性: ping 192.168.8.1

检查 DNS: nslookup google.com

常见原因:

  • 两块网卡都设置了网关(删除其中一个)
  • 网关地址错误
  • DNS 未配置或配置错误
  • 防火墙规则阻止

问题3:两块网卡互相冲突

症状:

  • 网络时断时续
  • 路由表混乱
  • 无法访问特定网段

解决方法:

清理路由表: ip route flush table main

重启网络: systemctl restart networking

检查路由优先级: ip route show table all

确保只有一个默认网关: ip route show | grep default

问题4:网卡顺序变化

在某些情况下,网卡的设备名可能会变化(eth0 变成 eth1)。

使用持久化命名:

创建 udev 规则: nano /etc/udev/rules.d/70-persistent-net.rules

添加规则(根据 MAC 地址绑定): SUBSYSTEM=="net", ACTION=="add", ATTR{address}"52:54:00:12:34:56", NAME="eth0" SUBSYSTEM"net", ACTION=="add", ATTR{address}=="52:54:00:12:34:57", NAME="eth1"

查看 MAC 地址: ip link show

重新加载 udev 规则: udevadm control --reload-rules udevadm trigger

问题5:性能不佳

优化建议:

  1. 使用 VirtIO 驱动(性能最佳)
  2. 启用多队列支持(在 Proxmox 中设置)
  3. 调整虚拟机内网卡参数:

关闭不必要的功能: ethtool -K eth0 gso off tso off

启用多队列(需要 VirtIO): ethtool -L eth0 combined 4

六、监控与维护

网络性能监控

安装监控工具: apt install iftop nethogs iperf3

实时流量监控: iftop -i eth0

按进程查看流量: nethogs eth0

网络性能测试: iperf3 -s(在服务器端) iperf3 -c server-ip(在客户端)

日志查看

系统日志: journalctl -u networking -f

网卡日志: dmesg | grep eth

Proxmox 虚拟机日志: cat /var/log/qemu-server/101.log

自动化脚本

创建网卡检查脚本:

nano /usr/local/bin/check-network.sh

添加内容:

#!/bin/bash

检查网卡状态

echo "=== 网卡状态 ===" ip link show

echo -e "\n=== IP 配置 ===" ip addr show

echo -e "\n=== 路由表 ===" ip route show

echo -e "\n=== 网关连通性 ===" ping -c 4 192.168.8.1

赋予执行权限: chmod +x /usr/local/bin/check-network.sh

运行检查: /usr/local/bin/check-network.sh

七、总结与最佳实践

配置清单

在为虚拟机添加网卡时,遵循以下步骤:

  •  在 Proxmox Web 界面添加网络设备
  •  选择合适的网桥和网卡模型
  •  关机并重新启动虚拟机
  •  在虚拟机内配置 IP 地址
  •  只在一块网卡上设置网关
  •  测试网络连通性
  •  配置持久化(重启后生效)
  •  记录配置信息

推荐配置模式

常见场景配置建议:

场景1:公网 + 内网分离

  • eth0:连接 vmbr0(公网),设置网关
  • eth1:连接 vmbr1(内网),不设网关
  • 适用:Web 服务器、数据库服务器

场景2:管理网络 + 业务网络

  • eth0:管理网络(SSH、监控)
  • eth1:业务网络(应用流量)
  • 适用:生产环境服务器

场景3:高可用配置

  • eth0 + eth1:Bond(主备模式)
  • 提供网络冗余
  • 适用:关键业务服务器

对于需要复杂网络配置的虚拟化环境,建议选择专业的服务器托管服务。我们提供:

所有服务器支持 Proxmox VE 安装,提供完整的技术支持和网络配置协助。