物理机双网口如何配置Trunk?
- 物理机
- 2025-06-01
- 5
在网络架构中,为了提升服务器的网络带宽、实现链路冗余(高可用性)和满足特定网络隔离需求(如VLAN),为物理服务器配置Trunk(链路聚合) 是一种非常常见且关键的技术手段,本文将深入浅出地讲解如何为物理服务器的两个物理网口(Network Interface Card, NIC)配置Trunk,涵盖其原理、配置步骤、不同操作系统的实现方法以及重要的注意事项。
什么是Trunk(链路聚合)?为什么需要它?
想象一下,你的服务器只有一条网线连接到交换机,这条链路可能面临以下问题:
- 带宽瓶颈: 当服务器需要处理大量网络流量(如数据库、文件服务器、虚拟化主机)时,单条链路(例如1Gbps或10Gbps)可能成为性能瓶颈。
- 单点故障: 如果这条链路、网卡或交换机端口出现故障,服务器将完全失去网络连接,导致业务中断。
- VLAN需求: 如果服务器需要同时接入多个不同的虚拟局域网(VLAN),单个网口无法承载多个VLAN的数据(标准模式下)。
Trunk(链路聚合)技术,通常指基于标准的IEEE 802.3ad(LACP – Link Aggregation Control Protocol)或静态聚合,正是为了克服这些问题而生的:
- 带宽叠加: 将两个或多个物理网口逻辑上附带成一个单一的、带宽更大的逻辑链路(Aggregate Link / Bond / Team),两个1Gbps网口聚合后,理论上可提供2Gbps的带宽(实际效果取决于负载均衡算法)。
- 链路冗余: 附带组内的物理链路互为备份,如果其中一条物理链路(或对应端口、网卡)失效,流量会自动、无缝地切换到其他正常工作的链路上,保证网络连接不中断,极大提高可靠性。
- 支持VLAN Trunking: 这个逻辑链路可以配置为Trunk模式,允许承载来自多个VLAN的数据流量,通过802.1Q标签进行区分,这对于需要访问多个网络的服务器(如运行多个虚拟机的宿主机或需要跨VLAN通信的应用服务器)至关重要。
配置物理机双网口Trunk的核心前提
配置成功依赖于服务器端和网络交换机端的协同配置,两者缺一不可,且配置方式必须匹配:
- 物理连接: 服务器的两个物理网口(eth0 和 eth1)必须分别连接到同一台交换机(或支持跨设备链路聚合如堆叠、M-LAG的同一逻辑交换机)上的两个物理端口。
- 交换机端配置: 在交换机上,需要将连接服务器的这两个端口配置成一个链路聚合组(Port-Channel / LAG / Trunk Group),并配置相应的模式:
- 动态LACP模式 (Active): 推荐方式,交换机和服务器会通过LACP协议动态协商建立和维护聚合链路,提供了链路状态检测能力。
- 静态聚合模式 (Static/On): 无需协议协商,直接在两端手动指定聚合,配置简单但缺乏协议级的链路状态检测。(注意:不同厂商命名可能不同,如Cisco的on模式, Huawei的manual模式)
- 交换机端口必须配置为Trunk模式: 允许特定的VLAN(或所有VLAN)通过此聚合链路,并根据需要打上或剥离802.1Q VLAN标签,需要明确允许哪些VLAN通过该Trunk链路。
- 服务器端配置: 在服务器操作系统内,需要将两个物理网卡(NIC)绑定(Bond / Team)成一个逻辑接口,并设置相应的聚合模式(必须与交换机端一致)和负载均衡算法。
物理机服务器端配置详解(以主流系统为例)
A. Linux 系统 (使用 bonding 驱动)

Linux内核内置了强大的bonding驱动来实现网卡聚合。
-
安装必要工具 (通常已内置):
sudo apt update && sudo apt install ifenslave # Debian/Ubuntu (通常不需要单独安装) sudo yum install bonding # RHEL/CentOS (通常不需要单独安装)
-
加载bonding内核模块:
(可选)确保开机加载:将bonding添加到/etc/modules-load.d/.conf或/etc/modules文件中。
-
配置网络接口:
编辑网络配置文件,以使用/etc/network/interfaces (Debian/Ubuntu) 或 /etc/sysconfig/network-scripts/ (RHEL/CentOS <=7) 为例。
-
创建Bond接口配置文件 (如 ifcfg-bond0):
# /etc/sysconfig/network-scripts/ifcfg-bond0 (RHEL/CentOS 7) DEVICE=bond0 NAME=bond0 TYPE=Bond BONDING_MASTER=yes BOOTPROTO=static/none/dhcp # 根据实际网络规划选择 IPADDR=192.168.1.100 # 逻辑接口的IP地址 NETMASK=255.255.255.0 # 或 PREFIX=24 GATEWAY=192.168.1.1 DNS1=8.8.8.8 ONBOOT=yes BONDING_OPTS="mode=4 miimon=100 lacp_rate=1" # 关键!mode=4 表示 LACP动态聚合
BONDING_OPTS 参数详解:
- mode=X:聚合模式,常用:
- mode=0 (balance-rr):轮询(Round Robin),提供负载均衡和容错。
- mode=1 (active-backup):主备,同一时间只有一个网卡活动,提供容错不增加带宽。
- mode=2 (balance-xor):异或,基于源MAC和目标MAC的哈希负载均衡。
- mode=4 (802.3ad / LACP):动态LACP聚合(推荐),需要交换机支持LACP。
- mode=5 (balance-tlb):适配器传输负载均衡。
- mode=6 (balance-alb):适配器适应性负载均衡。
- miimon=100:链路监测间隔(毫秒),100表示每100ms检查一次链路状态。
- lacp_rate=1:LACPDU(链路聚合控制协议数据单元)发送速率,1=慢速(30秒),0=快速(1秒)。需与交换机协商一致。
- xmit_hash_policy=layer2+3:负载均衡哈希策略(对mode=4, 0, 2等有效),常用 layer2 (MAC地址), layer2+3 (MAC+IP), layer3+4 (IP+Port),选择影响流量分布。
-
配置物理网卡接口文件 (如 ifcfg-eth0, ifcfg-eth1):
# /etc/sysconfig/network-scripts/ifcfg-eth0 DEVICE=eth0 NAME=eth0 TYPE=Ethernet BOOTPROTO=none ONBOOT=yes MASTER=bond0 # 指明此物理接口属于bond0 SLAVE=yes # 指明此接口是bond的从属接口对eth1做同样配置,确保MASTER=bond0和SLAVE=yes。
-
重启网络服务:
sudo systemctl restart network # RHEL/CentOS 7 sudo systemctl restart networking # Debian/Ubuntu (或用 netplan apply) -
验证配置:

- 查看bond0状态: cat /proc/net/bonding/bond0
输出应显示聚合模式(Bonding Mode)、Slave Interfaces(eth0, eth1)、LACP Partner信息(如果mode=4)、各个Slave状态(up/down)和详细的流量统计、哈希策略等。
- ip link show 或 ifconfig:查看bond0和eth0/eth1的状态(SLAVE标志)。
- 测试网络连通性和冗余:ping一个地址,然后拔掉一条网线,观察ping是否中断(理论上应几乎无感知中断)。
- 打开服务器管理器: 登录到Windows Server。
- 进入本地服务器: 在左侧导航窗格选择”本地服务器”。
- 找到”NIC组合”: 在右侧”属性”区域,找到”NIC组合”,如果显示”已禁用”,点击右侧的”已禁用”链接,如果显示”已启用”并包含你的组合,可进行管理。
- 创建新组合 (Team):
- 在”适配器和接口”选项卡下,按住Ctrl键选择要聚合的两个物理网卡(如”Ethernet 1″, “Ethernet 2″)。
- 右键单击选中的网卡之一,选择”添加到新组合”。
- 配置组合属性:
- 组合名称: 为你的组合输入一个名称(如”ServerTeam”)。
- 成员接口: 确认选中的物理网卡正确。
- 组合模式 (Teaming mode): 必须与交换机配置严格匹配!
- 静态成组 (Static Teaming / Switch Independent): 无需交换机特殊配置,Windows端负责负载均衡和故障切换。无法提供带宽叠加!仅容错。 (此模式严格来说不是Trunk,但常被混淆)
- LACP (IEEE 802.1ax / 802.3ad): 推荐模式。 选择此模式,并选择”动态”或”主动协商”(通常选主动),需要交换机配置为LACP Active模式。
- 负载均衡模式 (Load balancing mode): 选择流量如何在物理链路上分布:
- 地址哈希: 基于源/目标IP/MAC地址和端口号的哈希值分配流量,常用且推荐。
- Hyper-V端口: 专为Hyper-V虚拟交换机设计,基于虚拟机网络端口分配流量。
- 动态: (Windows Server 2016+) 结合流量的源/目标信息进行分配。
- 备用适配器: (仅在”静态成组”模式下有效),指定主用和备用网卡。
- 点击”确定”创建组合: Windows会创建组合虚拟适配器(通常命名为”组合”)。
- 配置组合虚拟适配器的IP和VLAN:
- 在”网络连接”中,找到新创建的名为”组合”的虚拟适配器(可能需要刷新)。
- 右键单击它,选择”属性”。
- 双击”Internet 协议版本 4 (TCP/IPv4)”配置IP地址、子网掩码、网关和DNS(根据网络规划设置)。
- 如果需要承载多个VLAN,需要安装和配置”QoS数据包计划程序“组件,并在高级设置中添加 VLAN ID(配置VLAN Tagging),或者,更常见的做法是创建Hyper-V虚拟交换机(如果使用Hyper-V),并将其绑定到这个组合上,然后在Hyper-V虚拟交换机上配置VLAN信息给虚拟机使用,直接在主机组合适配器上配多VLAN相对较少。
- 验证配置:
- 在”服务器管理器” -> “本地服务器” -> “NIC组合”下查看组合状态。
- 在”网络连接”中查看组合虚拟适配器的状态。
- 使用Get-NetLbfoTeam PowerShell命令查看详细组合信息。
- 同样进行连通性和链路故障切换测试。
- 严格匹配模式: 服务器端和交换机端的聚合模式(LACP, Static)必须完全一致! 这是配置成功的基石,不匹配会导致环路、丢包甚至端口被禁用(STP阻断)。
- 交换机是关键: 必须先在交换机上正确创建Port-Channel/LAG,并将物理端口加入该Channel/LAG,并设置为Trunk模式(允许所需VLAN),仔细检查交换机配置。
- 链路状态检测: 强烈推荐使用LACP(动态聚合)模式,它提供了协议级的链路状态检测能力,比静态聚合更可靠。
- 负载均衡算法: 选择合适的负载均衡算法(xmit_hash_policy / Load balancing mode)。layer2+3 (MAC+IP) 或 layer3+4 (IP+Port) 通常是较好的选择,能更均匀地分布流量,避免可能造成流量分布不均的模式(如单一源IP模式)。
- VLAN Trunking:
- 服务器IP配置在哪? 通常配置在Trunk链路本身(如Linux的bond0或Windows的组合适配器)或基于该Trunk创建的虚拟交换机(Hyper-V/vSwitch)上,并指定一个Native/Untagged VLAN(如果交换机需要),其他VLAN流量会携带802.1Q标签。
- 服务器应用感知VLAN: 服务器上的应用程序或虚拟机需要配置相应的VLAN ID才能正确发送和接收对应VLAN的流量。
- 交换机Trunk配置: 交换机端口必须明确允许(allowed vlan)服务器需要访问的VLAN ID通过该Trunk链路,通常需要移除不需要的VLAN(remove vlan)。
- Spanning Tree Protocol (STP): 确保交换机端口启用了STP(如PVST+, RSTP, MSTP),Trunk链路本身通常不会引起环路,但物理连接错误(如两个端口接入同一VLAN但未聚合)会导致环路,STP是最后的安全保障。
- 驱动程序与固件: 确保服务器网卡驱动和固件是最新版本,以获得最佳的兼容性和性能。
- 性能期望: Trunk主要提供带宽聚合和冗余,单个TCP/UDP流通常只能使用一条物理链路的带宽,负载均衡的效果体现在多个并发连接/数据流上。
- 监控与日志: 配置完成后,持续监控Trunk链路的状态(cat /proc/net/bonding/bond0, Windows NIC组合状态,交换机Port-Channel状态)、流量负载和错误计数器,关注日志中的任何告警信息。
- 理解Trunk的核心价值: 带宽叠加、链路冗余、VLAN承载。
- 严格遵循双端配置原则: 服务器端(Bonding/NIC Teaming)与交换机端(Port-Channel/LAG配置为Trunk)的模式和参数必须精确匹配。
- 优先选择LACP动态聚合: 提供更好的链路管理和状态检测能力。
- 合理配置负载均衡与VLAN: 确保流量分布高效且满足网络隔离要求。
- 重视测试与监控: 在实施前后进行充分的连通性、带宽和故障切换测试,并建立持续监控机制。
- IEEE Standards: IEEE 802.3ad (Link Aggregation – Now part of 802.1AX), IEEE 802.1Q (VLAN Tagging). 这些是链路聚合和VLAN技术的核心协议标准。
- Linux Kernel Documentation: The Linux Kernel’s Documentation/networking/bonding.txt and Documentation/networking/bonding.rst files provide detailed technical specifications and configuration options for the Linux bonding driver.
- Microsoft Docs: Microsoft’s official documentation on “NIC Teaming in Windows Server” provides comprehensive guidance and best practices for configuring NIC Teaming in the Windows Server environment.
- Major Network Switch Vendor Documentation:
- Cisco: Configuration guides for EtherChannel (Port-Channel) and Layer 2 Trunking on Cisco IOS, IOS-XE, NX-OS platforms (e.g., “Configuring EtherChannel” guides).
- Huawei: Documentation on Eth-Trunk configuration for Huawei switches running VRP (e.g., “Eth-Trunk Configuration” guides).
- HPE Aruba (ProCurve/ArubaOS-CX): Documentation on Link Aggregation (Trunking) configuration.
- Juniper: Documentation on Aggregated Ethernet (AE) interfaces and Trunking for Junos OS devices.
- Dell: Configuration guides for Link Aggregation Groups (LAG) on Dell Networking OS (DNOS) switches.
- Server Hardware Vendor Best Practices: Guides from server vendors (Dell EMC, HPE, Lenovo, Supermicro) often include recommendations for NIC teaming configurations specific to their hardware and common operating systems.
B. Windows Server 系统 (使用 NIC Teaming)
Windows Server 2012 及更高版本内置了NIC组合功能。
关键注意事项与最佳实践
为物理服务器的两个网口配置Trunk是一项提升网络带宽、保障业务连续性和满足多VLAN接入需求的基础而重要的技术,其核心在于:
通过精心规划和正确配置,物理机双网口Trunk能够显著提升服务器网络性能和可靠性,为关键业务提供坚实的网络支撑。
引用与参考说明:
具体的交换机命令行配置会因厂商和操作系统版本(IOS, NX-OS, Comware, VRP, Junos等)而有显著差异,实际操作时,请务必查阅对应交换机型号和软件版本的官方配置手册。
- 查看bond0状态: cat /proc/net/bonding/bond0
- mode=X:聚合模式,常用:
-