Linux的 iproute2 配置:以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)、網橋(Bridge)筆記250713
在 Linux 中使用 iproute2
工具集配置網絡是現代且推薦的方法,它取代了舊的 ifconfig
、route
、brctl
、vconfig
等命令。iproute2
提供了統一的接口 ip
命令及其子命令來管理以太網、綁定 (Bond)、虛擬局域網 (VLAN) 和網橋 (Bridge)。
核心命令:ip
ip link
: 管理網絡接口(鏈路層)。ip addr
: 管理 IP 地址(網絡層)。ip route
: 管理路由表。ip netns
: 管理網絡命名空間。bridge
: 管理網橋(是iproute2
的一部分,通常單獨調用)。
配置方式:
- 臨時配置: 使用
ip
命令直接操作。重啟或網絡服務重啟后失效。 - 持久化配置:
- 編輯配置文件: 修改
/etc/network/interfaces
(Debian/Ubuntu) 或/etc/sysconfig/network-scripts/ifcfg-<interface_name>
(RHEL/CentOS 7及更早) 或使用 Netplan (Ubuntu 18.04+) 或 NetworkManager 連接文件 (RHEL/CentOS 8+, Fedora)。 - 使用網絡管理工具: 如
nmcli
(NetworkManager),netplan apply
。
- 編輯配置文件: 修改
以下使用 ip
命令進行臨時配置演示:
1. 以太網 (Ethernet) 接口配置
- 查看接口狀態:
找到你的以太網接口名(如ip link show
enp1s0
,eth0
)。 - 啟用接口:
ip link set enp1s0 up
- 禁用接口:
ip link set enp1s0 down
- 分配 IP 地址 (IPv4):
ip addr add 192.168.1.100/24 dev enp1s0
- 刪除 IP 地址:
ip addr del 192.168.1.100/24 dev enp1s0
- 設置默認網關:
ip route add default via 192.168.1.1
2. 綁定 (Bonding / Link Aggregation) 接口配置
綁定需要內核模塊 bonding
。確保已加載 (lsmod | grep bonding
或 modprobe bonding
)。
- 創建 Bond 接口 (
bond0
):
常用模式 (ip link add bond0 type bond mode active-backup # 創建名為 bond0 的綁定接口,使用主備模式
mode
):balance-rr
(0): 輪詢。active-backup
(1): 主備(默認)。balance-xor
(2): XOR 哈希(基于源/目標MAC/IP+Port)。broadcast
(3): 廣播。802.3ad
(4): LACP (需要交換機支持)。balance-tlb
(5): 適配器傳輸負載均衡。balance-alb
(6): 適配器傳輸和接收負載均衡 (需要ARP監控)。
- 配置 Bond 參數 (可選,在創建時或之后設置):
ip link set bond0 type bond miimon 100 # 設置鏈路監控間隔為100ms ip link set bond0 type bond primary eth0 # 設置 eth0 為主接口 (對 active-backup 有用) ip link set bond0 type bond xmit_hash_policy layer2+3 # 設置哈希策略 (對 balance-xor, 802.3ad 有用)
- 將物理接口加入 Bond:
ip link set eth0 master bond0 # 將 eth0 加入 bond0 ip link set eth1 master bond0 # 將 eth1 加入 bond0
- 啟用 Bond 接口并分配 IP:
ip link set bond0 up ip addr add 192.168.1.200/24 dev bond0
- 查看 Bond 狀態:
cat /proc/net/bonding/bond0
3. 虛擬局域網 (VLAN) 接口配置
需要內核模塊 8021q
。確保已加載 (lsmod | grep 8021q
或 modprobe 8021q
)。
- 在物理接口
eth0
上創建 VLAN ID 10 的接口 (eth0.10
):ip link add link eth0 name eth0.10 type vlan id 10
- 啟用 VLAN 接口并分配 IP:
ip link set eth0.10 up ip addr add 192.168.10.100/24 dev eth0.10
- (可選) 在 Bond 接口上創建 VLAN (
bond0.20
):ip link add link bond0 name bond0.20 type vlan id 20 ip link set bond0.20 up ip addr add 192.168.20.200/24 dev bond0.20
4. 網橋 (Bridge) 接口配置
- 創建網橋接口 (
br0
):ip link add name br0 type bridge
- 配置網橋參數 (可選):
ip link set br0 type bridge stp_state 1 # 啟用STP (生成樹協議) ip link set br0 type bridge forward_delay 2 # 設置轉發延遲
- 將接口加入網橋 (例如
eth2
,tap0
):ip link set eth2 master br0 # 將物理接口 eth2 加入 br0 ip link set tap0 master br0 # 將虛擬接口 tap0 (可能用于KVM虛擬機) 加入 br0
- 啟用網橋接口并分配 IP (網橋本身通常需要一個IP作為管理地址或網關):
ip link set br0 up ip addr add 192.168.30.1/24 dev br0
- 查看網橋信息:
bridge link show # 顯示哪些接口屬于哪個網橋 bridge fdb show # 顯示網橋的MAC轉發表
持久化配置提示 (以 Debian/Ubuntu /etc/network/interfaces
片段為例):
# 物理接口 eth0 (不直接配置IP,交給bond)
auto eth0
iface eth0 inet manualbond-master bond0# 物理接口 eth1 (不直接配置IP,交給bond)
auto eth1
iface eth1 inet manualbond-master bond0# Bond 接口 bond0
auto bond0
iface bond0 inet staticaddress 192.168.1.200netmask 255.255.255.0gateway 192.168.1.1# Bond 選項bond-mode active-backupbond-miimon 100bond-primary eth0bond-slaves none # 由上面的eth0/eth1指定# VLAN 接口 (在 bond0 上)
auto bond0.10
iface bond0.10 inet staticaddress 192.168.10.200netmask 255.255.255.0vlan-raw-device bond0# 網橋接口 br0 (用于連接虛擬機/容器)
auto br0
iface br0 inet staticaddress 192.168.30.1netmask 255.255.255.0bridge_ports eth2 tap0 # 加入的接口bridge_stp on # 啟用STPbridge_fd 2 # 轉發延遲
綜合配置示例
場景:綁定 → VLAN → 網橋
# 1. 創建綁定
modprobe bonding
ip link add bond0 type bond mode 802.3ad
ip link set eth1 down
ip link set eth1 master bond0
ip link set eth2 down
ip link set eth2 master bond0
ip link set bond0 up# 2. 在綁定上創建VLAN
ip link add link bond0 name mgmt_vlan type vlan id 100
ip link set mgmt_vlan up# 3. 創建網橋
ip link add br-mgmt type bridge
ip link set br-mgmt up# 4. 添加VLAN到網橋
ip link set mgmt_vlan master br-mgmt# 5. 配置網橋IP
ip addr add 10.100.0.5/24 dev br-mgmt# 6. 設置默認網關
ip route add default via 10.100.0.1
場景:綁定 + VLAN + 網橋
# 1. 創建綁定
sudo modprobe bonding mode=802.3ad
sudo ip link add bond0 type bond
sudo ip link set enp3s0 down && sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 down && sudo ip link set enp4s0 master bond0
sudo ip link set bond0 up# 2. 創建VLAN
sudo modprobe 8021q
sudo ip link add link bond0 name vlan10 type vlan id 10
sudo ip link set vlan10 up# 3. 創建網橋
sudo ip link add br0 type bridge
sudo ip link set vlan10 master br0
sudo ip addr add 10.10.10.2/24 dev br0
sudo ip link set br0 up# 4. 添加路由
sudo ip route add default via 10.10.10.1 dev br0
2. Bond + VLAN + Bridge 模板
# 1. 創建bond
sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set eth1 down
sudo ip link set eth2 down
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0
sudo ip link set bond0 up# 2. 在bond上創建VLAN
sudo ip link add link bond0 name vlan100 type vlan id 100
sudo ip link set vlan100 up# 3. 創建網橋
sudo ip link add br-vlan100 type bridge
sudo ip link set br-vlan100 up# 4. 將VLAN加入網橋
sudo ip link set vlan100 master br-vlan100# 5. 配置網橋IP
sudo ip addr add 10.100.0.1/24 dev br-vlan100
在 Linux 中,iproute2
套件(核心命令是 ip
)是管理網絡接口、路由、策略路由等的現代標準工具集,取代了過時的 net-tools
(如 ifconfig
, route
, arp
)。以下是使用 iproute2
配置以太網、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)的指南:
重要前提:
- 需要 root 權限: 所有配置命令都需要
sudo
或以root
用戶身份執行。 - 臨時 vs 持久化:
ip
命令所做的更改是臨時的,重啟后會丟失。要使配置持久化,你需要:- 使用網絡管理器: 如 NetworkManager (
nmcli
,nmtui
),systemd-networkd
(配置文件在/etc/systemd/network/
)。 - 編輯配置文件: 如 Debian/Ubuntu 的
/etc/network/interfaces
,或 RHEL/CentOS/Fedora 的/etc/sysconfig/network-scripts/ifcfg-*
(較新版本也轉向 NetworkManager 或systemd-networkd
)。 - 本文主要關注
ip
命令的運行時配置。持久化方法請參考你的發行版文檔。
- 使用網絡管理器: 如 NetworkManager (
- 接口命名: 示例中使用通用名稱(
eth0
,bond0
,vlan10
,br0
)。你的實際物理接口名稱可能不同(如enp0s3
,ens192
)。
1. 以太網 (Ethernet) 接口配置
-
查看接口狀態:
ip link show # 顯示所有接口狀態 ip addr show # 顯示所有接口的 IP 地址 ip addr show eth0 # 顯示 eth0 的詳細信息 ip -s link show eth0 # 顯示 eth0 的統計信息(流量、錯誤等)
-
啟用/禁用接口:
ip link set eth0 up # 啟用 eth0 ip link set eth0 down # 禁用 eth0
-
分配 IP 地址(臨時):
ip addr add 192.168.1.10/24 dev eth0 # 添加 IPv4 地址 ip addr add 2001:db8::10/64 dev eth0 # 添加 IPv6 地址 ip addr del 192.168.1.10/24 dev eth0 # 刪除 IPv4 地址
-
設置 MTU:
ip link set dev eth0 mtu 9000 # 設置 MTU 為 9000(Jumbo Frames)
2. 綁定 (Bonding / Link Aggregation) 配置
Bonding 將多個物理接口(Slave)聚合成一個邏輯接口(Master)以提供冗余、負載均衡或增加帶寬。
-
加載內核模塊:
modprobe bonding # 加載 bonding 模塊(通常已自動加載)
-
創建 Bond 接口:
ip link add bond0 type bond mode 802.3ad # 創建名為 bond0 的接口,使用 LACP (mode 4)
關鍵參數
mode
:balance-rr
(0):輪詢(負載均衡,容錯)。active-backup
(1):主備(容錯)。balance-xor
(2):基于源/目的 MAC 的 XOR 哈希(負載均衡,容錯)。broadcast
(3):廣播(容錯)。802.3ad
(4):LACP(動態聚合,需要交換機支持,負載均衡,容錯) - 常用。balance-tlb
(5):適配器傳輸負載均衡(容錯)。balance-alb
(6):適配器傳輸負載均衡 + 接收負載均衡(ARP 協商)(容錯) - 常用。
-
配置 Bond 參數 (可選):
ip link set bond0 type bond miimon 100 # 設置鏈路監控間隔為 100ms (重要!) ip link set bond0 type bond lacp_rate fast # 設置 LACP 速率 (僅 mode 4)
-
將物理接口加入 Bond:
ip link set eth0 master bond0 # 將 eth0 加入 bond0 作為 slave ip link set eth1 master bond0 # 將 eth1 加入 bond0 作為 slave
-
啟用 Bond 和 Slave 接口:
ip link set bond0 up ip link set eth0 up ip link set eth1 up
-
為 Bond 接口分配 IP 地址:
ip addr add 192.168.1.20/24 dev bond0
-
查看 Bond 狀態:
cat /proc/net/bonding/bond0 # 查看 bond0 的詳細狀態和 slave 信息
3. 虛擬局域網 (VLAN) 配置
VLAN 在單個物理接口上創建邏輯隔離的網絡。
-
創建 VLAN 接口:
ip link add link eth0 name eth0.10 type vlan id 10 # 在 eth0 上創建 VLAN ID 10 的接口 eth0.10
link eth0
: 指定父接口 (物理接口或 Bond)。name eth0.10
: 指定 VLAN 接口的名稱(習慣命名)。type vlan id 10
: 指定類型為 VLAN,ID 為 10。
-
啟用 VLAN 接口:
ip link set dev eth0.10 up
-
為 VLAN 接口分配 IP 地址:
ip addr add 192.168.10.1/24 dev eth0.10 # 分配 VLAN 10 的 IP
-
查看 VLAN 接口:
ip -d link show eth0.10 # `-d` 顯示詳細信息,能看到 VLAN ID
4. 網橋 (Bridge) 配置
網橋創建一個虛擬交換機,將多個接口(物理、虛擬如 VM tap 接口、VLAN、Bond)連接在同一個二層域中。
-
創建網橋接口:
ip link add name br0 type bridge # 創建名為 br0 的網橋
-
配置網橋參數 (可選):
ip link set dev br0 type bridge stp_state 1 # 啟用 STP (Spanning Tree Protocol) 防止環路 ip link set dev br0 type bridge forward_delay 2 # 設置轉發延遲 (秒)
-
將接口加入網橋:
ip link set eth0 master br0 # 將 eth0 加入網橋 br0 (成為橋端口) ip link set eth1 master br0 # 將 eth1 加入網橋 br0 ip link set tap0 master br0 # 將虛擬化 tap 接口 tap0 加入網橋 br0 ip link set bond0 master br0 # 將 Bond 接口 bond0 加入網橋 br0 ip link set eth0.10 master br0 # 將 VLAN 接口 eth0.10 加入網橋 br0
- 加入網橋的接口不應該有自己的 IP 地址(管理地址除外)。流量在二層轉發。
-
啟用網橋和橋端口:
ip link set dev br0 up # 啟用網橋 ip link set dev eth0 up # 啟用橋端口 ip link set dev eth1 up # ... 啟用其他橋端口 ...
-
為網橋分配 IP 地址 (可選):
如果你想讓網橋本身具有一個 IP 地址(例如,作為這個橋接網絡的網關或管理地址):ip addr add 192.168.1.1/24 dev br0
-
查看網橋信息:
bridge link show # 顯示所有橋端口及其狀態 bridge vlan show # 顯示網橋上的 VLAN 配置 (如果使用) ip link show type bridge # 顯示所有網橋接口 ip -d link show br0 # 顯示 br0 的詳細信息
總結與關鍵命令回顧
功能 | 核心命令 |
---|---|
查看 | ip link show , ip addr show , ip -s link show , bridge link show , cat /proc/net/bonding/bond0 |
以太網 | ip link set ethX up/down , ip addr add/del ... dev ethX |
Bond | ip link add bondX type bond mode ... , ip link set ethX master bondX |
VLAN | ip link add link PARENT name NAME type vlan id VID |
Bridge | ip link add name brX type bridge , ip link set DEV master brX |
通用啟用 | ip link set dev DEV up |
分配 IP | ip addr add ADDR/MASK dev DEV |
重要提醒:
- 這些
ip
命令的配置不是持久的。服務器重啟后配置會丟失。 - 持久化配置至關重要! 務必根據你的 Linux 發行版使用其網絡配置機制(
/etc/network/interfaces
, NetworkManager,systemd-networkd
,/etc/sysconfig/network-scripts/
)將所需的配置保存下來。 - 在修改生產環境配置前,務必在測試環境驗證或在維護窗口操作。
- 使用
ip -d link show DEV
查看接口的詳細信息(類型、狀態、參數、從屬關系等)是故障排除的關鍵步驟。
通過熟練掌握這些 iproute2
命令,你可以靈活地配置和管理 Linux 系統中復雜的網絡拓撲結構。
iproute2 配置模板:Bond、VLAN、Bridge
以下是使用 iproute2 配置 Bond、VLAN 和 Bridge 的完整模板,包含基礎配置和高級組合方案。所有配置均為臨時生效,重啟后會丟失,永久配置方法見最后部分。
一、基礎配置模板
1. Bond 綁定接口模板
# 加載bonding模塊
sudo modprobe bonding# 創建bond0接口 (802.3ad LACP模式)
sudo ip link add bond0 type bond mode 802.3ad# 配置bond參數
echo 100 | sudo tee /sys/class/net/bond0/bonding/miimon
echo fast | sudo tee /sys/class/net/bond0/bonding/lacp_rate
echo layer3+4 | sudo tee /sys/class/net/bond0/bonding/xmit_hash_policy# 添加物理接口到bond
sudo ip link set eth1 down
sudo ip link set eth2 down
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0# 啟用bond接口
sudo ip link set bond0 up# 配置IP地址
sudo ip addr add 192.168.1.100/24 dev bond0
sudo ip route add default via 192.168.1.1
2. VLAN 接口模板
# 在物理接口上創建VLAN
sudo ip link add link eth0 name vlan10 type vlan id 10# 在bond接口上創建VLAN
sudo ip link add link bond0 name vlan-bond type vlan id 20# 啟用VLAN接口
sudo ip link set vlan10 up
sudo ip link set vlan-bond up# 配置IP地址
sudo ip addr add 10.10.10.2/24 dev vlan10
sudo ip addr add 10.20.20.2/24 dev vlan-bond
3. Bridge 網橋模板
# 創建網橋
sudo ip link add br0 type bridge# 配置網橋參數
sudo ip link set dev br0 type bridge stp_state 0
echo 0 | sudo tee /sys/class/net/br0/bridge/forward_delay# 添加接口到網橋
sudo ip link set eth3 master br0
sudo ip link set vlan10 master br0# 啟用網橋
sudo ip link set br0 up# 配置IP地址
sudo ip addr add 192.168.2.1/24 dev br0
sudo ip route add default via 192.168.2.254
二、高級組合模板
1. Bond + VLAN 模板
# 創建bond0
sudo ip link add bond0 type bond mode active-backup
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0
sudo ip link set bond0 up# 在bond上創建VLAN
sudo ip link add link bond0 name vlan100 type vlan id 100
sudo ip link set vlan100 up# 配置IP
sudo ip addr add 10.100.0.2/24 dev vlan100
2. Bond + VLAN + Bridge 模板
# 1. 創建bond
sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set eth1 down
sudo ip link set eth2 down
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0
sudo ip link set bond0 up# 2. 在bond上創建VLAN
sudo ip link add link bond0 name vlan100 type vlan id 100
sudo ip link set vlan100 up# 3. 創建網橋
sudo ip link add br-vlan100 type bridge
sudo ip link set br-vlan100 up# 4. 將VLAN加入網橋
sudo ip link set vlan100 master br-vlan100# 5. 配置網橋IP
sudo ip addr add 10.100.0.1/24 dev br-vlan100
3. 多VLAN網橋模板
# 創建網橋
sudo ip link add br-multi type bridge
sudo ip link set br-multi up# 創建并添加VLAN10
sudo ip link add link eth0 name vlan10 type vlan id 10
sudo ip link set vlan10 master br-multi
sudo ip link set vlan10 up# 創建并添加VLAN20
sudo ip link add link eth0 name vlan20 type vlan id 20
sudo ip link set vlan20 master br-multi
sudo ip link set vlan20 up# 配置網橋IP
sudo ip addr add 192.168.10.1/24 dev br-multi
1. Bond (鏈路聚合) 模板
# 創建 Bond 接口 (模式: 802.3ad/LACP)
ip link add bond0 type bond mode 802.3ad \miimon 100 \ # 鏈路監控間隔 (ms)lacp_rate fast \ # LACP 速率 (fast=1s, slow=30s)xmit_hash_policy layer3+4 # 負載均衡策略# 添加物理接口到 Bond
ip link set eth0 master bond0
ip link set eth1 master bond0# 啟用 Bond 并分配 IP
ip link set bond0 up
ip addr add 192.168.1.10/24 dev bond0
常用模式替換:
- 主備冗余:
mode active-backup primary eth0
- 輪詢負載:
mode balance-rr
- 基礎負載均衡:
mode balance-xor
2. VLAN (虛擬局域網) 模板
# 在物理接口/Bond 上創建 VLAN
ip link add link bond0 name bond0.10 type vlan id 10 # VLAN ID=10# 啟用 VLAN 接口并分配 IP
ip link set bond0.10 up
ip addr add 192.168.10.1/24 dev bond0.10
3. Bridge (網橋) 模板
# 創建網橋
ip link add br0 type bridge \stp_state 1 \ # 啟用生成樹協議 (防環)forward_delay 2 # 轉發延遲 (秒)# 添加接口到網橋 (物理/VLAN接口)
ip link set eth2 master br0 # 物理接口
ip link set bond0.20 master br0 # VLAN接口# 啟用網橋并分配 IP
ip link set br0 up
ip addr add 192.168.20.1/24 dev br0
4. 組合模板:Bond + VLAN + Bridge
# ===== 1. 創建 Bond =====
ip link add bond0 type bond mode 802.3ad miimon 100
ip link set eth0 master bond0
ip link set eth1 master bond0
ip link set bond0 up# ===== 2. 在 Bond 上創建 VLAN =====
ip link add link bond0 name bond0.10 type vlan id 10 # VLAN 10
ip link add link bond0 name bond0.20 type vlan id 20 # VLAN 20
ip link set bond0.10 up
ip link set bond0.20 up# ===== 3. 創建網橋并加入 VLAN =====
# 網橋1 (VLAN 10)
ip link add br-vlan10 type bridge stp_state 1
ip link set bond0.10 master br-vlan10
ip link set br-vlan10 up
ip addr add 10.10.1.1/24 dev br-vlan10 # 管理IP# 網橋2 (VLAN 20)
ip link add br-vlan20 type bridge
ip link set bond0.20 master br-vlan20
ip link set br-vlan20 up
# (可選) 不分配IP,純二層交換
關鍵命令說明
功能 | 命令 |
---|---|
查看鏈路狀態 | ip link show |
查看IP地址 | ip addr show |
查看路由表 | ip route show |
查看網橋端口 | bridge link show |
查看VLAN配置 | bridge vlan show (或 cat /proc/net/vlan/config ) |
查看Bond狀態 | cat /proc/net/bonding/bond0 |
刪除接口 | ip link delete bond0 |
從網橋移除端口 | ip link set eth0 nomaster |
三、永久化配置方法
1. systemd-networkd 配置
# /etc/systemd/network/20-bond0.netdev
[NetDev]
Name=bond0
Kind=bond[Bond]
Mode=802.3ad
MIIMonitorSec=100ms# /etc/systemd/network/21-bond-slaves.network
[Match]
Name=eth1 eth2[Network]
Bond=bond0# /etc/systemd/network/30-vlan100.netdev
[NetDev]
Name=vlan100
Kind=vlan[VLAN]
Id=100# /etc/systemd/network/31-vlan100.network
[Match]
Name=vlan100[Network]
Bridge=br0# /etc/systemd/network/40-br0.netdev
[NetDev]
Name=br0
Kind=bridge# /etc/systemd/network/41-br0.network
[Match]
Name=br0[Network]
Address=192.168.1.1/24
Gateway=192.168.1.254
2. Netplan 配置 (Ubuntu)
network:version: 2renderer: networkdbonds:bond0:interfaces: [eth1, eth2]parameters:mode: 802.3adlacp-rate: fastmii-monitor-interval: 100vlans:vlan100:id: 100link: bond0bridges:br0:interfaces: [vlan100]parameters:stp: falseforward-delay: 0addresses: [192.168.1.1/24]gateway4: 192.168.1.254
3. /etc/network/interfaces 配置 (Debian)
# Bond配置
auto bond0
iface bond0 inet manualbond-mode 802.3adbond-miimon 100bond-lacp-rate fastbond-slaves eth1 eth2# VLAN配置
auto vlan100
iface vlan100 inet manualvlan-raw-device bond0vlan-id 100# 網橋配置
auto br0
iface br0 inet staticbridge_ports vlan100bridge_stp offbridge_fd 0address 192.168.1.1netmask 255.255.255.0gateway 192.168.1.254
持久化配置參考
臨時配置重啟會丟失,持久化需寫入配置文件(根據發行版選擇):
Debian/Ubuntu (/etc/network/interfaces
):
# Bond 配置
auto bond0
iface bond0 inet manualbond-mode 802.3adbond-miimon 100bond-slaves eth0 eth1# VLAN 配置
auto bond0.10
iface bond0.10 inet manualvlan-raw-device bond0# Bridge 配置
auto br-vlan10
iface br-vlan10 inet staticaddress 10.10.1.1/24bridge_ports bond0.10bridge_stp on
RHEL/CentOS (ifcfg-bond0
):
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BONDING_OPTS="mode=802.3ad miimon=100"
ONBOOT=yes# /etc/sysconfig/network-scripts/ifcfg-bond0.10
DEVICE=bond0.10
VLAN=yes
PHYSDEV=bond0
ONBOOT=yes
BRIDGE=br-vlan10# /etc/sysconfig/network-scripts/ifcfg-br-vlan10
DEVICE=br-vlan10
TYPE=Bridge
IPADDR=10.10.1.1
NETMASK=255.255.255.0
ONBOOT=yes
四、診斷與維護命令
1. 查看網絡狀態
# 所有接口狀態
ip -c link show# 查看IP配置
ip -c addr show# 查看路由
ip -c route show
2. Bond 診斷
# 綁定狀態
cat /proc/net/bonding/bond0# 從屬接口狀態
grep "" /sys/class/net/bond0/bonding/slave_*
3. VLAN 診斷
# VLAN配置
ip -d link show vlan100# VLAN過濾
bridge vlan show
4. Bridge 診斷
# MAC地址表
bridge fdb show# STP狀態
bridge stp show
五、配置腳本模板
綜合配置腳本
#!/bin/bash
# 網絡配置腳本 - bond0 + vlan100 + br0# 加載模塊
modprobe bonding
modprobe 8021q# 創建bond0
ip link add bond0 type bond mode 802.3ad
echo 100 > /sys/class/net/bond0/bonding/miimon
echo fast > /sys/class/net/bond0/bonding/lacp_rate
ip link set eth1 down
ip link set eth2 down
ip link set eth1 master bond0
ip link set eth2 master bond0
ip link set bond0 up# 創建VLAN
ip link add link bond0 name vlan100 type vlan id 100
ip link set vlan100 up# 創建網橋
ip link add br0 type bridge
echo 0 > /sys/class/net/br0/bridge/forward_delay
ip link set vlan100 master br0
ip addr add 10.100.0.1/24 dev br0
ip link set br0 up# 設置默認路由
ip route add default via 10.100.0.254
服務管理腳本
#!/bin/bash
# 網絡服務管理腳本case "$1" instart)echo "Starting network configuration..."/path/to/network-script.sh;;stop)echo "Resetting network..."ip link del br0 2>/dev/nullip link del vlan100 2>/dev/nullip link del bond0 2>/dev/null;;status)echo "### Bond Status ###"cat /proc/net/bonding/bond0echo -e "\n### Bridge Status ###"bridge link;;*)echo "Usage: $0 {start|stop|status}"exit 1
esac
六、最佳實踐
-
接口命名規范:
- Bond接口:
bond0
,bond1
- VLAN接口:
vlan<ID>
如vlan100
- 網橋接口:
br<用途>
如br-mgmt
- Bond接口:
-
配置順序原則:
-
安全增強:
# 禁用IPv6 echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6# 關閉不必要的協議 echo 0 > /proc/sys/net/ipv4/conf/all/accept_redirects
-
性能優化:
# 增加網絡緩沖區 echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf echo "net.core.wmem_max=16777216" >> /etc/sysctl.conf# 啟用GRO/GSO ethtool -K eth0 gro on gso on
通過這些模板,您可以快速配置各種網絡拓撲。對于生產環境,建議使用 systemd-networkd 或 Netplan 實現永久配置。
Linux iproute2 配置指南:以太網、綁定、VLAN 和網橋
iproute2 是現代 Linux 系統中強大的網絡配置工具集,提供了靈活的命令行方式來管理各種網絡組件。下面詳細介紹如何使用 iproute2 配置以太網、綁定、VLAN 和網橋。
一、以太網 (Ethernet) 配置
1. 基本配置
# 啟用接口
ip link set eth0 up# 配置IP地址
ip addr add 192.168.1.100/24 dev eth0# 設置默認網關
ip route add default via 192.168.1.1# 配置DNS (需編輯resolv.conf)
echo "nameserver 8.8.8.8" > /etc/resolv.conf
2. 高級選項
# 設置MTU
ip link set eth0 mtu 9000# 更改MAC地址
ip link set eth0 address 00:11:22:33:44:55# 查看接口狀態
ip -s link show eth0
二、綁定 (Bond) 配置
1. 創建綁定接口
# 加載綁定模塊
modprobe bonding# 創建綁定接口
ip link add bond0 type bond mode 802.3ad# 設置綁定參數
echo 100 > /sys/class/net/bond0/bonding/miimon
echo fast > /sys/class/net/bond0/bonding/lacp_rate
echo layer3+4 > /sys/class/net/bond0/bonding/xmit_hash_policy
2. 添加成員接口
# 添加接口到綁定
ip link set eth1 down
ip link set eth1 master bond0ip link set eth2 down
ip link set eth2 master bond0# 啟用綁定接口
ip link set bond0 up# 配置IP
ip addr add 10.0.0.5/24 dev bond0
3. 查看綁定狀態
# 查看綁定狀態
cat /proc/net/bonding/bond0# 查看接口關系
ip link show
三、虛擬局域網 (VLAN) 配置
1. 基本VLAN配置
# 加載802.1Q模塊
modprobe 8021q# 創建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100# 啟用VLAN接口
ip link set eth0.100 up# 配置IP
ip addr add 192.168.100.10/24 dev eth0.100
2. 在綁定接口上創建VLAN
# 在bond0上創建VLAN
ip link add link bond0 name bond0.200 type vlan id 200# 啟用并配置IP
ip link set bond0.200 up
ip addr add 10.200.0.5/24 dev bond0.200
3. 查看VLAN配置
# 查看VLAN信息
ip -d link show eth0.100# 輸出示例:
# 5: eth0.100@eth0: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN
# link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ff
# vlan protocol 802.1Q id 100 <REORDER_HDR>
四、網橋 (Bridge) 配置
1. 創建基礎網橋
# 創建網橋
ip link add br0 type bridge# 設置STP參數
echo 1 > /sys/class/net/br0/bridge/stp_state
echo 2 > /sys/class/net/br0/bridge/hello_time
echo 15 > /sys/class/net/br0/bridge/forward_delay# 啟用網橋
ip link set br0 up
2. 添加接口到網橋
# 添加物理接口
ip link set eth3 down
ip link set eth3 master br0
ip link set eth3 up# 添加VLAN接口
ip link set bond0.200 down
ip link set bond0.200 master br0
ip link set bond0.200 up# 配置網橋IP
ip addr add 172.16.0.10/24 dev br0
3. 高級網橋配置
# 啟用VLAN過濾
echo 1 > /sys/class/net/br0/bridge/vlan_filtering# 配置VLAN成員
bridge vlan add dev eth3 vid 100 pvid untagged
bridge vlan add dev bond0.200 vid 100-200# 查看網橋信息
bridge link show
bridge vlan show
五、綜合配置示例
場景:綁定 → VLAN → 網橋
# 1. 創建綁定
modprobe bonding
ip link add bond0 type bond mode 802.3ad
ip link set eth1 down
ip link set eth1 master bond0
ip link set eth2 down
ip link set eth2 master bond0
ip link set bond0 up# 2. 在綁定上創建VLAN
ip link add link bond0 name mgmt_vlan type vlan id 100
ip link set mgmt_vlan up# 3. 創建網橋
ip link add br-mgmt type bridge
ip link set br-mgmt up# 4. 添加VLAN到網橋
ip link set mgmt_vlan master br-mgmt# 5. 配置網橋IP
ip addr add 10.100.0.5/24 dev br-mgmt# 6. 設置默認網關
ip route add default via 10.100.0.1
六、持久化配置
iproute2 命令重啟后會失效,需要將配置添加到啟動腳本:
1. 創建啟動腳本 (/usr/local/bin/setup-network.sh
)
#!/bin/bash# 設置綁定
ip link add bond0 type bond mode 802.3ad
ip link set eth1 down
ip link set eth1 master bond0
ip link set eth2 down
ip link set eth2 master bond0
ip link set bond0 up# 設置VLAN
ip link add link bond0 name mgmt_vlan type vlan id 100
ip link set mgmt_vlan up# 設置網橋
ip link add br-mgmt type bridge
ip link set br-mgmt up
ip link set mgmt_vlan master br-mgmt
ip addr add 10.100.0.5/24 dev br-mgmt# 設置路由
ip route add default via 10.100.0.1
2. 添加執行權限
chmod +x /usr/local/bin/setup-network.sh
3. 創建 systemd 服務 (/etc/systemd/system/network-setup.service
)
[Unit]
Description=Custom Network Setup
After=network.target[Service]
Type=oneshot
ExecStart=/usr/local/bin/setup-network.sh[Install]
WantedBy=multi-user.target
4. 啟用服務
systemctl daemon-reload
systemctl enable network-setup.service
七、常用診斷命令
1. 通用狀態查看
# 查看所有接口
ip link show# 查看IP地址
ip addr show# 查看路由表
ip route show# 查看ARP表
ip neigh show
2. 綁定診斷
# 查看綁定狀態
cat /proc/net/bonding/bond0# 查看從屬接口狀態
ip -d link show eth1
3. VLAN診斷
# 查看VLAN配置
ip -d link show eth0.100# 查看VLAN流量統計
ethtool -S eth0 | grep rx_vlan
4. 網橋診斷
# 查看網橋狀態
bridge link show# 查看MAC地址表
bridge fdb show br0# 查看STP狀態
bridge stp show br0
八、高級配置技巧
1. 多IP地址配置
# 添加多個IP地址
ip addr add 192.168.1.100/24 dev eth0
ip addr add 10.0.0.100/24 dev eth0
2. VLAN過濾規則
# 添加VLAN過濾規則
bridge vlan add dev eth0 vid 100
bridge vlan add dev eth0 vid 200
bridge vlan del dev eth0 vid 1 # 刪除默認VLAN# 設置PVID
bridge vlan add dev eth0 vid 100 pvid
3. 網橋監控
# 啟用端口監控
bridge link set dev eth0 monitoring on# 查看監控狀態
bridge -j -p link show dev eth0 | jq
4. 綁定負載均衡優化
# 設置高級哈希策略
echo layer3+4 > /sys/class/net/bond0/bonding/xmit_hash_policy# 可用策略:
# layer2:MAC地址
# layer2+3:MAC+IP
# layer3+4:IP+端口(推薦TCP/UDP)
# encap2+3:隧道場景
# encap3+4:隧道IP+端口
九、故障排除指南
1. 接口無法啟動
# 檢查驅動狀態
ethtool -i eth0# 檢查物理連接
ethtool eth0# 查看內核日志
dmesg | grep eth0
2. VLAN流量不通
# 檢查交換機配置
# 確保交換機端口設置為trunk模式# 檢查VLAN ID
ip -d link show eth0.100 | grep 'vlan id'# 檢查父接口狀態
ip link show eth0
3. 綁定接口故障
# 查看綁定狀態
cat /proc/net/bonding/bond0# 檢查MII監控
cat /sys/class/net/bond0/bonding/miimon# 檢查鏈路狀態
ethtool eth1
ethtool eth2
4. 網橋問題
# 檢查STP阻塞
bridge stp show br0 | grep state# 檢查VLAN過濾
cat /sys/class/net/br0/bridge/vlan_filtering# 刷新MAC表
bridge fdb flush dev eth0
十、性能優化建議
1. 禁用不需要的功能
# 禁用ARP
echo 1 > /proc/sys/net/ipv4/conf/eth0/arp_ignore# 禁用IPv6
sysctl -w net.ipv6.conf.all.disable_ipv6=1
2. 調整網絡參數
# 增加socket緩沖區
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216# 增加連接跟蹤表
sysctl -w net.netfilter.nf_conntrack_max=1000000
3. 中斷平衡
# 安裝irqbalance
apt install irqbalance# 或手動設置CPU親和性
echo 3 > /proc/irq/$(awk -F: '/eth0/{print $1}' /proc/interrupts)/smp_affinity
十一、替代持久化方案
使用 netplan (Ubuntu 18.04+)
network:version: 2renderer: networkdethernets:eth1: {}eth2: {}bonds:bond0:interfaces: [eth1, eth2]parameters:mode: 802.3adlacp-rate: fastvlans:vlan100:link: bond0id: 100bridges:br0:interfaces: [vlan100]addresses: [10.100.0.5/24]
使用 NetworkManager
nmcli con add type bond con-name bond0 ifname bond0 bond.options "mode=802.3ad"
nmcli con add type bond-slave ifname eth1 master bond0
nmcli con add type vlan con-name vlan100 dev bond0 id 100
nmcli con add type bridge con-name br0 ifname br0
nmcli con add type bridge-slave ifname vlan100 master br0
nmcli con modify br0 ipv4.addresses 10.100.0.5/24 ipv4.method manual
通過 iproute2,您可以構建從簡單到復雜的企業級網絡架構,所有命令都可以通過腳本自動化執行。對于生產環境,建議結合持久化方案和監控工具,確保網絡配置的穩定運行。
Linux iproute2 配置:Ethernet、Bond、VLAN、Bridge 完全指南
iproute2 是 Linux 系統中最強大的網絡配置工具集,提供了底層網絡接口的控制能力。以下是使用 iproute2 配置以太網卡、綁定接口、VLAN 和網橋的詳細指南。
一、iproute2 工具集概覽
工具 | 功能 | 常用命令 |
---|---|---|
ip | 接口/路由管理 | ip link , ip addr , ip route |
bridge | 網橋管理 | bridge link , bridge fdb |
tc | 流量控制 | tc qdisc , tc filter |
ss | 套接字統計 | ss -tuln |
二、以太網卡 (Ethernet) 配置
1. 基本配置
# 啟用接口
sudo ip link set dev enp3s0 up# 分配靜態IP
sudo ip addr add 192.168.1.100/24 dev enp3s0# 設置默認網關
sudo ip route add default via 192.168.1.1# 設置DNS(需修改/etc/resolv.conf)
echo "nameserver 8.8.8.8" | sudo tee /etc/resolv.conf
2. 高級配置
# 設置MTU(巨幀)
sudo ip link set dev enp3s0 mtu 9000# 啟用混雜模式
sudo ip link set dev enp3s0 promisc on# 禁用IPv6
sudo sysctl -w net.ipv6.conf.enp3s0.disable_ipv6=1
三、綁定接口 (Bond) 配置
1. 創建綁定接口
# 加載bonding模塊
sudo modprobe bonding mode=802.3ad miimon=100# 創建bond接口
sudo ip link add bond0 type bond mode 802.3ad# 設置LACP速率
echo 1 | sudo tee /sys/class/net/bond0/bonding/lacp_rate
2. 添加從屬接口
# 添加第一個接口
sudo ip link set enp3s0 down
sudo ip link set enp3s0 master bond0
sudo ip link set enp3s0 up# 添加第二個接口
sudo ip link set enp4s0 down
sudo ip link set enp4s0 master bond0
sudo ip link set enp4s0 up# 激活bond接口
sudo ip link set bond0 up
3. 驗證綁定狀態
cat /proc/net/bonding/bond0
輸出示例:
Bonding Mode: IEEE 802.3ad Dynamic link aggregation
Slave Interface: enp3s0
MII Status: up
Slave Interface: enp4s0
MII Status: up
四、虛擬局域網 (VLAN) 配置
1. 創建VLAN接口
# 加載8021q模塊
sudo modprobe 8021q# 創建VLAN接口
sudo ip link add link enp3s0 name vlan10 type vlan id 10# 配置IP地址
sudo ip addr add 10.10.10.2/24 dev vlan10# 啟用接口
sudo ip link set dev vlan10 up
2. 驗證VLAN配置
ip -d link show vlan10
輸出示例:
5: vlan10@enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP mode DEFAULT group default qlen 1000link/ether 00:11:22:33:44:55 brd ff:ff:ff:ff:ff:ffvlan protocol 802.1Q id 10 <REORDER_HDR>
五、網橋 (Bridge) 配置
1. 創建基本網橋
# 創建網橋接口
sudo ip link add name br0 type bridge# 設置STP參數
sudo ip link set dev br0 type bridge stp_state 1
sudo ip link set dev br0 type bridge forward_delay 1500 # 毫秒
sudo ip link set dev br0 type bridge hello_time 200 # 毫秒# 啟用網橋
sudo ip link set dev br0 up
2. 添加接口到網橋
# 添加物理接口
sudo ip link set enp3s0 master br0# 添加VLAN接口
sudo ip link set vlan10 master br0# 添加綁定接口
sudo ip link set bond0 master br0
3. 配置網橋網絡
# 分配IP地址
sudo ip addr add 192.168.1.100/24 dev br0# 設置默認網關
sudo ip route add default via 192.168.1.1 dev br0
六、完整配置示例:多層級網絡
場景:綁定 + VLAN + 網橋
# 1. 創建綁定
sudo modprobe bonding mode=802.3ad
sudo ip link add bond0 type bond
sudo ip link set enp3s0 down && sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 down && sudo ip link set enp4s0 master bond0
sudo ip link set bond0 up# 2. 創建VLAN
sudo modprobe 8021q
sudo ip link add link bond0 name vlan10 type vlan id 10
sudo ip link set vlan10 up# 3. 創建網橋
sudo ip link add br0 type bridge
sudo ip link set vlan10 master br0
sudo ip addr add 10.10.10.2/24 dev br0
sudo ip link set br0 up# 4. 添加路由
sudo ip route add default via 10.10.10.1 dev br0
七、驗證命令
1. 接口狀態
ip -c link show
2. IP地址分配
ip -c addr show
3. 路由表
ip -c route show
4. 網橋信息
bridge -c link show
bridge -c fdb show
bridge -c stp show
5. VLAN配置
cat /proc/net/vlan/config
6. 綁定狀態
cat /proc/net/bonding/bond0
八、持久化配置
iproute2 命令是臨時的,重啟后失效。要實現持久化,需結合系統配置:
1. systemd-networkd (推薦)
# /etc/systemd/network/10-bond0.netdev
[NetDev]
Name=bond0
Kind=bond[Bond]
Mode=802.3ad
LACPTransmitRate=fast
2. /etc/network/interfaces (Debian/Ubuntu)
auto bond0
iface bond0 inet manualbond-mode 802.3adbond-miimon 100bond-slaves enp3s0 enp4s0
3. Netplan (Ubuntu 18.04+)
network:version: 2bonds:bond0:interfaces: [enp3s0, enp4s0]parameters:mode: 802.3ad
九、高級功能
1. 流量控制 (QoS)
# 添加HTB隊列
sudo tc qdisc add dev br0 root handle 1: htb default 10# 添加帶寬限制
sudo tc class add dev br0 parent 1: classid 1:10 htb rate 100mbit
2. 網橋防火墻
# 允許橋接流量
sudo sysctl -w net.bridge.bridge-nf-call-iptables=1# 添加防火墻規則
sudo iptables -A FORWARD -i br0 -j ACCEPT
3. 多播優化
# 啟用IGMP監聽
sudo ip link set br0 type bridge mcast_snooping 1# 設置查詢器
sudo ip link set br0 type bridge mcast_querier 1
十、故障排除
1. 接口不工作
# 檢查驅動
ethtool -i enp3s0# 檢查鏈路狀態
ethtool enp3s0
2. VLAN 不通
# 檢查VLAN標簽
tcpdump -i enp3s0 -nn -e vlan# 驗證交換機配置
# 確保交換機端口設置為Trunk模式
3. 網橋不轉發
# 檢查STP阻塞
bridge stp show br0 | grep "state forwarding"# 禁用STP測試
sudo ip link set br0 type bridge stp_state 0
4. 綁定性能差
# 檢查從屬接口狀態
cat /proc/net/bonding/bond0 | grep "MII Status"# 檢查LACP協商
cat /proc/net/bonding/bond0 | grep "partner lacp rate"
十一、最佳實踐
-
命名規范:
# VLAN接口:<父接口>.<vlan_id> sudo ip link add link bond0 name bond0.10 type vlan id 10# 網橋:br-<用途> sudo ip link add name br-mgmt type bridge
-
安全加固:
# 禁用未使用的協議 sudo sysctl -w net.ipv6.conf.br0.disable_ipv6=1# 啟用MAC過濾 sudo bridge link set dev vlan10 learning off sudo bridge link set dev vlan10 flood off
-
性能優化:
# 增加緩沖區 sudo sysctl -w net.core.netdev_max_backlog=10000# 啟用GRO/GSO sudo ethtool -K enp3s0 gro on gso on
-
配置備份:
# 導出當前配置 ip link show > network-config.txt ip addr show >> network-config.txt ip route show >> network-config.txt
-
腳本化管理:
#!/bin/bash # 網絡配置腳本 ip link set enp3s0 up ip link add bond0 type bond mode 802.3ad ip link set enp3s0 master bond0 ip link set enp4s0 master bond0 ip link add link bond0 name vlan10 type vlan id 10 ip link add br0 type bridge ip link set vlan10 master br0 ip addr add 192.168.1.100/24 dev br0 ip link set br0 up ip route add default via 192.168.1.1
通過 iproute2,您可以實現從簡單到復雜的各種網絡配置,這些命令提供了對 Linux 網絡棧的底層控制能力。對于生產環境,建議將最終配置持久化到系統網絡配置文件中。
Linux iproute2 配置:Ethernet, Bond, VLAN, Bridge 詳解
iproute2 是 Linux 強大的網絡配置工具集,提供直接操作內核網絡棧的能力。以下是使用 iproute2 配置各類網絡組件的完整指南:
一、以太網卡 (Ethernet) 配置
1. 基礎接口管理
# 啟用/禁用接口
sudo ip link set dev eth0 up
sudo ip link set dev eth0 down# 查看接口狀態
ip link show eth0# 設置MAC地址
sudo ip link set dev eth0 address 00:11:22:33:44:55
2. IP地址配置
# 添加IP地址
sudo ip addr add 192.168.1.100/24 dev eth0# 添加輔助IP
sudo ip addr add 192.168.1.101/24 dev eth0 label eth0:1# 刪除IP地址
sudo ip addr del 192.168.1.100/24 dev eth0# 查看IP配置
ip addr show eth0
3. 路由配置
# 添加默認網關
sudo ip route add default via 192.168.1.1 dev eth0# 添加靜態路由
sudo ip route add 10.0.0.0/8 via 192.168.1.2 dev eth0# 查看路由表
ip route show
二、綁定接口 (Bonding) 配置
1. 加載bonding模塊
# 加載模塊
sudo modprobe bonding# 查看支持的模式
cat /sys/class/net/bond0/bonding/mode
2. 創建綁定接口
# 創建bond0接口
sudo ip link add bond0 type bond mode 802.3ad# 配置參數
echo 100 | sudo tee /sys/class/net/bond0/bonding/miimon
echo fast | sudo tee /sys/class/net/bond0/bonding/lacp_rate# 啟用bond0
sudo ip link set bond0 up
3. 添加從屬接口
# 添加物理接口到bond
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0# 查看綁定狀態
cat /proc/net/bonding/bond0# 配置IP
sudo ip addr add 192.168.2.100/24 dev bond0
三、虛擬局域網 (VLAN) 配置
1. 創建VLAN接口
# 在eth0上創建VLAN ID 10
sudo ip link add link eth0 name vlan10 type vlan id 10# 啟用VLAN接口
sudo ip link set vlan10 up# 配置IP
sudo ip addr add 10.10.10.2/24 dev vlan10
2. 高級VLAN配置
# 在bond0上創建VLAN
sudo ip link add link bond0 name vlan-bond type vlan id 20# 設置QoS優先級
sudo ip link set vlan-bond type vlan egress-qos-map 0:1 1:2# 查看VLAN配置
ip -d link show vlan10
四、網橋 (Bridge) 配置
1. 創建網橋
# 創建網橋
sudo ip link add name br0 type bridge# 配置網橋參數
sudo ip link set dev br0 type bridge stp_state 0
echo 0 | sudo tee /sys/class/net/br0/bridge/forward_delay# 啟用網橋
sudo ip link set br0 up
2. 添加接口到網橋
# 添加物理接口
sudo ip link set eth3 master br0# 添加VLAN接口
sudo ip link set vlan10 master br0# 添加綁定接口
sudo ip link set bond0 master br0# 查看網橋狀態
bridge link
3. 配置網橋IP
# 為網橋配置IP
sudo ip addr add 192.168.3.1/24 dev br0# 設置默認網關
sudo ip route add default via 192.168.3.254 dev br0
五、高級組合配置示例
場景:Bonding + VLAN + Bridge
# 1. 創建綁定
sudo ip link add bond0 type bond mode active-backup
sudo ip link set eth1 master bond0
sudo ip link set eth2 master bond0
sudo ip link set bond0 up# 2. 在綁定上創建VLAN
sudo ip link add link bond0 name vlan100 type vlan id 100
sudo ip link set vlan100 up# 3. 創建網橋
sudo ip link add br-vlan100 type bridge
sudo ip link set br-vlan100 up# 4. 將VLAN加入網橋
sudo ip link set vlan100 master br-vlan100# 5. 配置網橋IP
sudo ip addr add 10.100.0.1/24 dev br-vlan100
六、永久化配置方法
1. systemd-networkd 配置文件
# /etc/systemd/network/10-bridge.netdev
[NetDev]
Name=br0
Kind=bridge# /etc/systemd/network/20-slave.network
[Match]
Name=eth0[Network]
Bridge=br0
2. netplan 配置 (Ubuntu)
# /etc/netplan/01-config.yaml
network:version: 2renderer: networkdbonds:bond0:interfaces: [eth1, eth2]parameters:mode: 802.3advlans:vlan100:id: 100link: bond0bridges:br0:interfaces: [vlan100]addresses: [192.168.100.1/24]
3. 啟動腳本 (通用)
#!/bin/bash
# /etc/rc.local# 創建bond
ip link add bond0 type bond mode balance-rr
ip link set eth1 master bond0
ip link set eth2 master bond0
ip link set bond0 up# 創建VLAN
ip link add link bond0 name vlan100 type vlan id 100
ip link set vlan100 up# 創建網橋
ip link add br0 type bridge
ip link set vlan100 master br0
ip addr add 192.168.100.1/24 dev br0
ip link set br0 up
七、診斷與維護命令
1. 通用狀態查看
# 查看所有接口
ip -c link show# 查看IP配置
ip -c addr show# 查看路由
ip -c route show
2. 綁定診斷
# 查看綁定狀態
cat /proc/net/bonding/bond0# 查看從屬接口狀態
grep "" /sys/class/net/bond0/bonding/slave_*
3. VLAN診斷
# 查看VLAN配置
ip -d link show vlan100# 查看VLAN過濾
bridge vlan show
4. 網橋診斷
# 查看網橋信息
bridge fdb show# 查看STP狀態
bridge stp show
八、性能優化技巧
1. 禁用不需要的功能
# 關閉IPv6
echo 1 > /proc/sys/net/ipv6/conf/all/disable_ipv6# 關閉ARP
ip link set dev eth0 arp off
2. 調整內核參數
# 增加網絡緩沖區
echo "net.core.rmem_max=16777216" >> /etc/sysctl.conf
echo "net.core.wmem_max=16777216" >> /etc/sysctl.conf
sysctl -p
3. 中斷平衡
# 安裝工具
sudo apt install irqbalance# 手動設置CPU親和性
echo 3 > /proc/irq/$(grep eth0 /proc/interrupts | cut -d: -f1)/smp_affinity
九、常見問題解決方案
問題 | 診斷命令 | 解決方案 |
---|---|---|
接口不工作 | ip link show | sudo ethtool -s eth0 speed 1000 duplex full autoneg on |
VLAN不通 | tcpdump -i eth0 -nn -e vlan | 交換機端口配置為trunk模式 |
綁定故障 | cat /proc/net/bonding/bond0 | 檢查物理鏈路狀態和綁定模式 |
網橋環路 | bridge stp show | 啟用STP:ip link set br0 type bridge stp_state 1 |
性能低下 | ethtool -S eth0 | 啟用GRO/GSO:ethtool -K eth0 gro on gso on |
十、命令速查表
功能 | 命令 |
---|---|
接口管理 | ip link set dev eth0 up/down |
IP配置 | ip addr add 192.168.1.2/24 dev eth0 |
路由配置 | ip route add default via 192.168.1.1 |
綁定配置 | ip link add bond0 type bond mode active-backup |
VLAN配置 | ip link add link eth0 name vlan10 type vlan id 10 |
網橋配置 | ip link add br0 type bridge |
添加接口 | ip link set eth0 master br0 |
狀態查看 | ip -c addr show |
通過掌握這些 iproute2 命令,您可以靈活配置從簡單到復雜的各種網絡拓撲。雖然這些配置是臨時的,但結合系統配置工具可輕松實現永久化。
Linux iproute2 網絡配置詳解:Ethernet, Bond, VLAN, Bridge
iproute2 是現代 Linux 系統的網絡配置工具集,提供了強大靈活的命令行工具來管理網絡設備。下面將詳細介紹如何使用 iproute2 配置以太網、綁定、VLAN 和網橋。
配置概覽
一、以太網接口 (Ethernet)
基礎配置
# 查看所有網絡接口
ip link show# 啟用/禁用接口
sudo ip link set enp3s0 up
sudo ip link set enp3s0 down# 配置IP地址
sudo ip addr add 192.168.1.100/24 dev enp3s0
sudo ip addr del 192.168.1.100/24 dev enp3s0# 設置默認網關
sudo ip route add default via 192.168.1.1
高級配置
# 更改MAC地址
sudo ip link set dev enp3s0 address 00:11:22:33:44:55# 設置MTU(最大傳輸單元)
sudo ip link set dev enp3s0 mtu 9000# 啟用/禁用混雜模式
sudo ip link set enp3s0 promisc on
sudo ip link set enp3s0 promisc off# 查看接口統計信息
ip -s link show enp3s0
二、綁定接口 (Bonding)
創建綁定接口
# 加載bonding模塊
sudo modprobe bonding# 創建bond接口
sudo ip link add bond0 type bond mode 802.3ad# 配置綁定模式(可選)
sudo ip link set bond0 type bond mode active-backup# 添加從屬接口
sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 master bond0# 啟用bond接口
sudo ip link set bond0 up# 分配IP地址
sudo ip addr add 192.168.1.100/24 dev bond0
綁定模式詳解
模式 | 值 | 說明 |
---|---|---|
balance-rr | 0 | 輪詢負載均衡 |
active-backup | 1 | 主備故障切換 |
balance-xor | 2 | 基于哈希的負載均衡 |
broadcast | 3 | 所有從屬接口廣播 |
802.3ad | 4 | LACP動態聚合 |
balance-tlb | 5 | 傳輸負載均衡 |
balance-alb | 6 | 自適應負載均衡 |
管理綁定接口
# 查看綁定狀態
cat /proc/net/bonding/bond0# 添加新從屬接口
sudo ip link set enp5s0 master bond0# 移除從屬接口
sudo ip link set enp5s0 nomaster# 更改綁定參數
sudo ip link set bond0 type bond miimon 100 lacp_rate fast
三、虛擬局域網 (VLAN)
創建VLAN接口
# 在物理接口上創建VLAN
sudo ip link add link enp3s0 name vlan100 type vlan id 100# 在綁定接口上創建VLAN
sudo ip link add link bond0 name vlan200 type vlan id 200# 啟用VLAN接口
sudo ip link set vlan100 up# 分配IP地址
sudo ip addr add 10.0.100.5/24 dev vlan100
高級VLAN配置
# 設置VLAN優先級 (QoS)
sudo ip link set vlan100 type vlan egress-qos-map 0:1 1:2 2:3# 配置原生VLAN
sudo ip link set vlan100 type vlan reorder_hdr off# 查看VLAN信息
ip -d link show vlan100# 刪除VLAN接口
sudo ip link del vlan100
四、網橋 (Bridge)
創建和管理網橋
# 創建網橋
sudo ip link add name br0 type bridge# 啟用網橋
sudo ip link set br0 up# 添加接口到網橋
sudo ip link set enp3s0 master br0
sudo ip link set vlan100 master br0# 從網橋移除接口
sudo ip link set enp3s0 nomaster# 為網橋分配IP
sudo ip addr add 192.168.1.1/24 dev br0
網橋高級配置
# 啟用STP(生成樹協議)
sudo ip link set br0 type bridge stp_state 1# 設置轉發延遲
sudo ip link set br0 type bridge forward_delay 5# 設置最大生存時間
sudo ip link set br0 type bridge max_age 10# 查看網橋信息
bridge link show
bridge fdb show br0
綜合配置示例
場景:綁定+VLAN+網橋
# 1. 創建綁定接口
sudo ip link add bond0 type bond mode 802.3ad
sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 master bond0
sudo ip link set bond0 up# 2. 在綁定接口上創建VLAN
sudo ip link add link bond0 name vlan100 type vlan id 100
sudo ip link set vlan100 up# 3. 創建網橋
sudo ip link add name br0 type bridge
sudo ip link set br0 up# 4. 添加VLAN接口到網橋
sudo ip link set vlan100 master br0# 5. 為網橋分配IP
sudo ip addr add 10.0.100.1/24 dev br0# 6. 設置默認網關
sudo ip route add default via 10.0.100.254
狀態查看與診斷
通用診斷命令
# 查看所有接口
ip link show# 查看IP地址配置
ip addr show# 查看路由表
ip route show# 查看ARP表
ip neigh show# 查看網絡統計
ip -s link
組件專用診斷
# 綁定接口狀態
cat /proc/net/bonding/bond0# VLAN信息
ip -d link show | grep vlan# 網橋信息
bridge link
bridge fdb show
bridge vlan show# STP狀態
bridge -j link show | jq '.[] | select(.master == "br0") | .stp_state'
持久化配置
iproute2 的配置是臨時的,重啟后會丟失。要永久保存配置:
方法1:使用 /etc/network/interfaces (Debian/Ubuntu)
# /etc/network/interfaces
auto br0
iface br0 inet staticaddress 192.168.1.1netmask 255.255.255.0bridge_ports enp3s0bridge_stp off
方法2:使用 systemd-networkd
# /etc/systemd/network/br0.netdev
[NetDev]
Name=br0
Kind=bridge# /etc/systemd/network/br0.network
[Match]
Name=br0[Network]
Address=192.168.1.1/24
方法3:創建初始化腳本
#!/bin/bash
# /usr/local/bin/network-setup.ship link add bond0 type bond mode 802.3ad
ip link set enp3s0 master bond0
ip link set bond0 upip link add link bond0 name vlan100 type vlan id 100
ip link set vlan100 upip link add name br0 type bridge
ip link set vlan100 master br0
ip addr add 10.0.100.1/24 dev br0
ip link set br0 up
添加到 systemd 服務:
# /etc/systemd/system/network-setup.service
[Unit]
Description=Custom Network Setup
After=network.target[Service]
Type=oneshot
ExecStart=/usr/local/bin/network-setup.sh[Install]
WantedBy=multi-user.target
高級技巧
1. 網絡命名空間隔離
# 創建網絡命名空間
sudo ip netns add ns1# 在命名空間中創建虛擬接口
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth1 netns ns1# 將虛擬接口加入網橋
sudo ip link set veth0 master br0
2. 流量監控
# 監控網橋流量
sudo tcpdump -i br0 -n# 監控VLAN流量
sudo tcpdump -i vlan100 -n -e vlan# 監控綁定接口
sudo tcpdump -i bond0 -n
3. 性能優化
# 禁用接口卸載功能
sudo ethtool -K enp3s0 rx off tx off tso off gso off gro off# 增加網橋緩存
sudo sysctl -w net.bridge.bridge-nf-call-iptables=0
sudo sysctl -w net.core.netdev_max_backlog=10000
4. 安全加固
# 禁用VLAN接口的MAC地址學習
sudo bridge link set dev vlan100 learning off# 設置靜態MAC地址表
sudo bridge fdb add 00:11:22:33:44:55 dev vlan100 master static# 啟用網橋防火墻
sudo iptables -A FORWARD -i br0 -j DROP
故障排除
常見問題解決
-
接口無法加入網橋
# 檢查接口狀態 ip link show enp3s0# 確保接口未激活 sudo ip link set enp3s0 down sudo ip addr flush dev enp3s0
-
VLAN流量不通
# 檢查物理接口是否支持VLAN ethtool -k enp3s0 | grep vlan# 驗證交換機端口配置(trunk模式)
-
綁定接口無流量
# 檢查綁定狀態 cat /proc/net/bonding/bond0# 驗證鏈路狀態 ethtool enp3s0
-
STP環路問題
# 臨時禁用STP sudo ip link set br0 type bridge stp_state 0# 檢查端口狀態 bridge link
診斷工具
# 網絡連通性測試
ping -I br0 8.8.8.8# 路由追蹤
traceroute -i br0 8.8.8.8# 帶寬測試
iperf3 -c server_ip -i 1 -t 10 -B br0_ip# 丟包檢測
mtr -rwbzc 100 8.8.8.8
通過掌握這些 iproute2 命令,您可以靈活配置和管理復雜的 Linux 網絡環境,從簡單的以太網連接到高級的綁定、VLAN 和網橋配置。
在 Linux 中,iproute2
套件(核心命令是 ip
)是管理網絡接口、路由、策略路由等的現代標準工具集,取代了過時的 net-tools
(如 ifconfig
, route
, arp
)。以下是使用 iproute2
配置以太網、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)的指南:
重要前提:
- 需要 root 權限: 所有配置命令都需要
sudo
或以root
用戶身份執行。 - 臨時 vs 持久化:
ip
命令所做的更改是臨時的,重啟后會丟失。要使配置持久化,你需要:- 使用網絡管理器: 如 NetworkManager (
nmcli
,nmtui
),systemd-networkd
(配置文件在/etc/systemd/network/
)。 - 編輯配置文件: 如 Debian/Ubuntu 的
/etc/network/interfaces
,或 RHEL/CentOS/Fedora 的/etc/sysconfig/network-scripts/ifcfg-*
(較新版本也轉向 NetworkManager 或systemd-networkd
)。 - 本文主要關注
ip
命令的運行時配置。持久化方法請參考你的發行版文檔。
- 使用網絡管理器: 如 NetworkManager (
- 接口命名: 示例中使用通用名稱(
eth0
,bond0
,vlan10
,br0
)。你的實際物理接口名稱可能不同(如enp0s3
,ens192
)。
1. 以太網 (Ethernet) 接口配置
-
查看接口狀態:
ip link show # 顯示所有接口狀態 ip addr show # 顯示所有接口的 IP 地址 ip addr show eth0 # 顯示 eth0 的詳細信息 ip -s link show eth0 # 顯示 eth0 的統計信息(流量、錯誤等)
-
啟用/禁用接口:
ip link set eth0 up # 啟用 eth0 ip link set eth0 down # 禁用 eth0
-
分配 IP 地址(臨時):
ip addr add 192.168.1.10/24 dev eth0 # 添加 IPv4 地址 ip addr add 2001:db8::10/64 dev eth0 # 添加 IPv6 地址 ip addr del 192.168.1.10/24 dev eth0 # 刪除 IPv4 地址
-
設置 MTU:
ip link set dev eth0 mtu 9000 # 設置 MTU 為 9000(Jumbo Frames)
2. 綁定 (Bonding / Link Aggregation) 配置
Bonding 將多個物理接口(Slave)聚合成一個邏輯接口(Master)以提供冗余、負載均衡或增加帶寬。
-
加載內核模塊:
modprobe bonding # 加載 bonding 模塊(通常已自動加載)
-
創建 Bond 接口:
ip link add bond0 type bond mode 802.3ad # 創建名為 bond0 的接口,使用 LACP (mode 4)
關鍵參數
mode
:balance-rr
(0):輪詢(負載均衡,容錯)。active-backup
(1):主備(容錯)。balance-xor
(2):基于源/目的 MAC 的 XOR 哈希(負載均衡,容錯)。broadcast
(3):廣播(容錯)。802.3ad
(4):LACP(動態聚合,需要交換機支持,負載均衡,容錯) - 常用。balance-tlb
(5):適配器傳輸負載均衡(容錯)。balance-alb
(6):適配器傳輸負載均衡 + 接收負載均衡(ARP 協商)(容錯) - 常用。
-
配置 Bond 參數 (可選):
ip link set bond0 type bond miimon 100 # 設置鏈路監控間隔為 100ms (重要!) ip link set bond0 type bond lacp_rate fast # 設置 LACP 速率 (僅 mode 4)
-
將物理接口加入 Bond:
ip link set eth0 master bond0 # 將 eth0 加入 bond0 作為 slave ip link set eth1 master bond0 # 將 eth1 加入 bond0 作為 slave
-
啟用 Bond 和 Slave 接口:
ip link set bond0 up ip link set eth0 up ip link set eth1 up
-
為 Bond 接口分配 IP 地址:
ip addr add 192.168.1.20/24 dev bond0
-
查看 Bond 狀態:
cat /proc/net/bonding/bond0 # 查看 bond0 的詳細狀態和 slave 信息
3. 虛擬局域網 (VLAN) 配置
VLAN 在單個物理接口上創建邏輯隔離的網絡。
-
創建 VLAN 接口:
ip link add link eth0 name eth0.10 type vlan id 10 # 在 eth0 上創建 VLAN ID 10 的接口 eth0.10
link eth0
: 指定父接口 (物理接口或 Bond)。name eth0.10
: 指定 VLAN 接口的名稱(習慣命名)。type vlan id 10
: 指定類型為 VLAN,ID 為 10。
-
啟用 VLAN 接口:
ip link set dev eth0.10 up
-
為 VLAN 接口分配 IP 地址:
ip addr add 192.168.10.1/24 dev eth0.10 # 分配 VLAN 10 的 IP
-
查看 VLAN 接口:
ip -d link show eth0.10 # `-d` 顯示詳細信息,能看到 VLAN ID
4. 網橋 (Bridge) 配置
網橋創建一個虛擬交換機,將多個接口(物理、虛擬如 VM tap 接口、VLAN、Bond)連接在同一個二層域中。
-
創建網橋接口:
ip link add name br0 type bridge # 創建名為 br0 的網橋
-
配置網橋參數 (可選):
ip link set dev br0 type bridge stp_state 1 # 啟用 STP (Spanning Tree Protocol) 防止環路 ip link set dev br0 type bridge forward_delay 2 # 設置轉發延遲 (秒)
-
將接口加入網橋:
ip link set eth0 master br0 # 將 eth0 加入網橋 br0 (成為橋端口) ip link set eth1 master br0 # 將 eth1 加入網橋 br0 ip link set tap0 master br0 # 將虛擬化 tap 接口 tap0 加入網橋 br0 ip link set bond0 master br0 # 將 Bond 接口 bond0 加入網橋 br0 ip link set eth0.10 master br0 # 將 VLAN 接口 eth0.10 加入網橋 br0
- 加入網橋的接口不應該有自己的 IP 地址(管理地址除外)。流量在二層轉發。
-
啟用網橋和橋端口:
ip link set dev br0 up # 啟用網橋 ip link set dev eth0 up # 啟用橋端口 ip link set dev eth1 up # ... 啟用其他橋端口 ...
-
為網橋分配 IP 地址 (可選):
如果你想讓網橋本身具有一個 IP 地址(例如,作為這個橋接網絡的網關或管理地址):ip addr add 192.168.1.1/24 dev br0
-
查看網橋信息:
bridge link show # 顯示所有橋端口及其狀態 bridge vlan show # 顯示網橋上的 VLAN 配置 (如果使用) ip link show type bridge # 顯示所有網橋接口 ip -d link show br0 # 顯示 br0 的詳細信息
總結與關鍵命令回顧
功能 | 核心命令 |
---|---|
查看 | ip link show , ip addr show , ip -s link show , bridge link show , cat /proc/net/bonding/bond0 |
以太網 | ip link set ethX up/down , ip addr add/del ... dev ethX |
Bond | ip link add bondX type bond mode ... , ip link set ethX master bondX |
VLAN | ip link add link PARENT name NAME type vlan id VID |
Bridge | ip link add name brX type bridge , ip link set DEV master brX |
通用啟用 | ip link set dev DEV up |
分配 IP | ip addr add ADDR/MASK dev DEV |
重要提醒:
- 這些
ip
命令的配置不是持久的。服務器重啟后配置會丟失。 - 持久化配置至關重要! 務必根據你的 Linux 發行版使用其網絡配置機制(
/etc/network/interfaces
, NetworkManager,systemd-networkd
,/etc/sysconfig/network-scripts/
)將所需的配置保存下來。 - 在修改生產環境配置前,務必在測試環境驗證或在維護窗口操作。
- 使用
ip -d link show DEV
查看接口的詳細信息(類型、狀態、參數、從屬關系等)是故障排除的關鍵步驟。
通過熟練掌握這些 iproute2
命令,你可以靈活地配置和管理 Linux 系統中復雜的網絡拓撲結構。
Linux iproute2 配置指南:以太網、綁定、VLAN、網橋
iproute2 是現代 Linux 網絡配置的核心工具集,提供了強大的命令行接口。以下是使用 iproute2 配置各種網絡組件的完整指南:
一、以太網接口配置
基礎配置:
# 啟用接口
sudo ip link set eth0 up# 配置IP地址
sudo ip addr add 192.168.1.100/24 dev eth0# 添加默認路由
sudo ip route add default via 192.168.1.1# 查看接口狀態
ip -c link show eth0
高級配置:
# 設置MTU(巨型幀)
sudo ip link set eth0 mtu 9000# 啟用混雜模式
sudo ip link set eth0 promisc on# 修改MAC地址
sudo ip link set eth0 address 00:11:22:33:44:55# 啟用硬件特性
sudo ethtool -K eth0 rx on tx on tso on gso on
二、綁定(Bond)接口配置
創建綁定接口:
# 加載bonding模塊
sudo modprobe bonding mode=802.3ad# 創建bond0接口
sudo ip link add bond0 type bond mode 802.3ad lacp_rate=fast# 添加物理接口
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0# 啟用綁定
sudo ip link set bond0 up
綁定模式配置:
# 查看可用模式
cat /sys/class/net/bond0/bonding/mode# 更改模式(示例:主備模式)
echo active-backup | sudo tee /sys/class/net/bond0/bonding/mode# 設置主接口
echo eth0 | sudo tee /sys/class/net/bond0/bonding/primary# 查看綁定狀態
cat /proc/net/bonding/bond0
三、VLAN 配置
基礎VLAN配置:
# 在物理接口上創建VLAN
sudo ip link add link eth0 name eth0.10 type vlan id 10# 在綁定接口上創建VLAN
sudo ip link add link bond0 name bond0.20 type vlan id 20# 啟用VLAN接口
sudo ip link set eth0.10 up# 配置IP地址
sudo ip addr add 192.168.10.100/24 dev eth0.10
高級VLAN配置:
# 設置VLAN優先級
sudo ip link set eth0.10 type vlan egress-qos-map 0:1 1:2 2:3# 添加多個VLAN
for id in {10..20}; dosudo ip link add link eth0 name eth0.$id type vlan id $id
done# 查看VLAN配置
cat /proc/net/vlan/config
四、網橋(Bridge)配置
基礎網橋配置:
# 創建網橋
sudo ip link add br0 type bridge# 啟用網橋
sudo ip link set br0 up# 添加接口到網橋
sudo ip link set eth0 master br0
sudo ip link set vlan10 master br0# 配置網橋IP
sudo ip addr add 10.0.0.1/24 dev br0
高級網橋功能:
# 啟用STP
sudo ip link set br0 type bridge stp_state 1# 設置轉發延遲(毫秒)
sudo ip link set br0 type bridge forward_delay 1500# 啟用VLAN過濾
sudo ip link set br0 type bridge vlan_filtering 1# 配置VLAN
sudo bridge vlan add vid 10 dev eth0 pvid
sudo bridge vlan add vid 10,20 dev eth0# 查看網橋狀態
bridge -c link show
五、綜合配置示例:綁定 + VLAN + 網橋
# 1. 創建綁定接口
sudo modprobe bonding mode=802.3ad
sudo ip link add bond0 type bond
sudo ip link set eth0 master bond0
sudo ip link set eth1 master bond0
sudo ip link set bond0 up# 2. 在綁定上創建VLAN
sudo ip link add link bond0 name bond0.100 type vlan id 100
sudo ip link set bond0.100 up# 3. 創建網橋
sudo ip link add br0 type bridge
sudo ip link set br0 up# 4. 添加接口到網橋
sudo ip link set bond0.100 master br0
sudo ip link set eth2 master br0# 5. 配置網橋IP
sudo ip addr add 10.0.0.1/24 dev br0# 6. 啟用STP
sudo ip link set br0 type bridge stp_state 1# 7. 配置VLAN過濾
sudo bridge vlan add vid 100 dev bond0.100 pvid
sudo bridge vlan add vid 100 dev eth2# 8. 查看完整配置
bridge -c link show
六、永久生效配置
Debian/Ubuntu (/etc/network/interfaces):
# 物理接口
auto eth0
iface eth0 inet manualbond-master bond0# 綁定接口
auto bond0
iface bond0 inet manualbond-mode 802.3adbond-slaves eth0 eth1# VLAN接口
auto bond0.100
iface bond0.100 inet manualvlan-raw-device bond0# 網橋
auto br0
iface br0 inet staticbridge_ports bond0.100 eth2address 10.0.0.1netmask 255.255.255.0bridge_stp onbridge_vlan_aware yes
RHEL/CentOS (ifcfg文件):
# /etc/sysconfig/network-scripts/ifcfg-bond0
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BONDING_OPTS="mode=802.3ad miimon=100"
ONBOOT=yes# /etc/sysconfig/network-scripts/ifcfg-bond0.100
DEVICE=bond0.100
VLAN=yes
ONBOOT=yes
BRIDGE=br0# /etc/sysconfig/network-scripts/ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=10.0.0.1
NETMASK=255.255.255.0
ONBOOT=yes
STP=yes
七、診斷與監控命令
# 查看鏈路狀態
ip -c link# 查看IP地址配置
ip -c addr# 查看路由表
ip -c route# 查看ARP表
ip -c neigh# 監控網絡流量
tc -s qdisc show dev eth0# 數據包捕獲
tcpdump -i br0 -nnv# 查看連接跟蹤
conntrack -L
八、性能優化技巧
# 啟用多隊列
sudo ethtool -L eth0 combined 8# 調整緩沖區大小
sudo sysctl -w net.core.rmem_max=16777216
sudo sysctl -w net.core.wmem_max=16777216# 增加連接跟蹤表大小
sudo sysctl -w net.netfilter.nf_conntrack_max=1000000# 優化IRQ平衡
sudo apt install irqbalance
sudo systemctl enable irqbalance
九、常見問題解決
VLAN流量不通:
# 檢查VLAN配置
bridge vlan show# 啟用VLAN過濾
sudo ip link set br0 type bridge vlan_filtering 1# 檢查物理接口VLAN支持
ethtool -k eth0 | grep vlan
綁定接口不工作:
# 檢查綁定狀態
cat /proc/net/bonding/bond0# 檢查物理鏈路
ethtool eth0# 檢查模塊參數
modinfo bonding
網橋STP問題:
# 查看STP狀態
bridge stp show# 強制重新計算STP
sudo ip link set dev br0 down
sudo ip link set dev br0 up
提示:對于生產環境,建議:
- 先在臨時會話中測試配置
- 使用版本控制管理網絡配置文件
- 配置前備份現有設置
- 使用網絡監控工具如Prometheus+grafana監控網絡狀態
iproute2 提供了強大靈活的網絡配置能力,掌握這些命令可以高效管理各種復雜網絡環境。
在 Linux 中使用 iproute2
工具集(主要是 ip
命令)配置網絡接口是一種強大且靈活的方式。以下是配置以太網、綁定、VLAN 和網橋的完整指南:
🔧 1. 基本工具
# 安裝 iproute2(通常預裝)
sudo apt install iproute2 # Debian/Ubuntu
sudo yum install iproute # CentOS/RHEL# 主要命令:
ip link # 管理網絡接口
ip addr # 管理IP地址
ip route # 管理路由
🌐 2. 以太網 (Ethernet) 配置
基本操作:
# 查看所有接口
ip link show# 啟用/禁用接口
sudo ip link set enp1s0 up
sudo ip link set enp1s0 down# 設置IP地址
sudo ip addr add 192.168.1.10/24 dev enp1s0# 添加默認網關
sudo ip route add default via 192.168.1.1
持久化配置(使用 netplan):
# /etc/netplan/01-netcfg.yaml
network:version: 2renderer: networkdethernets:enp1s0:addresses: [192.168.1.10/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]
應用配置:
sudo netplan apply
🔗 3. 綁定 (Bond) 配置
將多個物理接口綁定為單一邏輯接口
步驟:
-
加載 bonding 模塊
sudo modprobe bonding mode=active-backup # 可選模式:balance-rr, active-backup, 802.3ad, balance-tlb, balance-alb
-
創建綁定接口
sudo ip link add bond0 type bond mode active-backup
-
添加從屬接口
sudo ip link set enp1s0 master bond0 sudo ip link set enp2s0 master bond0
-
激活并配置 IP
sudo ip link set bond0 up sudo ip addr add 192.168.1.20/24 dev bond0
檢查狀態:
cat /proc/net/bonding/bond0
輸出示例:
Bonding Mode: fault-tolerance (active-backup)
Slave Interface: enp1s0 (active)
Slave Interface: enp2s0 (backup)
🏷? 4. 虛擬局域網 (VLAN) 配置
在物理接口或綁定接口上創建 VLAN
# 在 enp1s0 上創建 VLAN ID 100
sudo ip link add link enp1s0 name vlan100 type vlan id 100# 激活并配置 IP
sudo ip link set vlan100 up
sudo ip addr add 192.168.100.10/24 dev vlan100
驗證:
ip -d link show vlan100
# 輸出應包含:vlan protocol 802.1Q id 100
🌉 5. 網橋 (Bridge) 配置
連接虛擬機/容器到物理網絡
# 創建網橋
sudo ip link add name br0 type bridge# 關閉 STP(可選)
sudo ip link set br0 type bridge stp_state 0# 添加接口到網橋
sudo ip link set enp1s0 master br0
sudo ip link set vlan100 master br0 # 可添加 VLAN 接口# 激活并配置 IP
sudo ip link set br0 up
sudo ip addr add 192.168.1.30/24 dev br0
驗證:
bridge link show
# 輸出示例:
# 2: enp1s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 master br0 state forwarding
🧩 6. 組合配置示例
拓撲:綁定接口 → VLAN → 網橋
# 1. 創建綁定
sudo ip link add bond0 type bond mode=802.3ad
sudo ip link set enp1s0 master bond0
sudo ip link set enp2s0 master bond0# 2. 在綁定上創建 VLAN
sudo ip link add link bond0 name bond0.100 type vlan id 100# 3. 創建網橋并添加 VLAN
sudo ip link add br0 type bridge
sudo ip link set bond0.100 master br0# 4. 激活所有設備
sudo ip link set bond0 up
sudo ip link set bond0.100 up
sudo ip link set br0 up# 5. 配置網橋 IP
sudo ip addr add 10.0.100.1/24 dev br0
🔍 7. 實用診斷命令
命令 | 功能 |
---|---|
ip -c -br link | 彩色簡潔接口狀態 |
ip -d link show dev br0 | 查看設備詳情 |
bridge fdb show | 查看網橋MAC表 |
ip route show | 查看路由表 |
ip neigh show | 查看ARP表 |
?? 8. 持久化配置
iproute2
命令是臨時的,重啟后失效。持久化方法:
方法1:使用 netplan(Ubuntu)
# /etc/netplan/01-netcfg.yaml
network:version: 2renderer: networkdbonds:bond0:interfaces: [enp1s0, enp2s0]parameters:mode: 802.3advlans:vlan100:id: 100link: bond0bridges:br0:interfaces: [vlan100]addresses: [192.168.100.1/24]
方法2:使用 systemd-networkd
創建 /etc/systemd/network/
下的配置文件(如前文所述)
方法3:/etc/network/interfaces(Debian)
auto bond0
iface bond0 inet manualbond-slaves enp1s0 enp2s0bond-mode 802.3adauto vlan100
iface vlan100 inet manualvlan-raw-device bond0auto br0
iface br0 inet staticbridge_ports vlan100address 192.168.100.1netmask 255.255.255.0
🛠? 9. 故障排除
問題:虛擬機無法通過網橋通信
解決:
# 1. 檢查網橋狀態
bridge link# 2. 允許網橋流量通過防火墻
sudo iptables -I FORWARD -m physdev --physdev-is-bridged -j ACCEPT# 3. 啟用IP轉發
sudo sysctl -w net.ipv4.ip_forward=1
問題:綁定接口不工作
解決:
# 檢查綁定模式
cat /proc/net/bonding/bond0# 重新加載模塊
sudo modprobe -r bonding
sudo modprobe bonding mode=active-backup
通過掌握這些 iproute2
命令,您可以靈活配置各種復雜網絡拓撲,無需依賴圖形工具。
在 Linux 中使用 iproute2
套件(特別是 ip
命令)配置網絡接口(以太網、Bond、VLAN、Bridge)是現代發行版推薦的方式,它比傳統的 ifconfig
/route
/vconfig
/brctl
更強大和統一。
以下是使用 iproute2
配置這些接口類型的基本指南:
重要前提:
- 需要 root 權限: 所有命令都需要使用
sudo
或以 root 用戶執行。 - 臨時 vs 持久化:
ip
命令的配置在重啟后會丟失。要永久生效,你需要將配置寫入網絡配置文件(例如/etc/network/interfaces
- Debian/Ubuntu,/etc/sysconfig/network-scripts/ifcfg-*
- RHEL/CentOS 7,/etc/NetworkManager/system-connections/
- NetworkManager, 或使用netplan
- Ubuntu 18.04+)。本文主要關注ip
命令本身。 - 模塊加載: 確保所需內核模塊已加載(通常自動加載):
- Bonding:
modprobe bonding
- 802.1Q VLAN:
modprobe 8021q
- Bridging:
modprobe bridge
- Bonding:
1. 以太網接口 (Ethernet)
-
查看接口信息:
ip link show # 顯示所有鏈路狀態 ip addr show # 顯示所有接口的IP地址 ip addr show eth0 # 顯示特定接口 eth0 的詳細信息 ip -s link show eth0 # 顯示 eth0 的統計信息
-
啟用/禁用接口:
ip link set eth0 up ip link set eth0 down
-
分配 IP 地址 (IPv4):
ip addr add 192.168.1.100/24 dev eth0 # 添加IP地址 ip addr del 192.168.1.100/24 dev eth0 # 刪除IP地址
-
設置默認網關 (IPv4):
ip route add default via 192.168.1.1 # 添加默認網關 ip route del default via 192.168.1.1 # 刪除默認網關 ip route show # 顯示路由表
-
配置 IPv6 地址:
ip -6 addr add 2001:db8::1/64 dev eth0 ip -6 route add default via 2001:db8::fe
2. 綁定接口 (Bonding / Link Aggregation)
Bonding 將多個物理接口(稱為 slaves)聚合成一個邏輯接口(稱為 bond master),提供冗余或負載均衡。
-
創建 Bond 接口 (
bond0
):ip link add bond0 type bond mode active-backup # 創建名為 bond0 的 bond,模式為 active-backup
關鍵參數
mode
:balance-rr
(0): 輪詢(負載均衡,基本冗余)。active-backup
(1): 主備(僅冗余)。balance-xor
(2): 基于源/目標 MAC 的哈希(負載均衡,冗余)。broadcast
(3): 所有從接口廣播(極端冗余)。802.3ad
(4): LACP (Link Aggregation Control Protocol) - 需要交換機支持(動態聚合,負載均衡,冗余)。balance-tlb
(5): 自適應傳輸負載均衡(無需交換機支持,發送負載均衡)。balance-alb
(6): 自適應負載均衡(無需交換機支持,發送和接收負載均衡)。
-
配置 Bond 參數 (可選,在創建時或之后設置):
# 在創建時設置(推薦): ip link add bond0 type bond mode 802.3ad miimon 100 lacp_rate fast xmit_hash_policy layer3+4# 或在創建后設置: ip link set bond0 type bond miimon 100 # 設置鏈路監控間隔為100ms
常用參數:
miimon=
: 鏈路監控間隔(毫秒)。強烈建議設置(例如miimon 100
)。downdelay=
,updelay=
: 鏈路失效/恢復延遲(毫秒)。lacp_rate=
: LACP 速率 (slow
- 30s,fast
- 1s),僅對802.3ad
有效。xmit_hash_policy=
: 負載均衡哈希策略(如layer2
,layer2+3
,layer3+4
),對balance-xor
,802.3ad
,balance-tlb
,balance-alb
有效。primary=
: 指定首選接口(用于active-backup
等模式),例如primary eth0
。
-
將物理接口加入 Bond (作為 Slave):
ip link set eth0 master bond0 # 將 eth0 加入 bond0 ip link set eth1 master bond0 # 將 eth1 加入 bond0
-
從 Bond 中移除接口:
ip link set eth0 nomaster # 將 eth0 從 bond 中移除
-
為 Bond 接口分配 IP 地址并啟用:
ip addr add 192.168.1.200/24 dev bond0 ip link set bond0 up
-
查看 Bond 狀態:
cat /proc/net/bonding/bond0 # 查看 bond0 的詳細狀態信息(包括模式、slave 狀態) ip link show bond0 # 查看 bond0 的鏈路狀態
Bond 模式對比表
模式編號 | 模式名稱 | 冗余 | 負載均衡 | 交換機要求 | 備注 |
---|---|---|---|---|---|
0 | balance-rr | ? | ? | 無特殊要求 | 簡單輪詢,包順序可能亂序 |
1 | active-backup | ? | ? | 無特殊要求 | 僅一個接口活動,最簡單可靠的冗余 |
2 | balance-xor | ? | ? | 無特殊要求 | 基于哈希的負載均衡 |
3 | broadcast | ? | ? | 無特殊要求 | 所有流量在所有接口廣播,極端冗余,帶寬浪費 |
4 | 802.3ad | ? | ? | 必須支持 LACP | 動態聚合,最佳負載均衡和冗余,需交換機配合 |
5 | balance-tlb | ? | ? | 無需特殊配置 | 發送負載均衡,接收由活動接口處理 |
6 | balance-alb | ? | ? | 無需特殊配置 | 發送和接收負載均衡,需ARP協商 |
3. 虛擬局域網 (VLAN)
VLAN 在單個物理接口上創建多個邏輯接口,通過 VLAN ID (1-4094) 隔離流量。
-
創建 VLAN 子接口:
ip link add link eth0 name eth0.10 type vlan id 10 # 在 eth0 上創建 VLAN ID 10 的子接口 eth0.10
link eth0
: 指定父接口(物理接口或 bond)。name eth0.10
: 指定新 VLAN 子接口的名稱(約定俗成使用.
)。type vlan id 10
: 指定類型為 VLAN,ID 為 10。
-
為 VLAN 接口分配 IP 地址并啟用:
ip addr add 192.168.10.1/24 dev eth0.10 ip link set eth0.10 up
-
物理接口處理:
- 物理接口 (
eth0
) 本身不需要 IP 地址(除非用于管理 VLAN 本身)。它應該處于up
狀態:ip link set eth0 up
- 物理接口連接的交換機端口需要配置為 Trunk 端口,允許攜帶相應 VLAN ID (10) 的標簽幀通過。
- 物理接口 (
4. 網橋接口 (Bridge)
網橋創建一個二層交換域,將多個接口(物理、虛擬、VLAN)連接在一起,使它們像連接在同一臺交換機上一樣通信。
-
創建網橋接口 (
br0
):ip link add name br0 type bridge # 創建名為 br0 的網橋
-
配置網橋參數 (可選):
ip link set dev br0 type bridge stp_state 1 # 啟用生成樹協議 (STP),防止環路 ip link set dev br0 type bridge forward_delay 2 # 設置轉發延遲(秒) ip link set dev br0 type bridge hello_time 1 # 設置HELLO時間(秒)
-
將接口加入網橋:
ip link set eth0 master br0 # 將 eth0 加入 br0 ip link set tap0 master br0 # 將虛擬接口 tap0 加入 br0 ip link set eth0.10 master br0 # 將 VLAN 接口 eth0.10 加入 br0
-
從網橋中移除接口:
ip link set eth0 nomaster # 將 eth0 從網橋中移除
-
為網橋接口分配 IP 地址并啟用:
ip addr add 192.168.1.1/24 dev br0 # 通常網橋本身需要一個IP作為網關或管理地址 ip link set br0 up
-
重要提示:
- 加入網橋的物理/虛擬接口 (
eth0
,tap0
,eth0.10
) 不應該 有自己的 IP 地址。它們應該只處于up
狀態:ip link set eth0 up ip link set tap0 up ip link set eth0.10 up
- 所有三層通信(路由)都應該發生在網橋接口 (
br0
) 上。 - 如果網橋用于連接虛擬機(通過
tap
接口)或容器,這是常見用法。 - 啟用 STP (
stp_state 1
) 在網橋連接多個物理接口或有環路風險時非常重要,否則可能產生廣播風暴。
- 加入網橋的物理/虛擬接口 (
組合示例:帶 VLAN 的 Bond 接入網橋
一個常見場景:將兩個物理接口綁定以提高冗余/帶寬,在 Bond 上配置 VLAN,然后將 VLAN 子接口加入網橋供虛擬機使用。
-
創建 Bond:
ip link add bond0 type bond mode 802.3ad miimon 100 ip link set eth0 master bond0 ip link set eth1 master bond0 ip link set bond0 up
-
在 Bond 上創建 VLAN:
ip link add link bond0 name bond0.20 type vlan id 20 # VLAN 20 for Servers ip link add link bond0 name bond0.30 type vlan id 30 # VLAN 30 for Guests ip link set bond0.20 up ip link set bond0.30 up
-
創建網橋并加入 VLAN 子接口:
ip link add name br-servers type bridge ip link set bond0.20 master br-servers ip addr add 10.20.1.1/24 dev br-servers ip link set br-servers upip link add name br-guests type bridge ip link set bond0.30 master br-guests ip addr add 10.30.1.1/24 dev br-guests ip link set br-guests up
-
配置交換機:
- 連接
eth0
和eth1
的端口配置為 LACP 聚合組 (mode 4)。 - 連接聚合組的交換機端口配置為 Trunk 端口,允許 VLAN 20 和 VLAN 30(帶標簽)。
- 連接
故障排查與狀態查看:
ip link show
/ip addr show
: 查看所有接口狀態和配置。ip route show
: 查看路由表。bridge link show
: 查看哪些接口屬于哪些網橋。bridge vlan show
: 查看網橋上的 VLAN 配置(較新內核)。cat /proc/net/vlan/config
: 查看 VLAN 配置。cat /proc/net/bonding/bondX
: 查看 Bond 詳細狀態。ethtool ethX
: 查看物理接口狀態和協商信息。tcpdump -i <interface>
: 抓包分析流量。
持久化配置:
記住 ip
命令是臨時的。配置網絡重啟后不丟失,必須使用你 Linux 發行版的網絡配置機制:
- Debian/Ubuntu (ifupdown):
/etc/network/interfaces
- RHEL/CentOS 7:
/etc/sysconfig/network-scripts/ifcfg-<interface_name>
+/etc/sysconfig/network-scripts/ifcfg-<bridge_name>
等。 - NetworkManager (通用): 使用
nmcli
或nmtui
命令行/文本界面工具配置,配置存儲在/etc/NetworkManager/system-connections/
。 - Ubuntu 18.04+ (Netplan):
/etc/netplan/*.yaml
配置文件,然后運行sudo netplan apply
。
務必查閱你的發行版文檔以了解持久化配置的具體語法和方法。iproute2
的 ip
命令是配置和調試的基礎工具。
以下是 iproute2 命令大全,涵蓋網絡接口、IP地址、路由、隧道、ARP 管理等核心功能,基于 Linux 現代網絡管理工具整理。命令需 root
權限執行,臨時生效(重啟失效),持久化需結合網絡配置文件(如 /etc/network/interfaces
或 systemd-networkd
)。
?? 一、基礎命令結構
ip [OPTIONS] OBJECT { COMMAND | help }
- OBJECT:
link
(接口)、address
(IP地址)、route
(路由)、neigh
(ARP)、tunnel
(隧道)等 - 常用選項:
-s
(統計信息)、-4
(IPv4)、-6
(IPv6)、-d
(詳細信息)、-br
(簡潔輸出)。
🔧 二、網絡接口管理(ip link
)
命令 | 功能 | 示例 |
---|---|---|
查看接口 | 顯示所有接口狀態 | ip link show |
啟停接口 | 啟用/禁用接口 | ip link set eth0 up ip link set eth0 down |
修改MTU | 設置最大傳輸單元 | ip link set eth0 mtu 9000 |
修改MAC | 更改硬件地址 | ip link set eth0 address 00:0c:29:xx:xx:xx |
多播控制 | 啟用/禁用多播 | ip link set eth0 multicast on |
📡 三、IP地址管理(ip address
)
命令 | 功能 | 示例 |
---|---|---|
查看IP | 顯示所有IP地址 | ip addr show |
添加IP | 分配IPv4/IPv6地址 | ip addr add 192.168.1.10/24 dev eth0 |
刪除IP | 移除指定地址 | ip addr del 192.168.1.10/24 dev eth0 |
別名地址 | 添加帶標簽的別名 | ip addr add 192.168.1.20/24 label eth0:1 dev eth0 |
清除IP | 清空接口所有IP | ip addr flush dev eth0 |
🗺? 四、路由管理(ip route
)
命令 | 功能 | 示例 |
---|---|---|
查看路由 | 顯示路由表 | ip route show |
添加路由 | 靜態路由/默認網關 | ip route add 10.0.0.0/24 via 192.168.1.1 ip route add default via 192.168.1.1 |
修改路由 | 替換現有路由 | ip route replace default via 192.168.1.2 |
刪除路由 | 移除指定路由 | ip route del 10.0.0.0/24 |
多表路由 | 查看特定路由表 | ip route show table local |
📡 五、鄰居表管理(ARP,ip neigh
)
命令 | 功能 | 示例 |
---|---|---|
查看ARP | 顯示ARP緩存 | ip neigh show |
添加ARP | 靜態ARP條目 | ip neigh add 192.168.1.100 lladdr 00:0c:29:xx:xx:xx dev eth0 |
刪除ARP | 移除ARP條目 | ip neigh del 192.168.1.100 dev eth0 |
?? 六、隧道管理(ip tunnel
)
命令 | 功能 | 示例 |
---|---|---|
創建GRE隧道 | 建立GRE隧道 | ip tunnel add gre0 mode gre local 10.1.1.1 remote 20.2.2.1 ttl 255 |
創建IPIP隧道 | 建立IPIP隧道 | ip tunnel add ipip0 mode ipip local 10.1.1.1 remote 20.2.2.1 |
查看隧道 | 顯示隧道信息 | ip tunnel show |
刪除隧道 | 移除隧道接口 | ip tunnel del gre0 |
📊 七、Socket統計(ss
替代netstat
)
命令 | 功能 | 示例 |
---|---|---|
監聽端口 | 顯示所有監聽端口 | ss -l |
TCP連接 | 查看所有TCP連接 | ss -t -a |
UDP連接 | 查看所有UDP連接 | ss -u -a |
進程關聯 | 顯示Socket關聯進程 | ss -p |
狀態過濾 | 按狀態篩選(如ESTABLISHED) | ss -anltp state established |
🎚? 八、策略路由(ip rule
和 ip route
)
ip rule show # 顯示策略規則
ip rule add from 192.168.1.10 lookup 100 # 添加策略
ip route add default via 192.168.2.1 table 100 # 為規則表添加路由
💎 總結:核心命令速查表
功能 | 常用命令 |
---|---|
接口狀態 | ip link show 、ip -s link |
IP地址 | ip addr add/del 、ip addr flush |
路由 | ip route add/del 、ip route replace |
ARP | ip neigh show 、ip neigh add/del |
隧道 | ip tunnel add/del |
Socket統計 | ss -l 、ss -t 、ss -p |
?? 注意:
- 以上命令需
sudo
執行,重啟后失效,持久化需編輯網絡配置文件(如 NetworkManager 或/etc/network/interfaces
)。- 查看詳細信息可加
-d
(如ip -d link show eth0
),統計信息用-s
(如ip -s -s addr
)。
完整文檔見 iproute2 Wiki。
在 Linux 系統中,iproute2
工具集(ip
命令)是管理網絡接口的核心工具。以下是針對 以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)、網橋(Bridge) 的配置方法詳解,包含關鍵命令和操作邏輯:
一、以太網(Ethernet)基礎配置
# 查看所有網絡接口
ip link show# 啟用/禁用接口
ip link set eth0 up
ip link set eth0 down# 配置靜態IP地址(臨時生效,重啟失效)
ip addr add 192.168.1.100/24 dev eth0
ip route add default via 192.168.1.1# 刪除IP地址
ip addr del 192.168.1.100/24 dev eth0
二、綁定接口(Bond)配置
綁定模式(如 mode=4
為 LACP 動態聚合):
# 加載 bonding 模塊
modprobe bonding mode=4 miimon=100 lacp_rate=1# 創建 Bond 接口
ip link add bond0 type bond mode 802.3ad# 將物理接口加入 Bond
ip link set eth0 master bond0
ip link set eth1 master bond0# 啟用 Bond 接口并配置IP
ip link set bond0 up
ip addr add 192.168.1.200/24 dev bond0
持久化配置(Debian/Ubuntu 示例):
# /etc/network/interfaces
auto bond0
iface bond0 inet staticaddress 192.168.1.200netmask 255.255.255.0gateway 192.168.1.1bond-mode 4bond-miimon 100bond-lacp-rate 1bond-slaves eth0 eth1
三、虛擬局域網(VLAN)配置
# 創建 VLAN 子接口(父接口為 eth0,VLAN ID=10)
ip link add link eth0 name eth0.10 type vlan id 10# 啟用 VLAN 接口并配置IP
ip link set eth0.10 up
ip addr add 192.168.10.100/24 dev eth0.10# 查看 VLAN 配置
ip -d link show eth0.10
持久化配置(RHEL/CentOS 示例):
# /etc/sysconfig/network-scripts/ifcfg-eth0.10
DEVICE=eth0.10
BOOTPROTO=static
IPADDR=192.168.10.100
NETMASK=255.255.255.0
VLAN=yes
PHYSDEV=eth0
四、網橋(Bridge)配置
# 創建網橋
ip link add name br0 type bridge# 將物理接口或 VLAN 接口加入網橋
ip link set eth2 master br0
ip link set eth0.10 master br0# 啟用網橋并配置IP
ip link set br0 up
ip addr add 192.168.2.1/24 dev br0# 查看網橋信息
bridge link show
典型場景:
將虛擬機或容器的虛擬接口(如 vnet0
)連接到網橋:
ip link set vnet0 master br0
五、綜合示例:Bond + VLAN + Bridge
# 1. 創建 Bond 接口
ip link add bond0 type bond mode 802.3ad
ip link set eth0 master bond0
ip link set eth1 master bond0
ip link set bond0 up# 2. 在 Bond 上創建 VLAN 子接口
ip link add link bond0 name bond0.20 type vlan id 20
ip link set bond0.20 up# 3. 創建網橋并將 VLAN 接口加入
ip link add name br-vlan20 type bridge
ip link set bond0.20 master br-vlan20
ip link set br-vlan20 up
ip addr add 192.168.20.1/24 dev br-vlan20
六、注意事項
-
持久化配置:
使用ifupdown
(Debian)或network-scripts
(RHEL)保存配置,或使用systemd-networkd
。 -
交換機配置:
- Bonding 模式(如 LACP)需交換機端啟用對應協議。
- VLAN 需在交換機上配置 Trunk 端口。
-
調試工具:
# 查看網絡接口狀態 ip -s link # 查看路由表 ip route show # 查看 ARP 表 ip neigh show
通過以上步驟,您可以靈活組合 iproute2
的功能,實現復雜的網絡拓撲。
在Linux系統中,使用 iproute2
工具可以靈活地配置以太網、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)。以下是詳細的配置方法和步驟:
1. 以太網(Ethernet)配置
基本操作
-
啟用/禁用網絡接口:
# 啟用接口 eth0 ip link set eth0 up # 禁用接口 eth0 ip link set eth0 down
-
分配IP地址:
# 為 eth0 分配 IP 地址 192.168.1.10/24 ip addr add 192.168.1.10/24 dev eth0
-
刪除IP地址:
ip addr del 192.168.1.10/24 dev eth0
-
查看接口信息:
ip addr show
-
添加默認路由:
ip route add default via 192.168.1.1 dev eth0
2. 綁定(Bond)配置
綁定(Bond)將多個物理網卡綁定為一個邏輯接口,用于負載均衡或冗余。
步驟
-
創建綁定接口:
ip link add name bond0 type bond
-
設置綁定模式(如
balance-rr
或active-backup
):echo "balance-rr" > /sys/class/net/bond0/bonding/mode
-
添加從屬接口:
ip link set eth0 master bond0 ip link set eth1 master bond0
-
啟用綁定接口:
ip link set bond0 up
-
分配IP地址:
ip addr add 192.168.1.20/24 dev bond0
持久化配置
-
在 Debian/Ubuntu 中,編輯
/etc/network/interfaces
:auto bond0 iface bond0 inet staticaddress 192.168.1.20netmask 255.255.255.0bond-mode balance-rrbond-miimon 100bond-slaves eth0 eth1
-
在 RHEL/CentOS 中,編輯
/etc/sysconfig/network-scripts/ifcfg-bond0
:DEVICE=bond0 TYPE=Bond BONDING_MASTER=yes BOND_NAME=bond0 BOND_IFACES=eth0 eth1 BOND_OPTS="mode=balance-rr miimon=100"
3. 虛擬局域網(VLAN)配置
VLAN 用于在物理網絡上劃分邏輯子網。
步驟
-
加載 VLAN 內核模塊:
modprobe 8021q
-
創建 VLAN 接口:
# 在 eth0 上創建 VLAN ID 為 10 的子接口 ip link add link eth0 name eth0.10 type vlan id 10
-
啟用 VLAN 接口:
ip link set eth0.10 up
-
分配 IP 地址:
ip addr add 192.168.10.1/24 dev eth0.10
-
驗證 VLAN 配置:
ip link show ip addr show eth0.10
持久化配置
-
在 Debian/Ubuntu 中,編輯
/etc/network/interfaces
:auto eth0.10 iface eth0.10 inet staticaddress 192.168.10.1netmask 255.255.255.0vlan-raw-device eth0
-
在 RHEL/CentOS 中,編輯
/etc/sysconfig/network-scripts/ifcfg-eth0.10
:DEVICE=eth0.10 BOOTPROTO=static ONBOOT=yes IPADDR=192.168.10.1 NETMASK=255.255.255.0 VLAN=yes
4. 網橋(Bridge)配置
網橋用于連接多個網絡接口,實現二層轉發。
步驟
-
創建網橋接口:
ip link add name br0 type bridge
-
添加物理接口到網橋:
ip link set eth0 master br0 ip link set eth1 master br0
-
啟用網橋接口:
ip link set br0 up
-
分配 IP 地址:
ip addr add 192.168.1.30/24 dev br0
-
關閉 STP(生成樹協議)(可選):
brctl stp br0 off
持久化配置
-
在 Debian/Ubuntu 中,編輯
/etc/network/interfaces
:auto br0 iface br0 inet staticaddress 192.168.1.30netmask 255.255.255.0bridge_ports eth0 eth1bridge_stp off
-
在 RHEL/CentOS 中,編輯
/etc/sysconfig/network-scripts/ifcfg-br0
:DEVICE=br0 TYPE=Bridge BOOTPROTO=static IPADDR=192.168.1.30 NETMASK=255.255.255.0 DELAY=0 STP=off BRIDGE_PORTS=eth0 eth1
5. 驗證配置
-
查看網橋狀態:
bridge link show
-
查看 VLAN 狀態:
ip link show
-
測試連通性:
ping 192.168.1.1
6. 注意事項
- 持久化問題:
iproute2
的配置是臨時的,重啟后會失效。需通過發行版的網絡配置文件或工具(如NetworkManager
)實現持久化。 - 內核模塊:確保相關內核模塊(如
bridge
、8021q
)已加載。 - 防火墻規則:檢查防火墻是否阻止了接口間的流量(如
iptables
或nftables
)。
通過以上步驟,您可以靈活配置 Linux 系統的以太網、綁定、VLAN 和網橋。如果需要更復雜的場景(如 VXLAN、VRF),可以參考《Linux高級路由與流量控制實戰指南》等資源。
Linux的iproute2工具是配置網絡接口的強大工具,下面介紹如何使用它配置以太網、綁定、VLAN和網橋。
1. 以太網接口配置
使用ip link
和ip address
命令配置物理網卡:
# 激活網卡
ip link set eth0 up# 設置靜態IP地址
ip address add 192.168.1.10/24 dev eth0# 添加默認網關
ip route add default via 192.168.1.1# 查看配置結果
ip address show eth0
ip route show
2. 綁定接口配置
綁定多個物理網卡以增加帶寬或冗余性:
# 創建bond0接口(mode=0為負載均衡)
ip link add bond0 type bond mode balance-rr# 將物理網卡加入bond0
ip link set eth0 master bond0
ip link set eth1 master bond0# 配置bond0的IP地址
ip address add 192.168.1.20/24 dev bond0
ip link set bond0 up# 查看綁定狀態
cat /proc/net/bonding/bond0
3. VLAN接口配置
創建基于物理網卡的VLAN子接口:
# 創建eth0的VLAN 10子接口
ip link add link eth0 name eth0.10 type vlan id 10# 配置VLAN接口IP地址
ip address add 192.168.10.10/24 dev eth0.10
ip link set eth0.10 up# 查看VLAN配置
ip link show
4. 網橋接口配置
創建網橋以連接多個網絡設備:
# 創建網橋br0
ip link add br0 type bridge# 將物理網卡加入網橋
ip link set eth0 master br0# 配置網橋IP地址
ip address add 192.168.1.30/24 dev br0
ip link set br0 up# 查看網橋狀態
bridge link show
持久化配置
以上配置重啟后會丟失,若需持久化,可在/etc/netplan/
目錄下創建YAML配置文件(Ubuntu/Debian):
# /etc/netplan/01-network.yaml
network:version: 2renderer: networkdethernets:eth0:dhcp4: nobonds:bond0:interfaces: [eth0, eth1]mode: balance-rraddresses: [192.168.1.20/24]gateway4: 192.168.1.1vlans:eth0.10:id: 10link: eth0addresses: [192.168.10.10/24]bridges:br0:interfaces: [eth0]addresses: [192.168.1.30/24]dhcp4: no
應用配置:
netplan apply
注意事項
- Bond模式:常見模式有
balance-rr
(負載均衡)、active-backup
(主備)、802.3ad
(LACP)等。 - VLAN標簽:確保交換機端口配置與VLAN ID一致。
- 網橋轉發:網橋會自動轉發流量,無需額外路由配置。
根據實際需求調整參數,配置完成后可用ip
、bridge
或ethtool
命令驗證狀態。
下面給出一份“從 0 到 1”完全用 iproute2(ip
命令族)構建
「以太網 → Bond → VLAN → Bridge」四層的完整示例。
所有操作都可以遠程執行,不依賴傳統 ifconfig
、vconfig
、brctl
等已被棄用的工具。
1. 前置約定
物理網卡 | 用途 | 本機名字 |
---|---|---|
第一塊 | 上聯 | eno1 |
第二塊 | 上聯 | eno2 |
第三塊 | 管理 | eno3 |
目標:
- 把
eno1
+eno2
做成 LACP Bond - 在 Bond 上起 VLAN 100(業務)、VLAN 200(存儲)
- 把 VLAN-100 再接到一個 Linux Bridge
br100
,給 KVM 虛擬機用
2. 載入所需模塊(一次性)
modprobe bonding
modprobe 8021q
3. 創建 Bond 設備(bond0
)
# 1) 建 bond0,模式 802.3ad(LACP)
ip link add bond0 type bond mode 802.3ad miimon 100# 2) 把兩個物理口塞進去
ip link set eno1 master bond0
ip link set eno2 master bond0# 3) 起鏈路
ip link set eno1 up
ip link set eno2 up
ip link set bond0 up
4. 在 Bond 上起 VLAN 子接口
# VLAN 100
ip link add link bond0 name bond0.100 type vlan id 100
ip link set bond0.100 up# VLAN 200
ip link add link bond0 name bond0.200 type vlan id 200
ip link set bond0.200 up
5. 創建 Linux Bridge(br100
)并把 VLAN-100 掛進去
# 1) 建橋
ip link add br100 type bridge# 2) 把 VLAN 接口作為橋的一個“端口”
ip link set bond0.100 master br100# 3) 起橋
ip link set br100 up
6. 給各接口配置地址(舉例)
# 管理口(eno3)——獨立地址
ip addr add 10.0.0.1/24 dev eno3
ip link set eno3 up# VLAN 200 只做存儲,直接給地址
ip addr add 192.168.200.10/24 dev bond0.200# Bridge br100 不需要 IP,宿主機用 VLAN-100 地址
ip addr add 192.168.100.1/24 dev bond0.100
7. 虛擬機/容器如何使用
-
KVM:把虛擬機 tap 設備
vnet0
直接塞進br100
即可
ip link set vnet0 master br100
-
Docker/Macvlan:可省略 Bridge 層,直接把容器 macvlan 掛在
bond0.100
上。
8. 永久化(推薦)
把以上命令寫進 systemd-networkd 或 Netplan(Ubuntu)、nmcli(RHEL/CentOS 8+)的
keyfile/native 語法里即可,避免寫 /etc/rc.local
。
9. 常用排障命令速查
# 查看 bond 狀態
cat /proc/net/bonding/bond0# 查看 VLAN 信息
ip -d link show bond0.100# 查看橋端口
bridge -d link show master br100# 抓 VLAN 100 流量
tcpdump -e -n -i bond0 vlan 100
以上即 只用 iproute2 完成「Ethernet → Bond → VLAN → Bridge」的完整生命周期配置。
Linux iproute2 配置指南:以太網、綁定、VLAN 與網橋
以下是使用 iproute2 工具管理 Linux 網絡的配置方法,所有命令需 root 權限執行:
一、以太網接口配置
- 查看接口:
ip link show
- 啟用/禁用接口:
ip link set dev eth0 up # 啟用 ip link set dev eth0 down # 禁用
- 設置 IP 地址:
ip addr add 192.168.1.10/24 dev eth0
- 設置接口別名:
ip link set dev eth0 alias "Primary Network"
二、綁定(Bonding)配置
- 創建綁定接口(模式為 active-backup):
ip link add bond0 type bond mode active-backup
- 添加從屬接口:
ip link set eth1 master bond0 ip link set eth2 master bond0
- 激活綁定接口:
ip link set bond0 up ip addr add 10.0.0.2/24 dev bond0
支持的模式:
balance-rr
,active-backup
,balance-xor
等
三、VLAN 配置
- 創建 VLAN 接口(基于 eth0):
ip link add link eth0 name eth0.10 type vlan id 10
- 配置 VLAN IP:
ip addr add 172.16.10.1/24 dev eth0.10 ip link set dev eth0.10 up
注意:創建后 VLAN 接口默認為
down
狀態
四、網橋(Bridge)配置
- 創建網橋:
ip link add br0 type bridge
- 添加接口到網橋:
ip link set eth0 master br0 ip link set bond0 master br0
- 激活網橋:
ip link set br0 up ip addr add 192.168.1.1/24 dev br0
- 查看網橋狀態:
bridge link show
五、持久化配置
以上配置重啟后失效,需通過以下方式持久化:
- 寫入
/etc/network/interfaces
(Debian) - 使用 Netplan 配置文件 (Ubuntu 18.04+)
- 創建 systemd-networkd 配置文件
關鍵提示:所有虛擬鏈路(VLAN/網橋/綁定)創建后默認為
down
狀態,需手動啟用
以下是使用 Linux 的 iproute2
工具配置以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)的詳細指南,結合了多篇技術網頁的最佳實踐和注意事項。
一、以太網(Ethernet)基礎配置
1. 查看接口狀態
ip link show # 查看所有接口狀態
ip -s link show eth0 # 查看 eth0 的統計信息(如流量)
2. 配置靜態 IP 地址
ip addr add 192.168.1.100/24 dev eth0 # 添加 IP
ip link set eth0 up # 啟用接口
3. 設置默認網關
ip route add default via 192.168.1.1 dev eth0
4. 修改 MTU
ip link set eth0 mtu 1500 # 設置 MTU 為 1500 字節
二、網絡接口綁定(Bonding)
1. 創建 Bond 接口
ip link add bond0 type bond mode active-backup # 主動-備份模式
ip link set bond0 up
2. 添加成員接口
ip link set eth0 master bond0
ip link set eth1 master bond0
3. 配置參數(可選)
- 負載均衡模式:
mode balance-xor
(基于哈希的流量分配) - 鏈路監控:
miimon=100
(每 100ms 檢查鏈路狀態)
4. 持久化配置(以 CentOS 為例)
在 /etc/sysconfig/network-scripts/ifcfg-bond0
中:
DEVICE=bond0
TYPE=Bond
BONDING_MASTER=yes
BONDING_OPTS="mode=active-backup miimon=100"
IPADDR=192.168.1.100
NETMASK=255.255.255.0
三、虛擬局域網(VLAN)配置
1. 創建 VLAN 接口
ip link add link eth0 name eth0.100 type vlan id 100 # 在 eth0 上創建 VLAN 100
ip link set eth0.100 up
2. 配置 IP 地址
ip addr add 192.168.100.1/24 dev eth0.100
3. 持久化配置(以 Ubuntu 為例)
在 /etc/network/interfaces
中:
auto eth0.100
iface eth0.100 inet staticaddress 192.168.100.1netmask 255.255.255.0vlan-raw-device eth0
四、網橋(Bridge)配置
1. 創建網橋
ip link add br0 type bridge
ip link set br0 up
2. 添加物理接口到網橋
ip link set eth0 master br0 # 將 eth0 加入網橋
ip link set eth0 up # 啟用接口
3. 移除接口從網橋
ip link set eth0 nomaster
4. 配置網橋 IP
ip addr add 192.168.1.1/24 dev br0 # 網橋本身分配 IP
5. 持久化配置(以 NetworkManager 為例)
nmcli con add type bridge ifname br0
nmcli con modify bridge-slave-eth0 master br0
五、高級場景與注意事項
1. 綁定模式選擇
- active-backup(默認):高可用性,僅一個接口活躍。
- 802.3ad:鏈路聚合,需交換機支持 LACP。
- balance-tlb:基于傳輸負載均衡。
2. VLAN 與網橋結合
# 創建 VLAN 接口并橋接
ip link add eth0.100 type vlan id 100
ip link add br0 type bridge
ip link set eth0.100 master br0
3. 常見問題
- 接口未加載模塊:
modprobe 8021q
(VLAN)或modprobe bonding
(綁定)。 - IP 沖突:確保網橋和成員接口不重復分配 IP。
- STP(生成樹協議):啟用
bridge link set br0 stp_state 1
防止環路。
六、與傳統工具對比
工具 | 優勢 | 適用場景 |
---|---|---|
iproute2 | 動態配置、支持高級策略路由 | 云環境、容器化網絡 |
ifconfig | 簡單易用 | 傳統服務器基礎配置 |
brctl | 舊版網橋管理 | 兼容舊系統 |
通過以上步驟,可以靈活配置復雜的網絡拓撲。建議結合 ip -d link show
和 bridge link
命令驗證配置細節。對于生產環境,推薦使用 NetworkManager 或 systemd-networkd 實現持久化配置。
在Linux中使用iproute2
工具可以方便地配置網絡接口,包括以太網、綁定、虛擬局域網(VLAN)和網橋。以下是每種配置的基本步驟和示例:
1. 以太網(Ethernet)配置
以太網是最常見的網絡接口類型。以下是配置以太網接口的基本步驟:
示例:配置以太網接口 eth0
# 設置靜態IP地址
ip addr add 192.168.1.100/24 dev eth0# 設置默認網關
ip route add default via 192.168.1.1# 啟用接口
ip link set dev eth0 up
2. 綁定(Bonding)配置
綁定(Bonding)允許多個以太網接口聚合為一個邏輯接口,以提高帶寬或實現冗余。
示例:創建綁定接口 bond0
# 加載綁定模塊
modprobe bonding# 創建綁定接口并設置模式(例如:平衡輪詢模式)
ip link add bond0 type bond mode balance-rr# 將物理接口 `eth0` 和 `eth1` 添加到綁定接口
ip link set eth0 master bond0
ip link set eth1 master bond0# 啟用綁定接口
ip link set bond0 up# 配置IP地址
ip addr add 192.168.1.100/24 dev bond0
3. 虛擬局域網(VLAN)配置
VLAN允許在物理網絡上劃分多個邏輯網絡。
示例:創建VLAN接口 eth0.10
# 創建VLAN接口
ip link add link eth0 name eth0.10 type vlan id 10# 啟用VLAN接口
ip link set eth0.10 up# 配置IP地址
ip addr add 192.168.10.100/24 dev eth0.10
4. 網橋(Bridge)配置
網橋允許多個網絡接口連接到同一個邏輯網絡,通常用于虛擬化環境。
示例:創建網橋接口 br0
# 創建網橋接口
ip link add name br0 type bridge# 將物理接口 `eth0` 和 `eth1` 添加到網橋
ip link set eth0 master br0
ip link set eth1 master br0# 啟用網橋接口
ip link set br0 up# 配置IP地址
ip addr add 192.168.1.100/24 dev br0
總結
- 以太網:直接配置物理接口。
- 綁定:聚合多個物理接口為一個邏輯接口。
- VLAN:在物理網絡上劃分邏輯網絡。
- 網橋:連接多個接口到一個邏輯網絡。
根據具體需求選擇合適的配置方式,并確保網絡設備和驅動支持相關功能。
在Linux中,iproute2
工具集(如 ip
和 bridge
命令)提供了靈活的網絡配置功能。以下是使用 iproute2
配置 以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN) 和 網橋(Bridge) 的分步指南:
1. 以太網(Ethernet)
為物理網卡(如 eth0
)配置IP地址并啟用接口:
# 配置IP地址和子網掩碼
sudo ip addr add 192.168.1.10/24 dev eth0# 啟用接口
sudo ip link set dev eth0 up# (可選)添加默認路由
sudo ip route add default via 192.168.1.1
2. 綁定(Bonding)
將多個物理接口綁定為一個邏輯接口(以模式 active-backup
為例):
# 加載bonding內核模塊
sudo modprobe bonding# 創建bond接口(名為bond0)
sudo ip link add bond0 type bond mode active-backup# 添加物理接口到bond(如eth0和eth1)
sudo ip link set dev eth0 master bond0
sudo ip link set dev eth1 master bond0# 啟用bond接口并分配IP
sudo ip link set dev bond0 up
sudo ip addr add 192.168.1.20/24 dev bond0
關鍵參數:
mode
:綁定模式(如balance-rr
,active-backup
,802.3ad
, 等)- 可通過
cat /proc/net/bonding/bond0
查看bond狀態。
3. 虛擬局域網(VLAN)
在物理接口(如 eth0
)上創建VLAN接口(以VLAN ID 100為例):
# 加載8021q模塊(若未加載)
sudo modprobe 8021q# 創建VLAN接口(eth0.100)
sudo ip link add link eth0 name eth0.100 type vlan id 100# 啟用VLAN接口并分配IP
sudo ip link set dev eth0.100 up
sudo ip addr add 192.168.100.1/24 dev eth0.100
4. 網橋(Bridge)
創建網橋(如 br0
)并將接口(如 eth0
或 vlan100
)加入橋:
# 創建橋接口
sudo ip link add name br0 type bridge# 將接口加入橋(例如將eth0加入橋)
sudo ip link set dev eth0 master br0# 啟用橋接口并分配IP
sudo ip link set dev br0 up
sudo ip addr add 192.168.1.30/24 dev br0# (可選)啟用STP(生成樹協議)
sudo bridge link set dev eth0 cost 100 # 設置端口開銷
持久化配置
以上命令僅在運行時生效,重啟后失效。若需永久生效,需根據發行版配置網絡文件:
- Debian/Ubuntu:修改
/etc/network/interfaces
或使用netplan
。 - RHEL/CentOS:修改
/etc/sysconfig/network-scripts/ifcfg-*
文件。 - 通用工具:使用
NetworkManager
(如nmtui
或nmcli
)。
驗證工具
- 查看接口狀態:
ip link show
或ip addr
- 查看路由表:
ip route
- 檢查橋接配置:
bridge link show
- 驗證VLAN:
cat /proc/net/vlan/config
典型用例示例
- 綁定
eth0
和eth1
為bond0
(模式802.3ad
)。 - 在
bond0
上創建VLAN 100
。 - 將
VLAN 100
的接口加入網橋br0
。 - 為
br0
分配IP地址。
如有進一步問題(如具體發行版的持久化配置或復雜網絡拓撲),請提供更多細節!
以下是使用 iproute2
工具集配置 Linux 網絡的核心指南,涵蓋以太網(Ethernet)、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)的配置方法。所有操作均基于 ip
命令,適用于現代 Linux 內核(≥2.2)。
一、以太網(Ethernet)基礎配置
iproute2
取代了傳統的 ifconfig
/route
,提供更統一的語法:
- 查看接口狀態:
ip link show # 所有接口 ip -s link show eth0 # 指定接口的詳細狀態(含流量統計)
- 配置靜態 IP:
ip addr add 192.168.1.100/24 dev eth0 # 添加 IP ip link set eth0 up # 啟用接口 ip route add default via 192.168.1.1 # 設置默認網關
- 多 IP 綁定到單接口(適用于服務隔離):
ip addr add 192.168.1.101/24 dev eth0 label eth0:1 ip addr add 192.168.1.102/24 dev eth0 label eth0:2
持久化:
- CentOS/RHEL:編輯
/etc/sysconfig/network-scripts/ifcfg-eth0
- Ubuntu:使用 Netplan(
/etc/netplan/*.yaml
)或NetworkManager
二、虛擬局域網(VLAN)配置
通過 ip
命令創建 VLAN 接口(無需 vconfig
):
# 創建 VLAN ID 100 的虛擬接口
ip link add link eth0 name eth0.100 type vlan id 100
ip addr add 192.168.100.1/24 dev eth0.100 # 分配 IP
ip link set eth0.100 up # 啟用
關鍵點:
- VLAN 接口名格式通常為
主接口.VLANID
(如eth0.100
)。 - 刪除 VLAN:
ip link delete eth0.100 type vlan
。
三、網橋(Bridge)配置
網橋用于連接多個網絡段(如虛擬機網絡):
# 創建網橋并添加物理接口
ip link add name br0 type bridge # 創建網橋設備
ip link set eth0 master br0 # 將 eth0 加入網橋
ip addr add 192.168.1.100/24 dev br0 # 為網橋分配 IP
ip link set br0 up # 啟用網橋
注意事項:
- 物理接口(如
eth0
)加入網橋后不再需要獨立 IP,由網橋接管通信。 - 驗證:
bridge link show
或ip link show type bridge
。
持久化示例(Ubuntu Netplan) :
network:version: 2bridges:br0:interfaces: [eth0]dhcp4: yes
四、綁定(Bond)配置
?? 注:
iproute2
原生不支持 Bond 創建,需依賴內核模塊(如bonding
)和系統工具。
替代方案:
- 加載 Bonding 驅動:
modprobe bonding mode=802.3ad # 加載驅動(模式如 balance-rr, active-backup)
2. **創建 Bond 接口**: ```bash ip link add bond0 type bond ip link set eth0 master bond0 # 添加從屬接口 ip link set eth1 master bond0 ip link set bond0 up
- 配置 IP:
ip addr add 192.168.1.100/24 dev bond0
持久化需編輯 `/etc/network/interfaces` 或發行版專用配置(如 CentOS 的 `ifcfg-bond0`)。
五、對比:傳統工具 vs. iproute2
功能 | net-tools (舊) | iproute2 (推薦) |
---|---|---|
查看接口狀態 | ifconfig | ip link show |
設置 IP | ifconfig eth0 192.168.1.100 | ip addr add 192.168.1.100/24 dev eth0 |
查看路由 | route -n | ip route show |
VLAN 創建 | vconfig add eth0 100 | ip link add link eth0 name eth0.100 type vlan id 100 |
六、調試與驗證
- 路由表:
ip route show
- ARP 鄰居表:
ip neigh show
- 監聽端口:
ss -ltnp
(替代netstat
) - 接口統計:
ip -s link show dev eth0
💡 最佳實踐:
- 優先使用
ip
命令,語法統一且支持新特性(如網絡命名空間、策略路由)。- 生產環境務必通過配置文件持久化(如 Netplan、
ifcfg
文件)。
通過掌握以上配置,可高效管理 Linux 的復雜網絡環境(如容器網絡、虛擬化集群)。
在 Linux 中使用 NetworkManager 配置網橋(bridge
)時,可以通過 nmcli
命令行工具完成。網橋常用于虛擬化場景(如 KVM/QEMU),將虛擬機連接到物理網絡。
🧱 一、基本概念
- Bridge(網橋):一種軟件交換機,讓多個網絡接口(包括物理接口和虛擬接口)共享同一個二層網絡。
- Bridge Slave(網橋從屬接口):加入網橋的接口,例如一個物理網卡或 VLAN 接口。
- Bridge Master(網橋主接口):即網橋本身(如
br0
),它負責管理所有從屬接口。
🛠? 二、配置網橋的步驟(以 eth0
為例)
? 場景說明:
我們希望創建一個名為 br0
的網橋,并把物理接口 eth0
加入其中,然后為網橋分配 IP 地址。
🔧 步驟 1:刪除原有連接(如有)
nmcli con delete eth0
🔧 步驟 2:創建網橋主接口 br0
nmcli con add type bridge ifname br0 con-name br0
🔧 步驟 3:添加物理接口 eth0
作為網橋從屬接口
nmcli con add type bridge-slave ifname eth0 master br0
?? 注意:此時
eth0
不應有 IP 地址,因為它的流量會通過網橋br0
處理。
🔧 步驟 4:為網橋設置 IP 地址(例如靜態 IP)
nmcli con modify br0 ipv4.addresses 192.168.1.100/24 \ipv4.gateway 192.168.1.1 \ipv4.dns 8.8.8.8 \ipv4.method manual
或者使用 DHCP:
nmcli con modify br0 ipv4.method auto
🔧 步驟 5:啟用網橋連接
nmcli con up br0
這會自動激活網橋及其從屬接口
eth0
。
? 檢查狀態
nmcli con show
ip addr show br0
📌 三、常見參數說明(nmcli
網橋相關)
參數名 | 含義 |
---|---|
type bridge | 創建網橋主接口 |
type bridge-slave | 創建網橋從屬接口 |
ifname | 接口名稱(如 br0 , eth0 ) |
master | 指定從屬接口所屬的網橋 |
ipv4.method | IPv4 分配方式(manual / auto / disabled) |
ipv4.addresses | 設置靜態 IP 地址和子網掩碼 |
ipv4.gateway | 設置默認網關 |
ipv4.dns | 設置 DNS 服務器 |
💡 四、其他用法示例
示例 1:帶 VLAN 的網橋結構
# 創建 VLAN 接口 vlan10(基于 eth0,VLAN ID 10)
nmcli con add type vlan con-name vlan10 ifname eth0.10 dev eth0 id 10# 創建網橋 br0
nmcli con add type bridge ifname br0 con-name br0# 將 VLAN 接口加入網橋
nmcli con add type bridge-slave ifname eth0.10 master br0# 設置網橋 IP
nmcli con modify br0 ipv4.addresses 192.168.10.100/24 ipv4.method manual# 啟動網橋
nmcli con up br0
示例 2:橋接 + 虛擬機使用
在 KVM 虛擬化中,通常這樣配置:
# 創建 br0 網橋并加入 eth0
nmcli con add type bridge ifname br0 con-name br0
nmcli con add type bridge-slave ifname eth0 master br0
nmcli con modify br0 ipv4.method auto
nmcli con up br0
然后在虛擬機配置中指定 br0
作為虛擬 NIC 的橋接設備即可。
🧪 五、查看當前網橋信息
nmcli con show
nmcli device show
bridge link
📝 六、注意事項
- 網橋的 IP 地址應該設置在
bridge
接口上,而不是物理接口。 - 物理接口不能有自己的 IP 地址(除非你明確知道要做什么)。
- 如果你在遠程服務器操作,請確保不會斷網(建議測試前保留原始連接或使用臨時連接)。
- 使用
nmcli con reload
可重新加載配置文件。 - 刪除網橋前請先刪除其從屬接口。
? 總結
操作 | 命令示例 |
---|---|
創建網橋 | nmcli con add type bridge ifname br0 |
添加從屬接口 | nmcli con add type bridge-slave master br0 ifname eth0 |
設置 IP | nmcli con modify br0 ipv4.addresses x.x.x.x/xx ... |
啟用網橋 | nmcli con up br0 |
查看網橋狀態 | bridge link 或 ip link |
如需進一步配置 STP(生成樹協議)、設置混雜模式等高級功能,可以使用 nmcli
的更多選項或編輯 /etc/NetworkManager/system-connections/
下的 .nmconnection
文件。
如果你需要我幫你寫一個完整的配置腳本或排查問題,請告訴我你的實際環境!
以太網(Ethernet)配置
以太網接口配置主要涉及IP地址、子網掩碼、網關和DNS服務器的設置。以下是幾種常見的配置方法:
1. 靜態IP配置(以eth0為例)
# 編輯網絡配置文件
sudo nano /etc/netplan/01-netcfg.yaml# 添加以下內容(根據實際情況修改)
network:version: 2renderer: networkdethernets:eth0:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]# 應用配置
sudo netplan apply
2. DHCP動態獲取IP
network:version: 2renderer: networkdethernets:eth0:dhcp4: yes
綁定(Bond)配置
網絡綁定允許將多個物理網卡組合成一個邏輯接口,提供冗余或增加帶寬。常見模式有balance-rr、active-backup、802.3ad等。
配置示例(active-backup模式)
# 編輯netplan配置
sudo nano /etc/netplan/01-netcfg.yamlnetwork:version: 2renderer: networkdbonds:bond0:interfaces: [eth0, eth1]dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1parameters:mode: active-backupmiimon: 100ethernets:eth0:dhcp4: nooptional: trueeth1:dhcp4: nooptional: true# 應用配置
sudo netplan apply
虛擬局域網(VLAN)配置
VLAN允許在單一物理網絡上創建多個邏輯網絡。
配置示例
# 編輯netplan配置
sudo nano /etc/netplan/01-netcfg.yamlnetwork:version: 2renderer: networkdethernets:eth0:dhcp4: nooptional: truevlans:vlan10:id: 10link: eth0addresses: [192.168.10.10/24]vlan20:id: 20link: eth0addresses: [192.168.20.10/24]# 應用配置
sudo netplan apply
網橋(Bridge)配置
網橋用于連接多個網絡接口,使它們看起來像同一個網絡段。常用于虛擬化環境。
配置示例
# 編輯netplan配置
sudo nano /etc/netplan/01-netcfg.yamlnetwork:version: 2renderer: networkdbridges:br0:interfaces: [eth0]dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]ethernets:eth0:dhcp4: nooptional: true# 應用配置
sudo netplan apply
驗證配置
配置完成后,可以使用以下命令驗證:
# 查看網絡接口狀態
ip addr show# 查看路由表
ip route# 檢查bond狀態
cat /proc/net/bonding/bond0# 檢查網橋狀態
brctl show
以上配置示例基于Netplan(Ubuntu 18.04+),不同Linux發行版可能使用不同的網絡配置工具(如ifupdown、NetworkManager等),配置文件位置和格式會有所不同。
以下是使用 iproute2
工具集配置 Linux 網絡的核心指南,涵蓋以太網、綁定(Bond)、虛擬局域網(VLAN)和網橋(Bridge)的詳細操作及原理說明。
🔧 一、以太網(Ethernet)基礎配置
1. 接口狀態管理
- 查看接口狀態:
ip link show # 顯示所有接口狀態 ip -s link show dev eth0 # 查看 eth0 的詳細統計信息
- 啟用/禁用接口:
ip link set dev eth0 up # 啟用接口 ip link set dev eth0 down # 禁用接口
2. IP 地址配置
- 臨時配置(重啟失效):
ip addr add 192.168.1.100/24 dev eth0 # 添加 IPv4 地址 ip addr add 2001:db8::1/64 dev eth0 # 添加 IPv6 地址
- 刪除地址:
ip addr del 192.168.1.100/24 dev eth0
3. 路由設置
- 默認網關:
ip route add default via 192.168.1.1 dev eth0
- 靜態路由:
ip route add 10.0.0.0/24 via 192.168.1.2 dev eth0
🔗 二、綁定(Bonding)配置
綁定用于聚合多個物理接口,提升帶寬或冗余性。
1. 創建 Bond 接口
ip link add bond0 type bond mode 802.3ad miimon 100
- 關鍵參數:
mode
:綁定模式(見下表)miimon
:鏈路檢測間隔(毫秒)
2. 綁定模式對比
模式 | 編號 | 特點 | 交換機要求 |
---|---|---|---|
Active-Backup | mode 1 | 主備冗余,故障自動切換(無需交換機支持) | ? |
802.3ad (LACP) | mode 4 | 動態負載均衡,帶寬聚合(需交換機啟用 LACP) | ? |
Balance-TLB | mode 5 | 發送負載均衡,接收流量走主接口(無需交換機支持) | ? |
Balance-ALB | mode 6 | 雙向負載均衡,通過 ARP 協商實現(無需交換機支持) | ? |
3. 添加成員接口
ip link set eth0 master bond0
ip link set eth1 master bond0
4. 分配 IP 并啟用
ip addr add 192.168.1.100/24 dev bond0
ip link set bond0 up
5. 驗證狀態
cat /proc/net/bonding/bond0 # 查看綁定狀態
🌐 三、虛擬局域網(VLAN)配置
1. 加載內核模塊
modprobe 8021q # 加載 VLAN 支持模塊
2. 創建 VLAN 接口
ip link add link eth0 name eth0.100 type vlan id 100
eth0.100
:VLAN 接口名(父接口 + VLAN ID)id 100
:VLAN 標簽號(需與交換機一致)
3. 配置 IP 并啟用
ip addr add 192.168.100.1/24 dev eth0.100
ip link set eth0.100 up
4. 高級場景
- 強制網關在鏈路(無直連路由時):
ip route add 172.16.0.0/16 via 192.168.100.254 dev eth0.100 onlink
🌉 四、網橋(Bridge)配置
網橋用于連接多個網絡段(如虛擬機網絡)。
1. 創建網橋
ip link add br0 type bridge # 創建網橋設備
ip link set br0 up
2. 綁定物理/虛擬接口
ip link set eth0 master br0 # 物理接口加入網橋
ip link set veth0 master br0 # 虛擬接口(容器/虛擬機)加入網橋
3. 分配 IP 地址
ip addr add 192.168.1.1/24 dev br0
4. 配置 STP 防環
ip link set br0 type bridge stp_state 1 # 啟用生成樹協議
?? 五、關鍵注意事項
-
配置持久化:
iproute2
命令重啟后失效,需通過以下方式持久化:- 寫入
/etc/rc.local
或系統啟動腳本。 - 使用
netplan
(Ubuntu)或network-scripts
(CentOS)配置文件 。
- 寫入
-
工具依賴:
- 安裝
iproute2
包:apt install iproute2 # Debian/Ubuntu yum install iproute # CentOS/RHEL
- 安裝
-
交換機協同:
- Bonding mode 4 (LACP) 需交換機啟用鏈路聚合 。
- VLAN 需交換機端口配置為 Trunk 模式 。
-
常見問題:
- Bonding 不生效:檢查內核模塊
lsmod | grep bonding
,或重啟網絡服務。 - VLAN 不通:確認
8021q
模塊加載,且交換機 VLAN ID 匹配 。
- Bonding 不生效:檢查內核模塊
💎 總結
iproute2
提供了從底層接口管理(以太網/IP)、高級聚合(Bonding)、邏輯隔離(VLAN)到虛擬網絡整合(Bridge)的全套能力。相比傳統 ifconfig
/route
,其優勢在于:
- 功能全面:支持 IPv6、策略路由、多播等高級特性 。
- 粒度精細:如 Bonding 的 7 種模式適配不同場景 。
- 腳本友好:命令輸出結構化,易于自動化處理。
建議結合系統配置工具(如 netplan
或 NetworkManager
)實現持久化部署,復雜網絡可參考 /etc/iproute2/
下的策略表定制路由規則 。
iproute2 網絡配置模板大全:Bond、VLAN、Bridge
以下是使用 iproute2 配置 Bonding、VLAN 和 Bridge 的實用模板,涵蓋了各種常見場景。這些命令需要持久化配置才能重啟后生效(解決方案在最后)。
一、基礎模板
1. 單綁定接口 (Bond)
# 創建802.3ad模式的綁定接口
sudo ip link add bond0 type bond mode 802.3ad lacp_rate fast# 添加物理接口到綁定
sudo ip link set enp3s0 down
sudo ip link set enp3s0 master bond0
sudo ip link set enp3s0 upsudo ip link set enp4s0 down
sudo ip link set enp4s0 master bond0
sudo ip link set enp4s0 up# 啟用綁定接口
sudo ip link set bond0 up# 分配IP地址
sudo ip addr add 192.168.1.100/24 dev bond0
sudo ip route add default via 192.168.1.1
2. 單VLAN接口
# 在物理接口上創建VLAN 100
sudo ip link add link enp3s0 name vlan100 type vlan id 100# 啟用VLAN接口
sudo ip link set vlan100 up# 分配IP地址
sudo ip addr add 10.0.100.5/24 dev vlan100
3. 單網橋接口
# 創建網橋
sudo ip link add name br0 type bridge# 添加物理接口到網橋
sudo ip link set enp3s0 down
sudo ip link set enp3s0 master br0
sudo ip link set enp3s0 up# 啟用網橋
sudo ip link set br0 up# 分配IP地址
sudo ip addr add 192.168.1.1/24 dev br0
二、高級組合模板
4. 綁定 + VLAN
# 創建綁定接口
sudo ip link add bond0 type bond mode active-backup
sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 master bond0
sudo ip link set bond0 up# 在綁定接口上創建VLAN
sudo ip link add link bond0 name vlan200 type vlan id 200
sudo ip link set vlan200 up# 分配IP給VLAN接口
sudo ip addr add 172.16.200.10/24 dev vlan200
5. 綁定 + 網橋
# 創建綁定接口
sudo ip link add bond0 type bond mode balance-rr
sudo ip link set enp3s0 master bond0
sudo ip link set enp4s0 master bond0
sudo ip link set bond0 up# 創建網橋
sudo ip link add name br-bond type bridge
sudo ip link set bond0 master br-bond
sudo ip link set br-bond up# 分配IP給網橋
sudo ip addr add 10.10.10.1/24 dev br-bond
6. VLAN + 網橋
# 創建VLAN接口
sudo ip link add link enp3s0 name vlan300 type vlan id 300
sudo ip link set vlan300 up# 創建網橋
sudo ip link add name br-vlan type bridge
sudo ip link set vlan300 master br-vlan
sudo ip link set br-vlan up# 分配IP給網橋
sudo ip addr add 192.168.30.1/24 dev br-vlan
三、企業級綜合模板
7. 綁定 + VLAN + 網橋 (完整三層)
#!/bin/bash
# 企業級網絡配置腳本# 1. 創建綁定接口 (802.3ad LACP)
sudo ip link add bond0 type bond mode 802.3ad lacp_rate fast
sudo ip link set enp3s0 down && sudo ip addr flush dev enp3s0
sudo ip link set enp3s0 master bond0
sudo ip link set enp3s0 upsudo ip link set enp4s0 down && sudo ip addr flush dev enp4s0
sudo ip link set enp4s0 master bond0
sudo ip link set enp4s0 up
sudo ip link set bond0 up# 2. 創建管理VLAN
sudo ip link add link bond0 name mgmt type vlan id 100
sudo ip link set mgmt up
sudo ip addr add 10.0.100.5/24 dev mgmt# 3. 創建數據VLAN并加入網橋
sudo ip link add link bond0 name vlan200 type vlan id 200
sudo ip link set vlan200 up# 4. 創建網橋
sudo ip link add name br-data type bridge
sudo ip link set vlan200 master br-data
sudo ip link set br-data up
sudo ip addr add 192.168.200.1/24 dev br-data# 5. 創建虛擬接口并加入網橋
sudo ip link add veth0 type veth peer name veth1
sudo ip link set veth0 master br-data
sudo ip link set veth0 up
sudo ip link set veth1 up# 6. 設置STP和轉發延遲
sudo ip link set br-data type bridge stp_state 1
sudo ip link set br-data type bridge forward_delay 4# 7. 設置默認路由
sudo ip route add default via 10.0.100.1 dev mgmt
8. 多網橋隔離網絡
#!/bin/bash
# 多網橋配置:LAN、DMZ、Guest# 1. 創建LAN網橋
sudo ip link add name br-lan type bridge
sudo ip link set enp5s0 master br-lan
sudo ip link set br-lan up
sudo ip addr add 192.168.1.1/24 dev br-lan# 2. 創建DMZ網橋
sudo ip link add name br-dmz type bridge
sudo ip link set enp6s0 master br-dmz
sudo ip link set br-dmz up
sudo ip addr add 10.10.10.1/24 dev br-dmz# 3. 創建Guest網橋
sudo ip link add name br-guest type bridge
sudo ip link set br-guest up
sudo ip addr add 172.16.0.1/16 dev br-guest# 4. 配置VLAN接口加入Guest網橋
sudo ip link add link enp7s0 name vlan500 type vlan id 500
sudo ip link set vlan500 master br-guest
sudo ip link set vlan500 up# 5. 禁用Guest網橋的MAC學習
sudo ip link set br-guest type bridge ageing_time 0# 6. 設置防火墻規則
sudo iptables -A FORWARD -i br-guest -j DROP
四、虛擬化專用模板
9. KVM虛擬化網橋
#!/bin/bash
# KVM虛擬化專用網橋# 1. 創建主網橋
sudo ip link add name br0 type bridge
sudo ip link set enp3s0 down
sudo ip addr flush dev enp3s0
sudo ip link set enp3s0 master br0
sudo ip link set enp3s0 up
sudo ip link set br0 up
sudo ip addr add 192.168.1.100/24 dev br0# 2. 創建隔離網橋
sudo ip link add name br-isolated type bridge
sudo ip link set br-isolated up
sudo ip addr add 10.20.30.1/24 dev br-isolated# 3. 優化網橋性能
sudo ethtool -K br0 rx off tx off tso off gso off gro off
sudo ip link set br0 type bridge forward_delay 0
sudo ip link set br0 type bridge stp_state 0# 4. 創建虛擬接口對
sudo ip link add veth-host type veth peer name veth-guest
sudo ip link set veth-host master br0
sudo ip link set veth-host up
sudo ip link set veth-guest up# 5. 設置MAC地址
sudo ip link set dev br0 address 52:54:00:12:34:56
10. Docker容器網絡
#!/bin/bash
# Docker自定義網橋# 1. 創建容器網橋
sudo ip link add name docker-br type bridge
sudo ip link set docker-br up
sudo ip addr add 172.18.0.1/16 dev docker-br# 2. 啟用IP轉發
sudo sysctl -w net.ipv4.ip_forward=1# 3. 創建NAT規則
sudo iptables -t nat -A POSTROUTING -s 172.18.0.0/16 ! -o docker-br -j MASQUERADE
sudo iptables -A FORWARD -i docker-br -o enp3s0 -j ACCEPT
sudo iptables -A FORWARD -i enp3s0 -o docker-br -m state --state RELATED,ESTABLISHED -j ACCEPT# 4. 創建veth對
sudo ip link add veth-host type veth peer name veth-container
sudo ip link set veth-host master docker-br
sudo ip link set veth-host up# 5. 配置容器端
sudo ip netns add container-ns
sudo ip link set veth-container netns container-ns
sudo ip -n container-ns link set lo up
sudo ip -n container-ns link set veth-container name eth0
sudo ip -n container-ns addr add 172.18.0.2/16 dev eth0
sudo ip -n container-ns link set eth0 up
sudo ip -n container-ns route add default via 172.18.0.1
五、持久化配置方案
方案1: systemd-networkd (推薦)
# /etc/systemd/network/05-bond0.netdev
[NetDev]
Name=bond0
Kind=bond
[Bond]
Mode=802.3ad
LACPTransmitRate=fast# /etc/systemd/network/10-enp3s0.network
[Match]
Name=enp3s0[Network]
Bond=bond0# /etc/systemd/network/15-vlan100.netdev
[NetDev]
Name=vlan100
Kind=vlan
[VLAN]
Id=100# /etc/systemd/network/20-br0.netdev
[NetDev]
Name=br0
Kind=bridge
[Bridge]
STP=yes
ForwardDelaySec=4# /etc/systemd/network/25-br0.network
[Match]
Name=br0[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8
VLAN=vlan100
方案2: NetworkManager (桌面環境)
# 創建綁定
sudo nmcli con add type bond con-name bond0 ifname bond0 mode 802.3ad
sudo nmcli con add type ethernet con-name bond0-slave1 ifname enp3s0 master bond0
sudo nmcli con add type ethernet con-name bond0-slave2 ifname enp4s0 master bond0# 創建VLAN
sudo nmcli con add type vlan con-name vlan100 dev bond0 id 100# 創建網橋
sudo nmcli con add type bridge con-name br0 ifname br0
sudo nmcli con add type bridge-slave con-name br0-vlan100 ifname vlan100 master br0# 分配IP
sudo nmcli con mod br0 ipv4.addresses 192.168.1.100/24
sudo nmcli con mod br0 ipv4.gateway 192.168.1.1
sudo nmcli con mod br0 ipv4.dns "8.8.8.8"
sudo nmcli con mod br0 ipv4.method manual# 激活連接
sudo nmcli con up bond0
sudo nmcli con up vlan100
sudo nmcli con up br0
方案3: 使用 ifupdown (Debian/Ubuntu)
# /etc/network/interfaces
auto bond0
iface bond0 inet manualbond-mode 802.3adbond-slaves enp3s0 enp4s0bond-lacp-rate fastauto vlan100
iface vlan100 inet manualvlan-raw-device bond0vlan-id 100auto br0
iface br0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1bridge_ports vlan100bridge_stp onbridge_fd 4
六、驗證命令
通用驗證
# 查看所有接口
ip -c link show# 查看IP配置
ip -c addr show# 查看路由表
ip -c route show
組件專用驗證
# 綁定接口狀態
cat /proc/net/bonding/bond0# VLAN信息
ip -d link show | grep vlan# 網橋狀態
bridge -c link show
bridge -c fdb show# STP狀態
bridge -j stp show | jq
性能測試
# 帶寬測試
iperf3 -c server_ip -i 1 -t 10 -B br0_ip# 延遲測試
ping -c 100 -I bond0 8.8.8.8 | grep min/avg/max# 流量監控
sudo tcpdump -i br0 -nn -c 100
七、故障排除技巧
1. 綁定接口問題
# 檢查物理鏈路
ethtool enp3s0# 查看LACP狀態
grep "" /sys/class/net/bond0/bonding/*# 強制重新協商
echo 1 > /sys/class/net/bond0/bonding/mii_monitor
2. VLAN問題
# 檢查VLAN過濾
bridge vlan show# 監控VLAN流量
sudo tcpdump -i enp3s0 -nn -e vlan# 檢查硬件卸載
ethtool -k enp3s0 | grep vlan
3. 網橋問題
# 查看MAC表
bridge fdb show br0# 檢查STP狀態
bridge -j stp show br0 | jq# 重置網橋狀態
sudo ip link set br0 down && sudo ip link set br0 up
4. 綜合診斷
# 網絡連通性
mtr -rwbzc 100 8.8.8.8# 路由跟蹤
traceroute -n -i br0 8.8.8.8# 端口掃描
nmap -sT -p- 192.168.1.0/24
這些模板覆蓋了從基礎到高級的各種網絡配置場景,您可以根據實際需求調整接口名稱、IP地址和參數值。對于生產環境,建議使用 systemd-networkd 或 NetworkManager 進行持久化配置。
iproute2 配置模板:綁定(Bond)、虛擬局域網(VLAN)、網橋(Bridge)
以下是使用 iproute2 配置 Bond、VLAN 和 Bridge 的完整模板,包含基礎配置、高級選項和持久化方案。
一、綁定(Bond)配置模板
1. 基礎綁定配置 (模式:active-backup)
# 加載模塊
modprobe bonding# 創建綁定接口
ip link add bond0 type bond mode active-backup# 設置綁定參數
echo 100 > /sys/class/net/bond0/bonding/miimon
echo primary eth1 > /sys/class/net/bond0/bonding/primary# 添加成員接口
ip link set eth1 down
ip link set eth1 master bond0
ip link set eth1 upip link set eth2 down
ip link set eth2 master bond0
ip link set eth2 up# 啟用綁定接口
ip link set bond0 up# 配置IP地址
ip addr add 192.168.1.100/24 dev bond0
2. LACP 綁定配置 (模式:802.3ad)
# 創建LACP綁定
ip link add bond0 type bond mode 802.3ad# 設置LACP參數
echo fast > /sys/class/net/bond0/bonding/lacp_rate
echo layer3+4 > /sys/class/net/bond0/bonding/xmit_hash_policy# 添加成員接口
for iface in eth1 eth2; doip link set $iface downip link set $iface master bond0ip link set $iface up
done# 啟用綁定
ip link set bond0 up
ip addr add 10.0.0.5/24 dev bond0
二、虛擬局域網(VLAN)配置模板
1. 基礎VLAN配置
# 加載VLAN模塊
modprobe 8021q# 在物理接口上創建VLAN
ip link add link eth0 name eth0.100 type vlan id 100# 啟用VLAN接口
ip link set eth0.100 up# 配置IP地址
ip addr add 192.168.100.10/24 dev eth0.100
2. 在綁定接口上創建VLAN
# 在bond0上創建VLAN
ip link add link bond0 name mgmt_vlan type vlan id 200# 啟用并配置
ip link set mgmt_vlan up
ip addr add 10.200.0.5/24 dev mgmt_vlan
三、網橋(Bridge)配置模板
1. 基礎網橋配置
# 創建網橋
ip link add br0 type bridge# 設置STP參數
echo 1 > /sys/class/net/br0/bridge/stp_state
echo 2 > /sys/class/net/br0/bridge/hello_time
echo 15 > /sys/class/net/br0/bridge/forward_delay# 添加成員接口
ip link set eth3 down
ip link set eth3 master br0
ip link set eth3 up# 啟用網橋
ip link set br0 up# 配置IP地址
ip addr add 172.16.0.10/24 dev br0
2. 帶VLAN過濾的網橋
# 創建網橋并啟用VLAN過濾
ip link add br-vlan type bridge
echo 1 > /sys/class/net/br-vlan/bridge/vlan_filtering# 添加接口并配置VLAN
ip link set eth4 down
ip link set eth4 master br-vlan
ip link set eth4 up
bridge vlan add dev eth4 vid 100 pvid untagged
bridge vlan add dev eth4 vid 200# 配置網橋IP
ip link set br-vlan up
ip addr add 10.100.0.1/24 dev br-vlan
四、綜合配置模板:綁定 → VLAN → 網橋
#!/bin/bash
# 綜合配置:物理接口 -> Bond -> VLAN -> Bridge# 1. 創建綁定接口
modprobe bonding
ip link add bond0 type bond mode 802.3ad
echo fast > /sys/class/net/bond0/bonding/lacp_rate
echo layer3+4 > /sys/class/net/bond0/bonding/xmit_hash_policy# 添加成員
for iface in eth1 eth2; doip link set $iface downip link set $iface master bond0ip link set $iface up
done
ip link set bond0 up# 2. 在綁定上創建VLAN
modprobe 8021q
ip link add link bond0 name mgmt_vlan type vlan id 100
ip link set mgmt_vlan up# 3. 創建網橋并添加VLAN
ip link add br-mgmt type bridge
ip link set mgmt_vlan master br-mgmt
ip link set br-mgmt up# 4. 配置網橋IP
ip addr add 10.100.0.5/24 dev br-mgmt# 5. 設置默認路由
ip route add default via 10.100.0.1
五、高級配置模板
1. 帶VLAN過濾的網橋
# 創建網橋
ip link add br-filter type bridge# 啟用VLAN過濾
echo 1 > /sys/class/net/br-filter/bridge/vlan_filtering# 添加端口并配置VLAN
for port in eth5 eth6; doip link set $port downip link set $port master br-filterbridge vlan add dev $port vid 100-200bridge vlan del dev $port vid 1 # 刪除默認VLANip link set $port up
done# 設置PVID
bridge vlan add dev eth5 vid 100 pvid untagged# 啟用網橋
ip link set br-filter up
2. QinQ (雙標簽VLAN)
# 外層VLAN
ip link add link eth0 name eth0.1000 type vlan id 1000# 內層VLAN
ip link add link eth0.1000 name qinq_inner type vlan id 200# 配置IP
ip link set qinq_inner up
ip addr add 192.168.200.5/24 dev qinq_inner
六、持久化配置方案
1. 創建 systemd 服務
/etc/systemd/system/network-setup.service
:
[Unit]
Description=Custom Network Setup
After=network.target
Requires=network.target[Service]
Type=oneshot
ExecStart=/usr/local/bin/network-setup.sh
RemainAfterExit=yes[Install]
WantedBy=multi-user.target
2. 網絡配置腳本
/usr/local/bin/network-setup.sh
:
#!/bin/bash# 綁定配置
ip link add bond0 type bond mode 802.3ad
echo fast > /sys/class/net/bond0/bonding/lacp_rate
for iface in eth1 eth2; doip link set $iface downip link set $iface master bond0ip link set $iface up
done
ip link set bond0 up# VLAN配置
ip link add link bond0 name mgmt_vlan type vlan id 100
ip link set mgmt_vlan up# 網橋配置
ip link add br0 type bridge
ip link set mgmt_vlan master br0
ip addr add 10.100.0.5/24 dev br0
ip link set br0 up# 路由配置
ip route add default via 10.100.0.1# DNS配置
echo "nameserver 8.8.8.8" > /etc/resolv.conf
3. 設置權限并啟用
chmod +x /usr/local/bin/network-setup.sh
systemctl daemon-reload
systemctl enable network-setup.service
七、診斷與驗證命令
1. 綁定驗證
# 查看綁定狀態
cat /proc/net/bonding/bond0# 查看從屬接口
ip link show type bond_slave
2. VLAN驗證
# 查看VLAN配置
ip -d link show mgmt_vlan# 查看VLAN統計
ethtool -S eth1 | grep vlan
3. 網橋驗證
# 查看網橋信息
bridge link show# 查看VLAN過濾
bridge vlan show# 查看STP狀態
bridge stp show br0
4. 綜合狀態
# 查看所有接口
ip -br link show# 查看IP配置
ip -br addr show# 查看路由
ip route show
八、故障排除模板
1. 綁定故障排查
# 檢查物理連接
ethtool eth1
ethtool eth2# 查看綁定狀態
cat /proc/net/bonding/bond0# 檢查MII監控
cat /sys/class/net/bond0/bonding/miimon# 重置綁定
ip link set bond0 down
ip link set bond0 up
2. VLAN故障排查
# 驗證VLAN配置
ip -d link show mgmt_vlan | grep 'vlan id'# 檢查父接口狀態
ip link show bond0# 檢查交換機配置
# 確保交換機端口配置為trunk模式
3. 網橋故障排查
# 檢查STP阻塞
bridge stp show br0 | grep state# 查看MAC地址表
bridge fdb show br0# 刷新VLAN配置
bridge vlan flush dev eth1
九、性能優化模板
1. 中斷優化
# 設置中斷親和性
for irq in $(grep eth1 /proc/interrupts | cut -d: -f1); doecho 3 > /proc/irq/$irq/smp_affinity
done# 或使用irqbalance
apt install irqbalance
systemctl enable irqbalance
2. 網絡參數優化
# 增加socket緩沖區
sysctl -w net.core.rmem_max=16777216
sysctl -w net.core.wmem_max=16777216# 禁用巨幀卸載(如有問題)
ethtool -K eth1 tso off gso off gro off
3. 網橋優化
# 禁用STP(單接口網橋)
echo 0 > /sys/class/net/br0/bridge/stp_state# 增加哈希表大小
echo 16384 > /sys/class/net/br0/bridge/hash_max
這些模板提供了從基礎到高級的配置方案,您可以根據實際需求調整參數。對于生產環境,建議結合監控工具(如 vnstat
、iftop
)定期檢查網絡狀態。