iproute2的`ip`,`ss`,`bridge`,`tc`命令详解,笔记250714

29 阅读1小时+

iproute2的ip,ss,bridge,tc命令详解,笔记250714

以下是iproute2工具集中核心命令ipssbridgetc的深度详解:


1. ip 命令(网络全能工具)

Linux网络配置的核心命令,通过子命令管理各种网络对象:

常用子命令:
对象(OBJECT)功能描述常用命令示例
link网络设备管理ip link show
ip link set eth0 up
addressIP地址管理ip addr add 192.168.1.10/24 dev eth0
route路由表管理ip route add default via 192.168.1.1
neighARP/邻居表ip neigh show
rule策略路由ip rule add from 192.168.2.0/24 table 100
tunnel隧道管理ip tunnel add gre0 mode gre local 10.1.1.1 remote 20.2.2.1
maddress组播地址ip maddress show
monitor实时监控ip monitor all
  • ip link (接口管理)

    ip link show                     # 显示所有接口
    ip link set eth0 up              # 启用接口
    ip link set eth0 mtu 9000        # 修改MTU
    ip link add veth0 type veth peer name veth1  # 创建veth pair
    ip link add bond0 type bond mode 802.3ad     # 创建链路聚合
    
  • ip address (IP地址管理)

    ip addr add 192.168.1.10/24 dev eth0   # 添加IP
    ip addr del 192.168.1.10/24 dev eth0   # 删除IP
    ip addr show eth0               # 显示接口IP
    ip addr flush eth0              # 清除所有IP配置
    
  • ip route (路由管理)

    ip route add 10.0.0.0/8 via 192.168.1.1   # 添加静态路由
    ip route add default via 192.168.1.1       # 添加默认网关
    ip route show table main           # 查看主路由表
    ip route get 8.8.8.8              # 查询到目标的路由路径
    
  • ip rule (策略路由)

    ip rule add from 192.168.2.0/24 lookup 100  # 源IP策略
    ip rule add fwmark 0x1 lookup 200       # 防火墙标记策略
    ip rule show                     # 显示所有策略规则
    
  • ip neigh (ARP/NDP管理)

    ip neigh show                    # 显示ARP表
    ip neigh flush dev eth0          # 清除接口ARP缓存
    
  • ip netns (网络命名空间)

    ip netns add ns1                 # 创建命名空间
    ip netns exec ns1 ip link show   # 在命名空间内执行命令
    

2. ss 命令 (Socket统计)

替代netstat的现代工具,实时监控套接字连接

核心功能:
ss -tuln                    # 查看所有监听端口(TCP/UDP)
ss -t -u -l -n                    # 查看所有监听端口(TCP/UDP)
ss -nt src :443             # 查看所有443端口的连接
ss -o state established '( dport = :http )'  # 过滤HTTP连接
ss -s                       # 显示摘要统计
ss -it                       # 显示TCP内部信息(cwnd,rtt)
常用选项
选项功能描述示例
-tTCP 套接字ss -t
-uUDP 套接字ss -u
-l监听套接字ss -tl
-a所有套接字ss -ta
-n数字格式ss -tn
-p显示进程ss -tp
-s摘要统计ss -s
-o计时器信息ss -to
-iTCP内部信息ss -ti
ss关闭占用端口的程序进程
# 1. 查找占用端口的tcp进程
ss -tlnp | grep ':端口号'

# 1. 查找占用端口的tcp,udp进程
ss -tulnp | grep ':端口号'

# 2. 从输出中提取PID并终止
sudo kill -9 $(ss -tlnp | awk '/:端口号/{split($6,a,"[,=]"); print a[2]}')
状态过滤:
ss -t state listening       # 所有TCP监听套接字
ss -t state established     # 所有已建立的TCP连接
ss -t state fin-wait-1      # 指定TCP状态

3. bridge 命令 (网桥管理)

替代brctl的现代网桥管理工具

核心操作:
# 创建网桥
ip link add name br0 type bridge

# 端口管理
ip link set eth0 master br0     # 添加端口到网桥
bridge link show                # 显示网桥端口信息

# VLAN配置
bridge vlan add dev eth0 vid 100   # 添加VLAN 100
bridge vlan show                   # 显示VLAN配置

# MAC地址表管理
bridge fdb add 00:11:22:33:44:55 dev eth0  # 添加静态MAC
bridge fdb show                    # 显示MAC地址表
高级特性:
# 启用STP
ip link set dev br0 type bridge stp_state 1

# 设置网桥优先级
bridge vlan set dev br0 vid 100 priority 32768

用于管理 Linux 桥接功能,支持 VLAN、STP 等高级特性。

1. 核心子命令
子命令功能示例
link桥接端口管理bridge link show
fdb转发数据库(MAC表)bridge fdb show
vlanVLAN 配置bridge vlan show
mdb组播数据库bridge mdb show
2. VLAN 配置详解
# 查看端口VLAN配置
bridge vlan show dev eth0

# 添加VLAN
bridge vlan add vid 10 dev eth0

# 设置PVID
bridge vlan add vid 10 dev eth0 pvid

# 配置Trunk端口
bridge vlan add vid 10-20 dev eth0

# 删除VLAN
bridge vlan del vid 10 dev eth0
3. FDB (MAC地址表) 管理
# 添加静态MAC条目
bridge fdb add 00:11:22:33:44:55 dev eth0 master static

# 删除MAC条目
bridge fdb del 00:11:22:33:44:55 dev eth0

# 设置MAC老化时间
bridge link set dev eth0 ageing_time 300
4. 生成树协议(STP)配置
# 启用STP
bridge link set dev eth0 guard on
bridge link set dev br0 stp_state 1

# 设置优先级
bridge vlan set vid 10 dev eth0 priority 128

# 查看STP状态
bridge -d link show

4. tc 命令 (流量控制)

Linux QoS系统的核心工具,实现复杂流量整形

核心组件:
  • qdisc (队列规则)
  • class (流量类别)
  • filter (流量分类器)
常用场景:

1. 简单限速(TBF令牌桶)

tc qdisc add dev eth0 root tbf \
  rate 10mbit burst 32kbit latency 400ms

2. 优先级调度(HTB分层令牌桶)

# 创建HTB根队列
tc qdisc add dev eth0 root handle 1: htb default 20

# 创建父类(总带宽100Mbps)
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit

# 创建子类(VOICE:30Mbps, VIDEO:50Mbps, DEFAULT:20Mbps)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 30mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 50mbit ceil 50mbit
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 20mbit ceil 100mbit

# 附加公平队列(防止饿死)
tc qdisc add dev eth0 parent 1:10 sfq perturb 10
tc qdisc add dev eth0 parent 1:20 sfq perturb 10

3. 流量分类(基于源IP)

tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 \
  match ip src 192.168.1.100 flowid 1:10

4. 网络模拟(netem)

# 添加100ms固定延迟
tc qdisc add dev eth0 root netem delay 100ms

# 添加随机丢包(10%)
tc qdisc add dev eth0 root netem loss 10%

# 添加抖动(100ms±20ms)
tc qdisc add dev eth0 root netem delay 100ms 20ms
监控命令:
tc -s qdisc show dev eth0      # 显示队列统计
tc -s class show dev eth0      # 显示类别统计
tc filter show dev eth0        # 显示过滤器

各命令对比表

命令主要功能关键特性典型应用场景
ip全能网络配置接口/路由/ARP/隧道/命名空间管理基础网络配置、策略路由、容器网络
ss套接字监控与分析实时连接状态、过滤能力、高性能网络调试、服务监控、连接分析
bridge二层网桥管理VLAN支持、MAC学习、STP、VXLAN配置虚拟化网络、SDN、容器网络
tc流量控制与QoS复杂整形、优先级调度、网络模拟带宽管理、服务质量保障、网络测试

使用技巧:

  1. JSON输出ip -j link show | jq 获取结构化数据
  2. 批量操作ip -batch < config.txt 执行批量配置
  3. TC持久化:使用tc-savetc-restore保存配置
  4. SS过滤:组合使用state和端口过滤精确诊断连接
  5. 网桥VLANbridge vlan命令实现802.1Q VLAN过滤

💡 专业提示:生产环境建议通过systemd-networkdNetworkManager持久化配置,直接使用ip/tc命令的修改重启后会失效。

这些工具共同构成了Linux网络栈的完整控制平面,熟练掌握后可实现从基础网络配置到高级流量工程的各类需求。



























ip 命令深度详解:Linux 网络管理的全能工具

ip 是 iproute2 工具集的核心命令,用于全面管理 Linux 网络栈。它通过统一的语法结构操作各种网络对象,取代了传统的 ifconfigroutearp 等命令。


一、命令结构

ip [OPTIONS] OBJECT COMMAND [PARAMETERS]
  • OBJECT:网络对象类型(link, address, route, neigh, rule 等)
  • COMMAND:操作类型(show, add, del, set, flush 等)
  • OPTIONS
    • -4/-6:指定 IPv4/IPv6
    • -s:显示统计信息
    • -d:详细信息
    • -j:JSON 格式输出
    • -br:简化表格输出

二、核心对象详解

1. ip link - 网络接口管理

管理物理/虚拟网络接口(NIC)

常用命令:

# 显示所有接口
ip link show
ip -s link  # 带统计信息

# 启用/禁用接口
ip link set eth0 up
ip link set wlan0 down

# 修改接口属性
ip link set eth0 mtu 9000
ip link set eth0 name wan0  # 重命名
ip link set eth0 promisc on  # 混杂模式

# 创建虚拟接口
ip link add veth0 type veth peer name veth1  # 虚拟以太网对
ip link add bond0 type bond mode 802.3ad  # 链路聚合
ip link add br0 type bridge  # 网桥
2. ip address - IP 地址管理

管理接口的 IP 地址和协议配置

常用命令:

# 显示IP地址
ip address show
ip -4 addr  # 仅IPv4

# 添加/删除IP
ip addr add 192.168.1.10/24 dev eth0
ip addr add 2001:db8::1/64 dev eth0
ip addr del 192.168.1.10/24 dev eth0

# 批量操作
ip addr flush dev eth0  # 清除所有IP
ip addr replace 10.0.0.2/24 dev eth0  # 替换现有IP

# 特殊地址
ip addr add 169.254.0.1/16 dev eth0 scope link  # 链路本地地址
3. ip route - 路由表管理

管理内核路由表(IPv4/IPv6)

常用命令:

# 显示路由表
ip route show
ip -6 route  # IPv6路由

# 添加/删除路由
ip route add 10.0.0.0/8 via 192.168.1.1
ip route add default via 192.168.1.1
ip route del 10.0.0.0/8

# 策略路由
ip route add 203.0.113.0/24 via 10.0.0.1 table 100

# 路由缓存
ip route get 8.8.8.8  # 查询到目标的路由路径
ip route flush cache  # 刷新路由缓存
4. ip rule - 策略路由规则

基于策略的路由选择规则

常用命令:

# 显示规则
ip rule show

# 创建规则
ip rule add from 192.168.2.0/24 lookup 100
ip rule add to 10.1.0.0/16 lookup 200
ip rule add fwmark 0x1 lookup 300  # 防火墙标记
ip rule add iif eth0 lookup 400  # 入口接口

# 优先级管理
ip rule add pref 1000 from 192.168.3.0/24 lookup 500
5. ip neigh - ARP/NDP 邻居表管理

管理二层邻居缓存(ARP 表)

常用命令:

# 显示邻居表
ip neigh show
ip -s neigh  # 带统计信息

# 管理静态条目
ip neigh add 192.168.1.5 lladdr 00:11:22:33:44:55 dev eth0 nud permanent
ip neigh del 192.168.1.5 dev eth0

# 状态管理
ip neigh flush dev eth0  # 清除接口所有条目
ip neigh change 192.168.1.5 nud reachable dev eth0

三、高级功能

1. 多路由表管理
# 查看所有路由表
ip route show table all

# 向特定表添加路由
ip route add 0.0.0.0/0 via 10.0.0.1 table 100

# 配置路由表别名
echo "100 custom" >> /etc/iproute2/rt_tables
ip route show table custom
2. VRF 管理(虚拟路由转发)
# 创建VRF
ip link add vrf-blue type vrf table 10

# 关联接口
ip link set dev eth0 master vrf-blue

# 查看VRF
ip vrf show
3. 网络命名空间
# 创建命名空间
ip netns add ns1

# 在命名空间内执行命令
ip netns exec ns1 ip link show

# 移动接口到命名空间
ip link set veth1 netns ns1
4. 隧道管理
# GRE隧道
ip tunnel add gre1 mode gre remote 203.0.113.1 local 192.168.1.100 ttl 255

# VXLAN隧道
ip link add vxlan0 type vxlan id 42 dstport 4789 remote 203.0.113.2

四、实用技巧

1. 简化输出格式
ip -br link show
# 输出示例:
# lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
# eth0             UP             52:54:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP>
2. JSON 格式输出
ip -j link show | jq '.[] | select(.operstate == "UP") | .ifname'
3. 批量配置
# config.txt 内容:
link set eth0 mtu 9000
address add 192.168.1.100/24 dev eth0
route add default via 192.168.1.1

# 执行配置
ip -batch -force < config.txt
4. 监控网络变化
# 实时监控链路状态
ip monitor link

# 监控路由变化
ip monitor route
5. 组合查询
# 查询到目标IP的完整路径
ip route get to 8.8.8.8 from 192.168.1.100 iif eth0

# 显示所有UP接口的IP
ip -o addr show | grep 'state UP' | awk '{print $2, $4}'

五、与 net-tools 对比表

功能net-toolsiproute2 (ip)
显示接口ifconfigip link show
配置IPifconfig eth0 192.168.1.1ip addr add 192.168.1.1/24 dev eth0
路由表route -nip route show
添加路由route add -net 10.0.0.0/8 gw 192.168.1.1ip route add 10.0.0.0/8 via 192.168.1.1
ARP表arp -anip neigh show
VLAN接口vconfig add eth0 100ip link add link eth0 name eth0.100 type vlan id 100
隧道接口iptunnel add gre1 mode gre ...ip tunnel add gre1 mode gre ...

专业提示:所有 ip 命令修改都是临时的,持久化配置需使用:

  • NetworkManager:nmclinmtui
  • systemd-networkd:.network 文件
  • 发行版配置文件:/etc/network/interfaces (Debian) 或 /etc/sysconfig/network-scripts/ (RHEL)

ip 命令是 Linux 网络管理的基石,掌握其用法对于系统管理员、网络工程师和 DevOps 专业人员至关重要。通过组合不同的 OBJECT 和 COMMAND,可以实现从基础配置到高级网络架构的所有操作。






ip 命令是 iproute2 工具集的核心,用于管理 Linux 内核的网络栈,功能远超陈旧的 ifconfigroute。它提供统一的接口配置、路由管理、邻居表(ARP)、策略路由、隧道、网络命名空间等功能。

核心优势:

  • 统一强大: 单一命令管理网络各层(链路层、网络层)。
  • 精细控制: 支持策略路由、多路由表、VLAN、VXLAN 等高级特性。
  • 实时准确: 直接与内核网络子系统交互。
  • 现代标准: 所有主流 Linux 发行版的标配网络配置工具。

基本语法:

ip [ OPTIONS ] OBJECT { COMMAND | help }
  • OBJECT: 指定要管理的对象类型(见下文详解)。
  • COMMAND: 对对象执行的操作(show, add, del, set 等)。
  • help: 显示该对象的帮助信息(ip OBJECT help)。
  • 常用 OPTIONS:
    • -s, -stats, -statistics: 显示详细统计信息。
    • -d, -details: 显示更详细信息。
    • -c, -color: 彩色输出(如果支持)。
    • -4: 仅 IPv4。
    • -6: 仅 IPv6。
    • -b, -batch: 从文件或标准输入读取命令批量执行。
    • -j, -json: JSON 格式输出(便于脚本解析)。
    • -p, -pretty: 美化输出(常与 -j 结合)。

详解主要 OBJECT 及其常用 COMMAND:

1. ip link - 管理网络接口 (Link Layer - 数据链路层)

操作物理或虚拟网络接口(状态、MTU、MAC 地址、主从关系等)。

  • show: 显示所有或指定接口信息(默认命令)。
    ip link                     # 显示所有接口简要信息
    ip link show                # 同上
    ip link show eth0           # 显示 eth0 详细信息
    ip -s link show eth0        # 显示 eth0 详细信息及统计(收发包计数、错误等)
    ip -c link show             # 彩色输出
    
  • set: 修改接口属性。
    ip link set eth0 up         # 启用接口 eth0
    ip link set eth0 down       # 禁用接口 eth0
    ip link set eth0 mtu 9000   # 设置 eth0 的 MTU 为 9000 (Jumbo Frames)
    ip link set eth0 name wan0  # 将 eth0 重命名为 wan0 (需先 down)
    ip link set eth0 address aa:bb:cc:dd:ee:ff # 设置 MAC 地址 (需先 down)
    ip link set eth0 master br0 # 将 eth0 加入网桥/绑定 br0 (成为 Slave)
    ip link set eth0 nomaster   # 将 eth0 从网桥/绑定中移除
    ip link set eth0 promisc on # 开启混杂模式 (监听所有流量)
    ip link set eth0 txqueuelen 1000 # 设置发送队列长度
    
  • add: 创建虚拟接口。
    ip link add eth0.10 link eth0 type vlan id 10    # 在 eth0 上创建 VLAN 接口 eth0.10 (ID 10)
    ip link add name br0 type bridge                 # 创建网桥接口 br0
    ip link add name bond0 type bond mode 802.3ad    # 创建链路聚合接口 bond0 (模式 LACP)
    ip link add name veth1 type veth peer name veth2  # 创建一对虚拟以太网接口 veth1 和 veth2 (用于容器/命名空间互联)
    ip link add name gre0 type gretap local 192.168.1.1 remote 192.168.2.1 # 创建 GRE 隧道接口
    
  • del: 删除接口。
    ip link del eth0.10    # 删除 VLAN 接口 eth0.10
    ip link del br0        # 删除网桥 br0 (需先移除所有 Slave 并 down)
    

2. ip address / ip addr - 管理 IP 地址 (Network Layer - 网络层)

配置接口的 IPv4/IPv6 地址、广播地址、作用域等。

  • show: 显示所有或指定接口的 IP 地址信息(默认命令)。
    ip addr                     # 显示所有接口的 IP 地址
    ip addr show                # 同上
    ip addr show eth0           # 显示 eth0 的 IP 地址
    ip -6 addr show             # 仅显示 IPv6 地址
    ip addr show dev br0        # 显示网桥 br0 的 IP 地址
    
  • add: 添加 IP 地址。
    ip addr add 192.168.1.100/24 dev eth0             # 给 eth0 添加 IPv4 地址
    ip addr add 2001:db8::1/64 dev eth0               # 给 eth0 添加 IPv6 地址
    ip addr add 192.168.1.101/24 dev eth0 label eth0:0 # 添加辅助 IP 并设置标签 (eth0:0)
    ip addr add 192.168.1.255/24 brd + dev eth0       # 添加地址并设置广播地址 (使用 `+` 自动计算)
    
  • del: 删除 IP 地址。
    ip addr del 192.168.1.100/24 dev eth0 # 从 eth0 删除指定 IPv4 地址
    ip addr del 2001:db8::1/64 dev eth0   # 从 eth0 删除指定 IPv6 地址
    
  • flush: 清除接口上的所有 IP 地址 (慎用!会断网!)
    ip addr flush dev eth0    # 清除 eth0 上的所有 IP 地址 (IPv4 & IPv6)
    ip -4 addr flush dev eth0 # 清除 eth0 上的所有 IPv4 地址
    ip -6 addr flush dev eth0 # 清除 eth0 上的所有 IPv6 地址
    

3. ip route - 管理 路由表

查看和操作内核的路由表。支持多路由表和策略路由。

  • show: 显示路由信息(默认命令)。
    ip route show                  # 显示主路由表 (table main)
    ip route list                  # 同上
    ip route show table main       # 显示主路由表
    ip route show table local      # 显示本地路由表 (广播地址、本机地址等)
    ip route show table 100        # 显示自定义路由表 100
    ip route get 8.8.8.8           # 查询去往 8.8.8.8 的路由路径 (非常实用!)
    ip -6 route show               # 显示 IPv6 路由
    
  • add: 添加路由。
    ip route add 10.0.0.0/8 via 192.168.1.1 dev eth0        # 添加静态路由 (经 eth0 网关 192.168.1.1)
    ip route add default via 192.168.1.1 dev eth0           # 添加默认网关
    ip route add 2001:db8:1::/64 via fe80::1%eth0 dev eth0  # 添加 IPv6 路由 (下一跳链路本地地址需指定接口 %eth0)
    ip route add 192.168.2.0/24 dev tun0                    # 添加指向设备 tun0 的路由 (点对点隧道常用)
    ip route add 172.16.0.0/12 via 192.168.1.1 table 100    # 添加路由到自定义表 100
    ip route add blackhole 203.0.113.0/24                   # 添加黑洞路由 (丢弃匹配流量)
    
  • replace / change: 替换或修改现有路由(语法同 add)。
  • del: 删除路由。
    ip route del 10.0.0.0/8 via 192.168.1.1 dev eth0 # 删除指定路由
    ip route del default via 192.168.1.1 dev eth0    # 删除默认网关
    ip route del 192.168.2.0/24 dev tun0             # 删除指向 tun0 的路由
    ip route del 172.16.0.0/12 table 100             # 从表 100 中删除路由
    
  • flush: 清除路由表 (慎用!会断网!)
    ip route flush table main     # 清除主路由表
    ip route flush cache          # 刷新路由缓存 (现代内核很少需要)
    

4. ip neighbour / ip neigh - 管理 邻居表 (ARP/NDISC 缓存)

查看和操作二层邻居发现缓存(IPv4 的 ARP 表,IPv6 的 NDISC 表)。

  • show: 显示邻居表信息(默认命令)。
    ip neigh show                 # 显示所有邻居条目
    ip neigh show dev eth0        # 显示 eth0 上的邻居条目
    
  • add: 添加静态邻居条目(永久 ARP)。
    ip neigh add 192.168.1.5 lladdr aa:bb:cc:dd:ee:ff dev eth0 nud perm # 添加永久条目
    
  • change / replace: 修改现有条目(语法同 add)。
  • del: 删除邻居条目。
    ip neigh del 192.168.1.5 dev eth0 # 删除 eth0 上 192.168.1.5 的条目
    
  • flush: 清除邻居表 (可能导致短暂通信中断)
    ip neigh flush dev eth0      # 清除 eth0 上的所有邻居条目
    

5. ip rule - 管理 路由策略数据库 (策略路由)

定义基于源地址、目的地址、ToS、fwmark 等条件选择不同路由表的规则。实现复杂路由策略。

  • show: 显示当前策略规则(默认命令)。
    ip rule show
    # 输出示例:
    # 0:      from all lookup local
    # 32766:  from all lookup main
    # 32767:  from all lookup default
    
  • add: 添加新规则。
    ip rule add from 192.168.2.0/24 table 100   # 源 IP 匹配 192.168.2.0/24 的流量查表 100
    ip rule add to 10.10.0.0/16 table 200       # 目的 IP 匹配 10.10.0.0/16 的流量查表 200
    ip rule add fwmark 0x1 table 300            # 防火墙标记 (fwmark) 为 1 的流量查表 300 (需 iptables/nftables 打标记)
    ip rule add pref 1000 table 400             # 添加优先级为 1000 的规则查表 400 (pref 越小优先级越高)
    ip rule add iif eth1 table 500              # 流入接口为 eth1 的流量查表 500
    
  • del: 删除规则。
    ip rule del from 192.168.2.0/24 table 100 # 删除指定规则
    ip rule del pref 1000                     # 删除优先级为 1000 的规则
    

6. ip netns - 管理 网络命名空间

创建隔离的网络栈环境(容器、虚拟化基础)。

  • list: 列出所有网络命名空间。
    ip netns list
    
  • add: 创建命名空间。
    ip netns add ns1          # 创建名为 ns1 的网络命名空间
    
  • delete: 删除命名空间。
    ip netns delete ns1       # 删除命名空间 ns1
    
  • exec: 在命名空间中执行命令。
    ip netns exec ns1 ip link show      # 在 ns1 中执行 `ip link show`
    ip netns exec ns1 bash              # 在 ns1 中启动一个 bash shell
    
  • monitor: 监视命名空间事件 (较少用)。

7. 其他常用 OBJECT

  • ip maddress / ip maddr: 管理多播地址。
  • ip tunnel: 管理隧道接口 (IPIP, GRE, SIT 等)。
  • ip tuntap: 管理 TUN/TAP 设备 (用户态网络)。
  • ip xfrm: 管理 IPSec 策略 (加密/认证)。
  • ip monitor: 实时监视网络事件 (路由、邻居、地址变化等)。ip monitor all 监视所有。
  • ip -br: 简洁模式输出 (常用于脚本)。ip -br link, ip -br addr.

总结: ip 命令是现代 Linux 网络配置和故障排除的基石。掌握其核心对象 (link, addr, route, neigh, rule, netns) 及其常用操作 (show, add, del, set),你将能高效地管理各种网络场景,从简单的接口配置到复杂的策略路由和网络隔离。务必使用 man ipip OBJECT help 查阅详细手册。



























ss 命令深度详解:Linux 网络套接字分析利器

ss (Socket Statistics) 是 iproute2 工具集的核心组件,用于实时监控和分析 Linux 系统的套接字连接。作为传统 netstat 的现代替代品,ss 直接读取内核数据结构,性能更高、信息更详细,是网络故障排查和性能分析的必备工具。


一、基础用法与核心选项

1. 命令格式
ss [选项] [过滤表达式]
2. 核心选项概览
选项说明示例
-t显示 TCP 套接字ss -t
-u显示 UDP 套接字ss -u
-w显示 RAW 套接字ss -w
-x显示 UNIX 域套接字ss -x
-a显示所有套接字(包括监听状态)ss -ta
-l仅显示监听状态套接字ss -tl
-n禁用服务名解析(显示端口号)ss -tn
-p显示使用套接字的进程信息ss -tp
-s显示套接字统计摘要ss -s
-i显示 TCP 内部信息ss -ti
-e显示详细套接字信息ss -te
-m显示套接字内存使用情况ss -tm
-o显示 TCP 计时器信息ss -to
-H隐藏标题行ss -tH
-4仅显示 IPv4 套接字ss -t4
-6仅显示 IPv6 套接字ss -t6

二、核心功能详解

1. 连接状态过滤(最强大功能)

使用 TCP 状态机状态进行精确过滤:

# 查看所有已建立的连接
ss -t state established

# 查看所有监听端口
ss -t state listening

# 查看所有 TIME-WAIT 状态的连接
ss -t state time-wait

# 查看 SYN-SENT 状态的连接(连接发起中)
ss -t state syn-sent

支持的所有 TCP 状态:

  • established
  • syn-sent
  • syn-recv
  • fin-wait-1
  • fin-wait-2
  • time-wait
  • closed
  • close-wait
  • last-ack
  • listening
  • all
  • connected(除 listening 和 closed 外的所有状态)
2. 高级过滤表达式

使用 BPF (Berkeley Packet Filter) 语法进行复杂过滤:

# 查看目标端口为 443 的 HTTPS 连接
ss -t 'dport = 443'

# 查看源 IP 为 192.168.1.100 的连接
ss -t 'src 192.168.1.100'

# 组合条件:源端口80或443
ss -t '( sport = :http or sport = :https )'

# 查看本地端口范围 8000-9000
ss -t 'sport gt 8000 and sport lt 9000'
3. 进程信息查看
# 显示进程信息和用户信息
ss -tup

输出示例:

Netid State  Recv-Q Send-Q Local Address:Port Peer Address:Port Process
tcp   ESTAB  0      0      192.168.1.100:ssh  203.0.113.5:64231 users:(("sshd",pid=1234,fd=3))
4. TCP 内部参数分析
# 显示 TCP 内部信息(cwnd, ssthresh, rtt 等)
ss -ti

输出示例:

ESTAB    0      0      192.168.1.100:ssh       203.0.113.5:64231
 cubic wscale:8,7 rto:209 rtt:12.5/7.5 ato:40 cwnd:10 send 4.3Mbps rcv_space:14480

关键参数说明:

  • cwnd:拥塞窗口大小(数据包数量)
  • ssthresh:慢启动阈值
  • rtt:往返时间(平均/方差)
  • rto:重传超时时间(毫秒)
  • mss:最大分段大小
  • rcv_space:接收窗口大小
5. 统计摘要
ss -s

输出示例:

Total: 189 (kernel 220)
TCP:   5 (estab 2, closed 0, orphaned 0, synrecv 0, timewait 0/0), ports 0

Transport Total     IP        IPv6
*         220       -         -
RAW       0         0         0
UDP       4         2         2
TCP       5         3         2
INET      9         5         4
FRAG      0         0         0

三、高级应用场景

1. 服务监控与排障
# 查看所有监听端口及对应进程
ss -tlpn

# 检查特定服务是否监听(如 HTTP)
ss -tln 'sport = :http'

# 查看异常连接状态(大量 TIME-WAIT)
ss -t state time-wait | wc -l
2. 网络性能分析
# 查看接收队列积压的连接(可能性能瓶颈)
ss -t -e | awk '/Recv-Q/ && $2 > 0'

# 分析高延迟连接
ss -ti | grep 'rtt:.*ms' | sort -k5 -n
3. 安全审计
# 查看所有外部连接
ss -t | grep -v 192.168

# 检查异常进程的网络活动
ss -p | grep suspicious_process
4. 容器网络分析
# 查看容器命名空间的网络连接
nsenter -t <pid> -n ss -t

# 查看 Docker 容器的所有连接
docker exec <container> ss -t
5. 实时监控
# 每秒刷新 ESTABLISHED 连接
watch -n 1 "ss -t state established"

# 监控特定端口的连接变化
ss -t -H 'dport = :80' | ts '[%Y-%m-%d %H:%M:%S]'
6. 关闭占用端口的程序进程

在 Linux 中,ss 命令本身不能直接关闭程序,但可以结合其他命令终止占用端口的进程。以下是详细步骤:

方法一:使用 ss + kill(推荐)

# 1. 查找占用端口的进程ID (PID)
sudo ss -tulnp | grep ':80 ' | awk '{print $7}' | cut -d= -f2 | cut -d, -f1

# 2. 终止进程 (替换为实际 PID)
sudo kill <PID>

# 强制终止 (如果普通 kill 无效)
sudo kill -9 <PID>

方法二:单行命令(快速终止)

# 终止所有占用 80 端口的进程
sudo kill $(sudo ss -tulnp | grep ':80 ' | awk -F= '{print $3}' | cut -d, -f1)

关键步骤详解:

  1. 查找占用端口的 PID

    sudo ss -tulnp | grep ':80 '
    
    • -tulnp:查看 TCP/UDP 监听端口和进程信息
      • 选项说明示例
        -t显示 TCP 套接字ss -t
        -u显示 UDP 套接字ss -u
        -l仅显示监听状态套接字ss -tl
        -n禁用服务名解析(显示端口号)ss -tn
        -p显示使用套接字的进程信息ss -tp
    • grep ':80 ':过滤 80 端口(空格避免匹配 8080)
    • 示例输出:
      tcp LISTEN 0 128 *:80 *:* users:(("nginx",pid=1234,fd=6))
      
  2. 提取 PID

    awk '{print $7}' | cut -d= -f2 | cut -d, -f1
    
    • users:(("nginx",pid=1234,fd=6)) 提取 1234
  3. 终止进程

    sudo kill 1234  # 正常终止
    sudo kill -9 1234  # 强制终止
    

完整操作示例:

# 查找并终止占用 80 端口的进程
port=80
pids=$(sudo ss -tulnp | grep ":$port " | awk -F= '{print $3}' | cut -d, -f1)

if [ -z "$pids" ]; then
  echo "未找到占用 $port 端口的进程"
else
  echo "终止进程: $pids"
  sudo kill $pids
fi

替代方案:使用 fuser(更简单)

# 查看占用 80 端口的进程
sudo fuser 80/tcp

# 终止进程
sudo fuser -k 80/tcp


四、与 netstat 对比

功能netstatss优势说明
性能较慢(遍历 /proc)极快(直接读内核)高负载服务器更适用
TCP 状态过滤不支持原生支持精确诊断连接问题
TCP 内部参数不支持详细显示网络性能优化必备
BPF 过滤不支持完整支持复杂查询更高效
进程信息需要 -p更详细的进程信息直接显示进程名和 PID
输出格式固定格式可脚本解析支持 JSON 输出 (-j)
IPv6 支持需额外选项原生支持更简洁的工作流
维护状态已弃用积极维护未来兼容性保证

五、专业技巧

  1. JSON 输出(v5.1+)

    ss -t -j | jq '.[] | select(.state == "ESTAB")'
    
  2. 持续监控模式

    # 实时监控 TCP 状态变化
    ss -t -a -E
    
  3. 内存使用分析

    # 按内存使用排序套接字
    ss -t -e -m | sort -k3 -n
    
  4. 连接地理信息

    # 结合 whois 查看连接来源
    ss -tn | awk '{print $5}' | cut -d: -f1 | sort -u | xargs -I{} geoiplookup {}
    
  5. 容器连接追踪

    # 查找容器的所有网络连接
    container_pid=$(docker inspect -f '{{.State.Pid}}' nginx)
    nsenter -t $container_pid -n ss -t
    

六、输出字段详解

典型 ss -tne 输出:

State      Recv-Q Send-Q Local Address:Port  Peer Address:Port  
ESTAB      0      0      192.168.1.100:22    203.0.113.5:64231  
 timer:(keepalive,1.120ms,0) uid:1000 ino:123456 sk:ffff888abc123456

关键字段:

  • Recv-Q:接收队列积压字节数
  • Send-Q:发送队列积压字节数
  • Local Address:Port:本地地址和端口
  • Peer Address:Port:远端地址和端口
  • timer:TCP 计时器类型和参数
  • uid:套接字所属用户 ID
  • ino:套接字的 inode 号
  • sk:套接字的内核内存地址



























使用 ss 命令关闭占用端口的程序

ss 命令本身不能直接关闭程序,但它是识别占用端口进程的关键工具。以下是完整解决方案:

完整步骤:查找并终止占用端口的进程

1. 使用 ss 查找占用端口的进程

# 查找占用 8080 端口的进程
sudo ss -tulnp | grep ':8080'
选项说明示例
-t显示 TCP 套接字ss -t
-u显示 UDP 套接字ss -u
-l仅显示监听状态套接字ss -tl
-n禁用服务名解析(显示端口号)ss -tn
-p显示使用套接字的进程信息ss -tp

示例输出:

tcp    LISTEN   0      128     0.0.0.0:8080      0.0.0.0:*    users:(("node",pid=12345,fd=21))

2. 从输出中提取 PID

# 提取 PID (12345)
sudo ss -tulnp | grep ':8080' | awk '{print $NF}' | cut -d= -f3 | cut -d, -f1

3. 终止进程

# 正常终止进程
sudo kill 12345

# 如果进程未响应,强制终止
sudo kill -9 12345

一键脚本:释放指定端口

创建脚本 free-port.sh

#!/bin/bash

if [ -z "$1" ]; then
  echo "Usage: $0 <port>"
  exit 1
fi

PORT=$1
PID=$(sudo ss -tulnp "sport = :$PORT" | awk 'NR>1 {print $NF}' | cut -d= -f3 | cut -d, -f1)

if [ -z "$PID" ]; then
  echo "No process found using port $PORT"
  exit 0
fi

echo "Found process $PID using port $PORT"
sudo kill $PID && echo "Process terminated" || sudo kill -9 $PID && echo "Process force-terminated"

使用示例:

sudo ./free-port.sh 8080

进阶方法:按服务名终止进程

1. 使用服务名称关闭

# 查找使用端口的服务名
SERVICE=$(sudo ss -tulp "sport = :8080" | awk 'NR>1 {print $NF}' | cut -d\" -f2)

# 通过系统服务关闭
sudo systemctl stop $SERVICE

2. 处理多个进程占用同一端口

# 获取所有占用8080端口的PID
PIDS=$(sudo ss -tulnp "sport = :8080" | awk 'NR>1 {split($NF,a,/=|,/); print a[3]}' | sort -u)

# 终止所有相关进程
for PID in $PIDS; do
  sudo kill $PID
done

替代方法:使用 fuser 命令

如果系统安装了 fuser,更简单的方法:

# 查看占用端口的进程
sudo fuser 8080/tcp

# 终止进程
sudo fuser -k 8080/tcp

验证端口是否释放

# 检查端口是否释放
sudo ss -tuln | grep ':8080'

# 或使用 netstat
sudo netstat -tuln | grep ':8080'

注意事项

  1. 权限问题:需要使用 sudo 查看所有进程信息

  2. 服务管理:对于系统服务,优先使用 systemctl stop <service>

  3. 谨慎操作:确保终止的是正确进程

  4. 端口范围:TCP/UDP 端口需要区分

    # 指定协议
    sudo ss -tulnp 'sport = :8080 and dport = :*'
    
  5. 进程保护:某些关键进程(如数据库)可能需要特殊关闭流程

完整工作流示例

释放被占用的 3000 端口:

# 1. 查找占用进程
$ sudo ss -tulnp | grep ':3000'
tcp    LISTEN   0      128     0.0.0.0:3000      0.0.0.0:*    users:(("node",pid=4567,fd=18))

# 2. 终止进程
$ sudo kill 4567

# 3. 验证
$ sudo ss -tuln | grep ':3000'  # 无输出表示成功

通过结合 ss 和其他 Linux 工具,你可以高效地识别并释放被占用的端口,解决常见的 "Address already in use" 问题。



























bridge 命令详解:Linux 网桥管理利器

bridge 是 iproute2 工具集中用于管理二层以太网桥的专用命令,可替代传统的 brctl 工具。它提供更精细的控制,支持现代网络特性(如 VLAN 过滤、STP、VXLAN 等),是容器网络和虚拟化环境的核心工具。


一、基础命令结构

bridge [OPTIONS] OBJECT COMMAND [ARGUMENTS]

常用 OBJECT:

  • link:管理桥接端口
  • fdb:管理 MAC 地址表(转发数据库)
  • vlan:管理 VLAN 配置
  • mdb:管理组播数据库
  • vni:管理 VXLAN 网络标识符
  • monitor:实时监控网桥事件

常用 OPTIONS:

  • -j:JSON 格式输出
  • -d:详细信息模式
  • -s:显示统计信息
  • -c[color]:彩色输出(-c-cc 更丰富)
  • -t:显示时间戳

二、核心功能详解

1. bridge link - 桥接端口管理

管理物理/虚拟接口与网桥的关联

# 显示所有桥接端口信息
bridge link show

# 显示特定接口的桥接状态
bridge link show dev eth0

# 设置端口属性
bridge link set dev eth0 cost 10          # STP路径成本
bridge link set dev eth0 priority 32      # STP端口优先级
bridge link set dev eth0 state 3          # 强制转发状态 (0:禁用, 1:监听, 2:学习, 3:转发)
bridge link set dev eth0 guard on         # 启用BPDU guard
bridge link set dev eth0 hairpin on       # 启用端口镜像
2. bridge fdb - MAC 地址表管理

管理网桥的 MAC 学习与转发

# 显示所有MAC表项
bridge fdb show

# 显示特定设备的MAC表
bridge fdb show dev br0

# 添加静态MAC表项
bridge fdb add 00:11:22:33:44:55 dev eth0 master static

# 添加本地永久条目(不转发)
bridge fdb add 00:11:22:33:44:55 dev eth0 local

# 删除MAC表项
bridge fdb del 00:11:22:33:44:55 dev eth0

# 带VLAN的静态条目
bridge fdb add 00:11:22:33:44:55 dev eth0 vlan 10 master static
3. bridge vlan - VLAN 管理

配置 802.1Q VLAN 过滤

# 显示所有VLAN配置
bridge vlan show

# 显示特定接口的VLAN
bridge vlan show dev eth0

# 添加VLAN成员
bridge vlan add dev eth0 vid 10           # 添加VLAN 10
bridge vlan add dev eth0 vid 20 pvid      # 设为PVID(端口VLAN ID)
bridge vlan add dev eth0 vid 30 untagged  # 不打标签

# 删除VLAN成员
bridge vlan del dev eth0 vid 10

# 配置网桥自身的VLAN
bridge vlan add dev br0 vid 10 self
4. bridge mdb - 组播管理

管理 IGMP/MLD 监听组播组

# 显示组播组信息
bridge mdb show

# 添加静态组播组
bridge mdb add dev br0 port eth0 grp 239.1.2.3 permanent

# 删除组播组
bridge mdb del dev br0 port eth0 grp 239.1.2.3

三、完整网桥配置示例

1. 创建基本网桥
# 创建网桥设备
ip link add name br0 type bridge

# 启用网桥
ip link set br0 up

# 添加端口到网桥
ip link set eth0 master br0
ip link set eth1 master br0

# 设置STP参数
ip link set br0 type bridge stp_state 1
ip link set br0 type bridge forward_delay 1500
2. 配置 VLAN 感知网桥
# 启用VLAN过滤
ip link set br0 type bridge vlan_filtering 1

# 配置端口VLAN
bridge vlan add dev eth0 vid 10 pvid untagged
bridge vlan add dev eth0 vid 20
bridge vlan add dev eth1 vid 10
bridge vlan add dev eth1 vid 20 pvid untagged

# 配置网桥自身VLAN
bridge vlan add dev br0 vid 10 self
bridge vlan add dev br0 vid 20 self
3. 私有 VLAN (PVLAN) 配置
# 创建主VLAN 100
bridge vlan add dev eth0 vid 100
bridge vlan add dev br0 vid 100 self

# 创建隔离VLAN 200
bridge vlan add dev eth1 vid 200 pvid
bridge vlan add dev eth1 vid 100 isolated

# 创建团体VLAN 300
bridge vlan add dev eth2 vid 300 pvid
bridge vlan add dev eth2 vid 100 community

四、监控与诊断

1. 实时监控网桥事件
bridge monitor [fdb|link|vlan|mdb]  # 监控特定对象
bridge monitor all                 # 监控所有事件
2. 查看详细统计信息
bridge -s link show     # 端口统计
bridge -s fdb show      # MAC表操作统计
bridge -c vlan show     # 彩色显示VLAN配置
3. 生成树协议 (STP) 状态
# 查看STP摘要
bridge -j link show | jq '.[] | {ifname, stp_state}'

# 安装额外工具查看详细STP状态
sudo apt install bridge-utils
brctl showstp br0

五、高级特性

1. VXLAN 集成
# 创建VXLAN接口
ip link add vxlan0 type vxlan id 42 dstport 4789

# 加入网桥
ip link set vxlan0 master br0

# 配置VXLAN的VNI映射
bridge vni add dev br0 vni 42
2. 端口保护配置
# 启用根保护
bridge link set dev eth0 root_block on

# 启用BPDU过滤
bridge link set dev eth0 bpdufilter on

# 设置MAC学习限制
bridge link set dev eth0 learning_limit 100
3. EVPN 集成
# 配置MAC-VRF
bridge link set dev br0 vlan_tunnel on

# 添加VXLAN到EVPN
bridge fdb add 00:11:22:33:44:55 dev vxlan0 dst 192.168.1.100 vni 42 self permanent

六、与传统 brctl 对比

功能brctlbridge
创建网桥brctl addbr br0ip link add br0 type bridge
添加端口brctl addif br0 eth0ip link set eth0 master br0
删除端口brctl delif br0 eth0ip link set eth0 nomaster
显示网桥brctl showbridge link show
STP 控制brctl stp br0 onip link set br0 type bridge stp_state 1
VLAN 支持有限(需 vconfig)原生支持
MAC 表管理brctl showmacs br0bridge fdb show
组播管理不支持完整支持
JSON 输出不支持支持

七、实用技巧

1. 批量配置脚本
#!/bin/bash
BR="br0"
PORTS="eth0 eth1"

# 创建网桥
ip link add $BR type bridge
ip link set $BR up

# 添加端口
for port in $PORTS; do
  ip link set $port up
  ip link set $port master $BR
  bridge link set dev $port state 3  # 强制转发状态
done

# 启用VLAN过滤
ip link set $BR type bridge vlan_filtering 1
2. 端口镜像 (SPAN)
# 创建镜像端口
ip link add name mirror0 type bridge

# 配置镜像源和目标
bridge link set dev eth0 monitor on
tc qdisc add dev mirror0 ingress
tc filter add dev mirror0 parent ffff: matchall action mirred egress mirror dev eth0
3. MAC 地址过滤
# 拒绝特定MAC
bridge fdb add 00:11:22:33:44:55 dev eth0 master static deny

# 仅允许白名单MAC
bridge fdb flush dev eth0
bridge fdb add 00:11:22:33:44:55 dev eth0 master static
bridge link set dev eth0 learning 0  # 关闭MAC学习
4. 网络命名空间桥接
# 创建命名空间
ip netns add ns1

# 创建veth对
ip link add veth0 type veth peer name veth1

# 将veth1放入命名空间
ip link set veth1 netns ns1

# 将veth0加入网桥
ip link set veth0 master br0

八、故障排查命令

# 检查VLAN过滤状态
bridge vlan show

# 查看STP阻塞端口
bridge -c link show | grep "state 0"

# 检查MAC学习异常
bridge -s fdb show | grep "learning"

# 查看组播组状态
bridge mdb show

# 实时监控FDB变化
bridge monitor fdb

bridge 命令提供了对 Linux 网桥的精细控制,特别适合容器网络、SDN 和虚拟化环境。结合 iptc 命令,可实现完整的 L2-L7 网络管理能力。



























iproute2 bridge 命令详解

bridge 是 iproute2 工具集中专门用于管理 Linux 内核网桥的命令,它取代了旧的 brctl 工具,提供了更强大的功能,尤其在 VLAN 支持方面表现突出。Linux 网桥实现了二层交换功能,用于连接多个网络接口。

基本语法

bridge [OPTIONS] OBJECT COMMAND

常用 OBJECT:

  • link:管理网桥端口
  • fdb:管理 MAC 转发数据库
  • mdb:管理多播组数据库
  • vlan:管理 VLAN 配置
  • vni:管理 VXLAN 配置

常用 OPTIONS:

  • -d:详细输出
  • -s:显示统计信息
  • -j:JSON 格式输出
  • -p:美化输出

核心功能详解

1. bridge link - 管理网桥端口

管理连接到网桥的物理/虚拟接口(端口)。

# 查看所有网桥端口信息
bridge link show

# 查看指定网桥的端口
bridge link show dev br0

# 设置端口属性
bridge link set dev eth0 cost 50        # 设置STP路径开销
bridge link set dev eth0 priority 32    # 设置STP端口优先级
bridge link set dev eth0 state blocked  # 手动设置端口状态

端口状态说明:

  • forwarding:正常转发数据
  • blocked:阻塞状态(STP)
  • disabled:禁用状态
  • learning:学习MAC地址

2. bridge vlan - VLAN 管理(核心功能)

重要提示: 使用 VLAN 功能前,必须在网桥上启用 VLAN 过滤:

ip link set dev br0 type bridge vlan_filtering 1
VLAN 端口配置
# 添加 VLAN 到端口
bridge vlan add dev eth0 vid 10 pvid untagged

# 参数说明:
#   vid <VLAN_ID> : VLAN ID
#   pvid          : 设置为端口的默认 VLAN
#   untagged      : 该 VLAN 流量出端口时去掉标签
#   tagged        : 保留 VLAN 标签(默认)

# 删除端口的 VLAN
bridge vlan del dev eth0 vid 20

# 查看 VLAN 配置
bridge vlan show

示例配置:

# 端口 eth0:
#   - VLAN 10 作为默认 VLAN (PVID),untagged
#   - VLAN 20 作为 tagged VLAN
bridge vlan add dev eth0 vid 10 pvid untagged
bridge vlan add dev eth0 vid 20

# 端口 eth1:
#   - VLAN 20 作为默认 VLAN (PVID),untagged
#   - VLAN 10 作为 tagged VLAN
bridge vlan add dev eth1 vid 20 pvid untagged
bridge vlan add dev eth1 vid 10

3. bridge fdb - MAC 地址表管理

管理网桥的 MAC 地址转发表(FDB)。

# 查看 MAC 地址表
bridge fdb show

# 添加静态 MAC 条目
bridge fdb add aa:bb:cc:dd:ee:ff dev eth0 vlan 10 static

# 删除 MAC 条目
bridge fdb del aa:bb:cc:dd:ee:ff dev eth0

# 刷新 MAC 表(谨慎使用!)
bridge fdb flush dev br0

MAC 条目标志:

  • static:静态条目(不会老化)
  • self:网桥自身的 MAC 地址
  • master:通过端口学习到的 MAC
  • router:路由器 MAC 地址

4. bridge mdb - 多播组管理

管理网桥的多播组转发表(MDB)。

# 查看多播组
bridge mdb show

# 添加多播组条目
bridge mdb add dev br0 port eth0 grp 01:00:5e:00:00:01 permanent

# 删除多播组条目
bridge mdb del dev br0 port eth0 grp 01:00:5e:00:00:01

5. 网桥全局配置(使用 ip link

网桥本身的配置需要通过 ip link 命令完成:

# 创建网桥
ip link add name br0 type bridge

# 启用网桥
ip link set br0 up

# 设置网桥参数
ip link set dev br0 type bridge \
    stp_state 1 \          # 启用STP
    forward_delay 1500 \   # 转发延迟(ms)
    hello_time 200 \       # Hello包间隔(ms)
    max_age 2000           # 最大老化时间(ms)

# 添加端口到网桥
ip link set dev eth0 master br0
ip link set dev eth1 master br0

# 从网桥移除端口
ip link set dev eth0 nomaster

完整配置示例:带 VLAN 的网桥

# 1. 创建网桥并启用 VLAN 过滤
ip link add name br0 type bridge
ip link set dev br0 type bridge vlan_filtering 1
ip link set br0 up

# 2. 添加物理接口到网桥
ip link set dev eth0 master br0
ip link set dev eth1 master br0

# 3. 配置端口 VLAN
# eth0: VLAN 10 (untagged), VLAN 20 (tagged)
bridge vlan add dev eth0 vid 10 pvid untagged
bridge vlan add dev eth0 vid 20

# eth1: VLAN 20 (untagged), VLAN 10 (tagged)
bridge vlan add dev eth1 vid 20 pvid untagged
bridge vlan add dev eth1 vid 10

# 4. 创建 VLAN 虚拟接口
ip link add link br0 name br0.10 type vlan id 10
ip link add link br0 name br0.20 type vlan id 20

# 5. 配置 IP 地址
ip addr add 192.168.10.1/24 dev br0.10
ip addr add 192.168.20.1/24 dev br0.20
ip link set br0.10 up
ip link set br0.20 up

# 6. 验证配置
bridge vlan show
bridge fdb show

常见问题排查

  1. VLAN 不工作:

    # 检查 VLAN 过滤是否启用
    ip -d link show br0 | grep vlan_filtering
    
    # 检查端口 VLAN 配置
    bridge vlan show
    
  2. STP 问题:

    # 查看端口状态
    bridge link show | grep -E 'state|cost'
    
    # 检查网桥 STP 设置
    ip -d link show br0 | grep stp
    
  3. MAC 地址表问题:

    # 查看 MAC 地址表
    bridge -s fdb show
    
    # 检查老化时间
    ip -d link show br0 | grep ageing_time
    

总结

bridge 命令是管理 Linux 网桥的核心工具,特别在以下场景中必不可少:

  1. 配置带 VLAN 的复杂网络拓扑
  2. 管理 MAC 地址转发表
  3. 实现多播网络
  4. 网络虚拟化环境(容器、虚拟机网络)

关键优势:

  • 完整的 VLAN 支持(PVID、tagged/untagged)
  • 精细的 MAC 地址表控制
  • 直接操作内核数据结构,高效可靠
  • ip link 命令无缝配合

掌握 bridge 命令对于构建复杂网络拓扑、实现网络隔离和优化网络性能至关重要,特别是在虚拟化环境和云基础设施中。



























iproute2 tc 命令详解:Linux 流量控制终极指南

tc (Traffic Control) 是 Linux 系统中最强大的网络流量控制工具,属于 iproute2 套件的一部分。它允许管理员实现精细的 QoS(服务质量)策略,包括流量整形、调度、限速和优先级管理。

核心概念

1. Qdisc (Queueing Discipline)

  • 队列规则,决定数据包如何排队和发送
  • 类型:
    • 无类 Qdisc:简单队列(pfifo_fast, tbf, sfq)
    • 有类 Qdisc:支持流量分类(HTB, CBQ, PRIO)

2. Class

  • 存在于有类 Qdisc 中
  • 代表特定流量类别
  • 可包含子类和子 Qdisc

3. Filter

  • 流量分类器,决定数据包属于哪个 Class
  • 分类依据:IP 地址、端口、协议、防火墙标记等

4. 流量控制层次结构

[ Root Qdisc ]
    |
    |-- [ Class 1:1 ] --- [ Leaf Qdisc ]
    |         |
    |         |-- [ Subclass 1:10 ]
    |         |-- [ Subclass 1:20 ]
    |
    |-- [ Filter ] (将流量导向特定 Class)

基本语法

tc [ OPTIONS ] OBJECT COMMAND [ dev DEVICE ]

常用 OBJECT:

  • qdisc: 管理队列规则
  • class: 管理流量类
  • filter: 管理流量过滤器
  • action: 高级操作(限速器、采样等)

常用 COMMAND:

  • add: 添加新对象
  • delete: 删除对象
  • change: 修改现有对象
  • replace: 替换对象
  • show: 显示配置

常用 Qdisc 详解

1. HTB (Hierarchical Token Bucket)

最常用的流量整形器,支持分层带宽分配

# 创建根 HTB Qdisc
tc qdisc add dev eth0 root handle 1: htb default 30

# 创建主类 (总带宽)
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

# 创建子类 (保证带宽 + 最大带宽)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 20mbit ceil 40mbit
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 50mbit ceil 100mbit

# 为子类添加叶 Qdisc (SFQ 用于公平排队)
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10
tc qdisc add dev eth0 parent 1:20 handle 20: sfq perturb 10
tc qdisc add dev eth0 parent 1:30 handle 30: sfq perturb 10

HTB 参数:

  • rate: 保证带宽
  • ceil: 最大可用带宽
  • burst: 令牌桶大小
  • cburst: 承诺突发大小
  • quantum: 每次轮询服务的数据量

2. TBF (Token Bucket Filter)

简单高效的流量整形器

# 限制出口带宽为 10Mbps
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

TBF 参数:

  • rate: 目标速率
  • burst: 桶大小(允许突发)
  • latency: 最大延迟
  • peakrate: 峰值速率
  • mtu: 最大传输单元

3. SFQ (Stochastic Fairness Queueing)

随机公平队列,防止单一流独占带宽

tc qdisc add dev eth0 parent 1:10 sfq perturb 10 quantum 1514

SFQ 参数:

  • perturb: 哈希算法重置间隔(秒)
  • quantum: 每次轮询服务的数据量
  • limit: 队列最大包数

4. PRIO (Priority Queueing)

优先级调度器

tc qdisc add dev eth0 root handle 1: prio bands 3
# 为每个优先级带添加叶 Qdisc
tc qdisc add dev eth0 parent 1:1 handle 10: sfq
tc qdisc add dev eth0 parent 1:2 handle 20: tbf rate 5mbit burst 32k
tc qdisc add dev eth0 parent 1:3 handle 30: sfq

流量过滤器 (Filter)

1. u32 过滤器

基于包头的任意字段进行匹配

# 匹配目标端口 80 (HTTP)
tc filter add dev eth0 protocol ip parent 1: prio 1 u32 \
  match ip dport 80 0xffff flowid 1:10

# 匹配源 IP 192.168.1.0/24
tc filter add dev eth0 protocol ip parent 1: prio 2 u32 \
  match ip src 192.168.1.0/24 flowid 1:20

2. fw 过滤器

基于防火墙标记

# 用 iptables 打标记
iptables -t mangle -A OUTPUT -p tcp --dport 443 -j MARK --set-mark 1

# 用 fw 过滤器分类
tc filter add dev eth0 parent 1: protocol ip prio 3 handle 1 fw flowid 1:30

3. 基本匹配器 (Basic Matcher)

简单匹配条件组合

tc filter add dev eth0 parent 1: protocol ip prio 4 basic \
  match 'cmp(u16 at 0 layer transport eq 22)' flowid 1:10

监控与统计

# 查看所有 Qdisc
tc -s qdisc show dev eth0

# 查看所有 Class
tc -s class show dev eth0

# 查看所有 Filter
tc filter show dev eth0

# 查看 HTB 详细统计
tc -s -d class show dev eth0

关键统计指标:

  • Sent: 已发送字节/包
  • Rate: 当前速率
  • Ceil: 最大速率
  • Borrows: 借用带宽次数
  • Lends: 借出带宽次数
  • Drops: 丢包数

高级功能

入口流量控制 (Ingress Policing)

# 添加入口 Qdisc
tc qdisc add dev eth0 handle ffff: ingress

# 添加入口限速器 (限速 10Mbps)
tc filter add dev eth0 parent ffff: protocol ip prio 1 u32 \
  match ip src 0.0.0.0/0 police rate 10mbit burst 32k drop flowid :1

Police 参数:

  • rate: 允许的速率
  • burst: 突发大小
  • drop/mark: 超限时动作
  • conform-exceed: 不同动作策略

流量镜像 (Mirroring)

# 将 eth0 的流量镜像到 eth1
tc filter add dev eth0 parent 1: protocol ip prio 10 u32 \
  match ip src 192.168.1.0/24 action mirred egress mirror dev eth1

采样 (Sampling)

# 每100个包采样1个发送到监控端口
tc filter add dev eth0 parent 1: protocol ip prio 20 u32 \
  match ip src 0.0.0.0/0 action sample rate 100 group 1

综合示例:企业级 QoS 策略

# 1. 创建根 HTB
tc qdisc add dev eth0 root handle 1: htb default 40

# 2. 创建主类 (总带宽1Gbps)
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit ceil 1000mbit

# 3. 创建子类
# 关键业务 (30%)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 300mbit ceil 500mbit prio 0
# 普通业务 (40%)
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 400mbit ceil 800mbit prio 1
# 默认业务 (30%)
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 300mbit ceil 1000mbit prio 2
# 低优先级业务
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 100mbit ceil 200mbit prio 3

# 4. 添加叶 Qdisc
for i in 10 20 30 40; do
  tc qdisc add dev eth0 parent 1:$i handle ${i}0: sfq perturb 10
done

# 5. 添加过滤器
# VoIP (最高优先级)
tc filter add dev eth0 parent 1: prio 1 u32 \
  match ip dport 5060 0xffff flowid 1:10
  match ip protocol 17 0xff flowid 1:10 \
  match u16 0xb800 0xffff at -4

# 视频会议
tc filter add dev eth0 parent 1: prio 2 u32 \
  match ip dport 1935 0xffff flowid 1:10  # RTMP

# 关键业务应用
tc filter add dev eth0 parent 1: prio 3 u32 \
  match ip dport 3306 0xffff flowid 1:20  # MySQL
  match ip dport 5432 0xffff flowid 1:20  # PostgreSQL

# 低优先级流量 (P2P)
tc filter add dev eth0 parent 1: prio 10 u32 \
  match ip dport 6881 0xffff flowid 1:40  # BitTorrent
  match ip dport 4662 0xffff flowid 1:40  # eMule

# 6. 监控配置
watch -n 1 "tc -s class show dev eth0"

调试与排错

  1. 查看内核日志

    dmesg | grep tc
    
  2. 模拟流量测试

    # 生成测试流量
    iperf3 -c server -p 80 -t 60  # HTTP
    iperf3 -c server -u -p 5060 -b 1M  # VoIP
    
  3. 检查配置层次

    tc -p -graph qdisc show dev eth0
    
  4. 常见错误解决

    • "RTNETLINK answers: Invalid argument": 参数错误
    • "No such file or directory": 对象不存在
    • "Operation not supported": 内核模块未加载

最佳实践

  1. 分层设计:从简单到复杂逐步构建策略
  2. 监控驱动:基于实际流量调整参数
  3. 标记优先:使用防火墙标记简化分类
  4. 文档化:记录所有策略和参数
  5. 测试验证:在生产环境前充分测试
  6. 自动化:使用脚本管理复杂配置

性能优化技巧

  1. 使用ifb虚拟设备处理入口流量

    modprobe ifb
    ip link set dev ifb0 up
    tc qdisc add dev eth0 ingress
    tc filter add dev eth0 parent ffff: u32 match u32 0 0 action mirred egress redirect dev ifb0
    
  2. HTB 参数优化

    tc class add ... htb rate 100mbit ceil 100mbit burst 1m cburst 2m quantum 1514
    
  3. 选择合适叶 Qdisc

    • 高吞吐量:fq_codel
    • 低延迟:pfifo_fast
    • 公平性:sfq
  4. 离线计算参数

    burst = rate * (latency / 1000) / 8
    quantum = MTU * 10
    

总结

tc 是 Linux 网络工程师的终极武器,掌握它意味着:

  • 精确控制网络带宽分配
  • 保障关键应用服务质量
  • 实现复杂流量工程策略
  • 优化网络性能与资源利用

虽然学习曲线陡峭,但投入时间掌握 tc 将在网络管理、云计算、CDN 优化等领域带来巨大回报。从简单限速开始,逐步探索分层 QoS、流量整形和高级过滤,最终构建出满足任何业务需求的网络流量控制系统。



























tc 命令详解:Linux 流量控制终极指南

tc (Traffic Control) 是 iproute2 工具集中用于网络流量整形、调度和策略控制的核心命令。它实现了 Linux 内核的 QoS (Quality of Service) 系统,允许对网络流量进行精细控制,是构建高性能网络和解决拥塞问题的关键工具。


一、核心概念体系

1. 三大基础组件
组件作用示例
qdisc队列规则 - 流量调度核心机制HTB, TBF, SFQ, Netem
class流量类别 - 划分不同优先级/带宽类别1:1, 1:10, 1:20
filter分类器 - 将流量分配到特定 classu32, fwmark, route
2. 流量控制层级
[ root qdisc ]
    |
    |-- [ class 1:1 ] 
    |       |
    |       |-- [ leaf qdisc 1:10 ] (e.g., SFQ)
    |
    |-- [ class 1:2 ]
            |
            |-- [ leaf qdisc 1:20 ]

二、命令结构详解

tc [ OPTIONS ] OBJECT COMMAND [ PARAMETERS ]

常用 OBJECT:

  • qdisc:管理队列规则
  • class:管理流量类别
  • filter:管理流量分类器
  • action:管理过滤器动作

核心 OPTIONS:

  • -s:显示统计信息
  • -d:显示详细信息
  • -p:人性化显示速率值
  • -j:JSON 格式输出
  • -stats:显示历史统计

三、队列规则 (qdisc) 详解

1. 常用 qdisc 类型
类型作用适用场景
HTB分层令牌桶 - 精确带宽控制多级带宽分配
TBF令牌桶过滤器 - 简单限速单级限速
SFQ随机公平队列 - 防止流饥饿P2P/多连接场景
Netem网络模拟器 - 模拟网络特性测试延迟/丢包
PRIO优先级队列 - 简单优先级调度VoIP/游戏流量优先
FQ_Codel公平队列+拥塞控制 - 现代AQM算法高拥塞场景
2. qdisc 管理命令
# 添加根队列
tc qdisc add dev eth0 root handle 1: htb default 30

# 添加子队列
tc qdisc add dev eth0 parent 1:10 handle 10: sfq perturb 10

# 替换现有队列
tc qdisc replace dev eth0 root netem delay 100ms

# 删除队列
tc qdisc del dev eth0 root

# 显示队列
tc -s qdisc show dev eth0

四、流量类别 (class) 配置

1. HTB 类别配置示例
# 创建父类 (总带宽100Mbps)
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit

# 创建子类 (限速30Mbps,最大50Mbps)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit burst 15k cburst 15k

# 创建默认类
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 10mbit ceil 100mbit
2. 关键参数解析
  • rate:保证带宽
  • ceil:最大可用带宽
  • burst:突发缓冲区大小
  • prio:优先级 (数值越小优先级越高)
  • quantum:每次调度分配的字节数

五、过滤器 (filter) 配置

1. 常用分类器
分类器匹配依据示例
u32包头任意字段IP/TCP/UDP 头字段
fw防火墙标记 (iptables MARK)结合 iptables 使用
route路由表根据路由结果分类
cgroupcgroup 控制组容器环境流量控制
2. 过滤器配置示例
# 基于源IP分类
tc filter add dev eth0 parent 1: protocol ip prio 1 u32 \
  match ip src 192.168.1.0/24 flowid 1:10

# 基于目标端口分类
tc filter add dev eth0 parent 1: protocol ip prio 2 u32 \
  match ip dport 80 0xffff flowid 1:20

# 基于防火墙标记
tc filter add dev eth0 parent 1: protocol ip prio 3 handle 1 fw flowid 1:30

六、实战配置示例

1. 企业级带宽分配
# 创建HTB根队列
tc qdisc add dev eth0 root handle 1: htb default 40

# 创建父类 (总带宽1Gbps)
tc class add dev eth0 parent 1: classid 1:1 htb rate 1000mbit

# 创建子类 - VOIP (高优先级)
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 100mbit ceil 200mbit prio 1
tc qdisc add dev eth0 parent 1:10 sfq quantum 1514b perturb 10

# 创建子类 - 视频会议
tc class add dev eth0 parent 1:1 classid 1:20 htb rate 300mbit ceil 600mbit prio 2
tc qdisc add dev eth0 parent 1:20 fq_codel limit 1000 flows 1024

# 创建子类 - 普通流量
tc class add dev eth0 parent 1:1 classid 1:30 htb rate 200mbit ceil 800mbit prio 3
tc qdisc add dev eth0 parent 1:30 sfq

# 默认类 - 背景流量
tc class add dev eth0 parent 1:1 classid 1:40 htb rate 50mbit ceil 100mbit prio 4
tc qdisc add dev eth0 parent 1:40 netem delay 50ms

# 分类规则
tc filter add dev eth0 parent 1: prio 1 u32 match ip dport 5060 0xffff flowid 1:10  # SIP
tc filter add dev eth0 parent 1: prio 2 u32 match ip tos 0xb8 0xff flowid 1:20      # DSCP EF
tc filter add dev eth0 parent 1: prio 3 u32 match ip src 10.0.0.0/24 flowid 1:30
2. 网络模拟 (Netem)
# 基础延迟
tc qdisc add dev eth0 root netem delay 100ms

# 随机丢包
tc qdisc add dev eth0 root netem loss 5%

# 丢包相关性 (连续丢包)
tc qdisc add dev eth0 root netem loss 5% 25%

# 包重复
tc qdisc add dev eth0 root netem duplicate 3%

# 包损坏
tc qdisc add dev eth0 root netem corrupt 2%

# 包乱序
tc qdisc add dev eth0 root netem delay 50ms reorder 25% 50%
3. 入口流量控制 (Ingress Policer)
# 添加ingress qdisc
tc qdisc add dev eth0 handle ffff: ingress

# 限速入口流量为10Mbps
tc filter add dev eth0 parent ffff: protocol ip u32 match u32 0 0 \
  police rate 10mbit burst 10k drop flowid :1

七、监控与诊断

1. 查看统计信息
tc -s qdisc show dev eth0
tc -s class show dev eth0
tc -s filter show dev eth0
2. 关键监控指标
指标含义问题指示
sent发送的字节数/包数-
dropped丢弃的包数量拥塞/配置过严
overlimits超过限制的次数突发配置过小
requeues重新排队次数调度问题
backlog当前队列积压瞬时拥塞
lended(HTB) 借用带宽的包数带宽不足
3. 实时监控工具
# 安装tc监控工具
sudo apt install bmon iftop nload

# 使用bmon
bmon -o format:fmt='$(element:name) $(attr:txrate:bytes)'

八、高级技巧

1. cgroup 集成 (容器环境)
# 创建cgroup
mkdir /sys/fs/cgroup/net_cls/container1
echo 0x1001 > /sys/fs/cgroup/net_cls/container1/net_cls.classid

# tc过滤器
tc filter add dev eth0 parent 1: protocol ip prio 1 handle 1: cgroup
2. 负载均衡多WAN
# 创建HTB根
tc qdisc add dev eth0 root handle 1: htb

# 为每个WAN创建类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1: classid 1:2 htb rate 100mbit

# 创建过滤器 (基于源IP哈希)
tc filter add dev eth0 parent 1: prio 1 protocol ip u32 \
  match u32 0 0 flowid 1:1 hashkey mask 0x000f at 12 divisor 2

# 添加路由标记
ip rule add fwmark 1 table 1
ip rule add fwmark 2 table 2
3. 动态带宽调整
# 创建带宽调整脚本
#!/bin/bash
BW=$1
tc class change dev eth0 parent 1: classid 1:10 htb rate ${BW}mbit ceil ${BW}mbit
4. 结合 eBPF
# 附加eBPF程序分类
tc filter add dev eth0 parent 1: bpf obj classifier.o flowid 1:10

九、常见问题解决

1. 配置不生效
# 检查现有qdisc
tc qdisc show

# 删除现有配置
tc qdisc del dev eth0 root

# 检查内核模块
lsmod | grep sch_
2. 带宽控制不准确
- 增加 burst/cburst 值
- 检查物理链路带宽 (ethtool eth0)
- 使用更精确的 qdisc (如 FQ_Codel)
3. CPU 使用率高
- 避免复杂 u32 匹配
- 使用 fwmark 替代
- 减少小包处理 (增加 quantum)

十、tc 与 iptables 集成

# 标记SSH流量
iptables -t mangle -A OUTPUT -p tcp --dport 22 -j MARK --set-mark 10

# 基于标记分类
tc filter add dev eth0 parent 1: protocol ip prio 1 handle 10 fw flowid 1:10

十一、持久化配置

# 保存配置
tc qdisc save dev eth0 > /etc/tc.conf

# 系统启动加载
echo "tc qdisc restore < /etc/tc.conf" >> /etc/rc.local

# 使用systemd服务
[Unit]
Description=Traffic Control

[Service]
ExecStart=/sbin/tc -f /etc/tc.conf

[Install]
WantedBy=multi-user.target

tc 是 Linux 网络工程师的高级武器库,从简单的带宽限制到复杂的 QoS 策略都能胜任。掌握其原理和配置技巧,可有效解决网络拥塞、优化应用性能,并为关键业务提供服务质量保障。对于云环境、实时系统和电信级应用,tc 是实现高级流量工程的基石工具。



























iproute2 详解:Linux 网络管理的终极工具集

iproute2 是现代 Linux 系统的网络配置核心套件,它彻底取代了传统的 net-tools(ifconfig/route/arp 等工具),提供更强大、更一致的操作接口。以下从架构设计到实际应用进行全面解析:


一、iproute2 架构与设计哲学

核心组件关系
graph TD
    A[iproute2套件] --> B[核心命令 ip]
    A --> C[辅助工具 ss]
    A --> D[辅助工具 bridge]
    A --> E[辅助工具 tc]
    B --> F[对象子系统]
    F --> G[link 接口管理]
    F --> H[address IP地址]
    F --> I[route 路由表]
    F --> J[neigh ARP/NDISC]
    F --> K[rule 策略路由]
    F --> L[tunnel 隧道]
设计特点:
  1. 统一语法结构ip [OPTIONS] OBJECT COMMAND
  2. 直接内核通信:通过 Netlink 接口操作内核网络栈
  3. 模块化设计:各网络对象(link/addr/route)独立操作
  4. 支持现代特性:网络命名空间、VRF、XDP 等

二、核心对象操作详解

1. 接口管理 (ip link)
# 创建虚拟接口
ip link add veth0 type veth peer name veth1

# 设置接口属性
ip link set dev eth0 mtu 9000 txqueuelen 1000

# VLAN 接口操作
ip link add link eth0 name eth0.100 type vlan id 100

# 接口状态监控
ip -s -s link show eth0  # 双-s显示详细统计
2. 地址管理 (ip address)
# 添加主IP和别名IP
ip addr add 192.168.1.10/24 dev eth0
ip addr add 192.168.1.11/24 dev eth0 label eth0:backup

# 特殊地址操作
ip addr add 2001:db8::1/64 dev eth0 nodad  # IPv6无重复检测
ip addr change 192.168.1.10/24 dev eth0 preferred_lft 0  # 取消首选地址

# 地址策略配置
ip addr add 192.168.2.10/24 dev eth0 scope site  # 作用域限定
3. 路由管理 (ip route)
# 多路由表操作
echo "200 custom" >> /etc/iproute2/rt_tables
ip route add 10.0.0.0/24 via 192.168.1.1 table custom

# 策略路由
ip rule add from 192.168.2.0/24 table 200

# 多路径路由
ip route add default \
    nexthop via 192.168.1.1 weight 1 \
    nexthop via 192.168.2.1 weight 2

# 路由缓存
ip route get 8.8.8.8  # 查看具体路由路径
4. 邻居表管理 (ip neighbor)
# 永久ARP条目
ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

# 代理ARP
ip neigh add proxy 192.168.1.200 dev eth0

# 邻居状态监控
ip -s neigh show nud reachable  # 仅显示可达条目

三、高级网络功能

1. 网络命名空间 (Network Namespace)
# 创建并管理独立网络空间
ip netns add ns1
ip -n ns1 link set lo up
ip link add veth-ns type veth peer name veth-host
ip link set veth-ns netns ns1

# 跨命名空间通信
ip netns exec ns1 ip addr add 10.0.0.1/24 dev veth-ns
2. VRF (Virtual Routing and Forwarding)
# 创建VRF实例
ip link add vrf-red type vrf table 1000

# 绑定接口到VRF
ip link set dev eth0 master vrf-red

# VRF内路由配置
ip -vrf vrf-red route add default via 10.0.0.1
3. 高级隧道 (Tunneling)
# GRE隧道
ip tunnel add gre0 mode gre local 192.168.1.100 remote 203.0.113.5 ttl 64

# VXLAN配置
ip link add vxlan0 type vxlan id 42 \
    group 239.1.1.1 dev eth0 \
    dstport 4789 ttl 10

# IPIP隧道
ip tunnel add ipip0 mode ipip remote 203.0.113.10 local 192.168.1.100

四、辅助工具详解

1. bridge - 网桥管理
# VLAN过滤配置
bridge vlan add dev eth0 vid 100 pvid untagged
bridge vlan del dev eth1 vid 200

# STP参数调整
bridge link set dev eth0 priority 32 cost 10

# 组播控制
bridge mdb add dev br0 port eth0 grp 239.1.1.1 permanent
2. tc - 流量控制
# 限速配置
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

# 优先级队列
tc qdisc add dev eth0 handle 1: root htb
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 30mbit ceil 50mbit

# 过滤器
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10
3. ss - 套接字统计
# 高级过滤
ss -nt state established '( dport = :443 or sport = :80 )'

# 进程关联
ss -tup -a  # 显示所有TCP/UDP进程信息

# 内核内存分析
ss -tem  # 显示内存使用和socket选项

五、诊断与监控技巧

1. 实时监控
# 路由事件监听
ip monitor route

# 邻居表变化监控
ip -t monitor neigh
2. 网络状态快照
# 生成完整网络配置报告
ip -d -s -h link list
ip -d -s -h addr list
ip -d -s -h route list table all
bridge -d -s link show
3. 故障排查三板斧
# 1. 验证内核支持
lsmod | grep -e vxlan -e geneve -e bonding

# 2. 检查配置生效
ip -d link show eth0  # -d显示详细信息

# 3. 跟踪内核处理
echo 1 > /proc/sys/net/ipv4/route/debug  # 启用路由调试

六、与传统工具对比

功能iproute2net-tools
接口信息ip -s linkifconfig -a
路由表ip route showroute -n
ARP缓存ip neigharp -n
隧道管理ip tunnel无直接对应
策略路由ip rule不支持
网络命名空间ip netns不支持
VLAN接口ip link add ... type vlanvconfig

七、最佳实践指南

  1. 配置持久化

    # Debian/Ubuntu (netplan)
    network:
      version: 2
      bonds:
        bond0:
          interfaces: [eth0, eth1]
          parameters:
            mode: 802.3ad
    
  2. 安全操作原则

    # 危险操作前备份状态
    ip link show > network_backup.txt
    ip route save > route_backup.bin
    
    # 恢复路由表
    ip route restore < route_backup.bin
    
  3. 性能调优

    # 启用多队列
    ethtool -L eth0 combined 8
    
    # RPS配置
    echo f > /sys/class/net/eth0/queues/rx-0/rps_cpus
    

iproute2 的强大之处在于直接映射内核网络功能,掌握它等于掌握 Linux 网络的底层控制权。建议通过 man ip-<object>(如 man ip-route)获取最权威文档参考。



























iproute2 命令大全:现代 Linux 网络管理终极指南

iproute2 是 Linux 网络管理的核心工具集,替代了传统的 net-tools (ifconfig, route 等)。以下是全面的 iproute2 命令参考手册,涵盖所有主要网络管理场景:

一、设备与链路管理

1. 接口状态管理

# 查看所有网络接口
ip link show

# 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

# 修改接口属性
ip link set eth0 mtu 9000
ip link set eth0 name wan0  # 重命名接口
ip link set eth0 address 00:11:22:33:44:55  # 修改MAC
ip link set eth0 promisc on  # 启用混杂模式

2. VLAN 管理

# 创建 VLAN 接口
ip link add link eth0 name eth0.10 type vlan id 10

# 删除 VLAN
ip link delete eth0.10

# 查看 VLAN 配置
ip -d link show eth0.10

3. 绑定接口 (Bonding)

# 创建绑定接口
ip link add bond0 type bond mode 802.3ad

# 添加从属接口
ip link set eth0 master bond0
ip link set eth1 master bond0

# 查看绑定状态
cat /proc/net/bonding/bond0

二、IP 地址管理

1. 地址配置

# 添加/删除 IP 地址
ip addr add 192.168.1.100/24 dev eth0
ip addr del 192.168.1.100/24 dev eth0

# 查看地址配置
ip addr show  # 所有接口
ip -4 addr    # 仅IPv4
ip -6 addr    # 仅IPv6

# 刷新地址
ip addr flush dev eth0

2. 特殊地址

# 添加广播地址
ip addr add broadcast 192.168.1.255 dev eth0

# 添加任意地址
ip addr add 0.0.0.0/0 dev eth0

三、路由管理

1. 路由表操作

# 查看路由表
ip route show
ip -6 route  # IPv6路由

# 添加默认路由
ip route add default via 192.168.1.1

# 添加静态路由
ip route add 10.0.0.0/24 via 192.168.1.254

# 删除路由
ip route del 10.0.0.0/24

# 刷新路由缓存
ip route flush cache

2. 策略路由

# 添加路由表
echo "200 custom" >> /etc/iproute2/rt_tables

# 添加策略规则
ip rule add from 192.168.2.0/24 table custom

# 查看策略规则
ip rule show

四、邻居表 (ARP/NDP) 管理

1. ARP 操作

# 查看 ARP 表
ip neigh show

# 添加静态 ARP 条目
ip neigh add 192.168.1.50 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

# 删除 ARP 条目
ip neigh del 192.168.1.50 dev eth0

# 刷新 ARP 表
ip neigh flush dev eth0

2. IPv6 邻居发现

# 查看 NDP 表
ip -6 neigh show

# 管理 IPv6 邻居
ip -6 neigh add fe80::1 lladdr 00:11:22:33:44:55 dev eth0

五、网络命名空间管理

# 创建命名空间
ip netns add ns1

# 在命名空间中执行命令
ip netns exec ns1 ip link show

# 转移接口到命名空间
ip link set eth0 netns ns1

# 连接两个命名空间
ip link add veth0 type veth peer name veth1
ip link set veth1 netns ns1

六、流量控制 (QoS)

1. 队列规则管理

# 添加 HTB 队列规则
tc qdisc add dev eth0 root handle 1: htb default 10

# 添加分类
tc class add dev eth0 parent 1: classid 1:1 htb rate 100mbit ceil 100mbit
tc class add dev eth0 parent 1:1 classid 1:10 htb rate 50mbit ceil 100mbit

# 添加过滤器
tc filter add dev eth0 protocol ip parent 1:0 prio 1 u32 match ip dport 80 0xffff flowid 1:10

# 查看配置
tc qdisc show dev eth0
tc class show dev eth0
tc filter show dev eth0

2. 流量整形

# 添加 TBF 整形器
tc qdisc add dev eth0 root tbf rate 10mbit burst 32kbit latency 400ms

# 添加网络模拟
tc qdisc add dev eth0 root netem delay 100ms 10ms 25% loss 5% duplicate 1%

七、网桥管理

# 创建网桥
ip link add br0 type bridge

# 管理网桥属性
ip link set br0 type bridge stp_state 1
ip link set br0 type bridge forward_delay 1500
ip link set br0 type bridge vlan_filtering 1

# 添加端口
ip link set eth0 master br0

# VLAN 管理
bridge vlan add dev eth0 vid 10
bridge vlan add dev eth0 vid 10 pvid
bridge vlan del dev eth0 vid 10

# 查看网桥信息
bridge link show
bridge fdb show

八、隧道接口管理

# 创建 GRE 隧道
ip tunnel add gre0 mode gre remote 203.0.113.5 local 192.168.1.100 ttl 64
ip link set gre0 up
ip addr add 10.0.0.1/24 dev gre0

# 创建 VXLAN 隧道
ip link add vxlan0 type vxlan id 100 group 239.1.1.1 dev eth0 dstport 4789

九、统计与监控

# 接口统计
ip -s link show eth0
ip -s -s link show eth0  # 更详细统计

# 路由统计
ip route show table cache

# 邻居表统计
ip -s neigh show

# 实时监控
ip monitor all  # 监控所有事件
ip monitor link # 监控链路状态变化
ip monitor route # 监控路由变化

十、高级技巧

1. 批量操作

# 批量启用所有接口
ip link | awk -F: '/state/ {print $2}' | xargs -I {} ip link set {} up

# 批量添加多个IP
for i in {10..20}; do
    ip addr add 192.168.1.$i/24 dev eth0
done

2. JSON 输出

ip -j link show  # JSON格式输出
ip -j -p route   # JSON + 美化输出

3. 颜色输出

ip -c link show  # 启用彩色输出
alias ip='ip -c' # 永久启用彩色

4. 网络诊断

# 路由追踪
ip route get 8.8.8.8

# MTU 路径发现
ip route get 8.8.8.8 | grep -oP 'mtu \K\d+'

# 连接跟踪
conntrack -L

十一、常用命令对照表

传统命令iproute2 等效命令
ifconfigip addr, ip link
routeip route
arpip neigh
netstat -iip -s link
netstat -rip route
netstat -gip maddr
iptunnelip tunnel
brctlbridge

提示:iproute2 的所有配置都是临时的,重启后会丢失。要永久保存配置,需要写入网络配置文件(如 /etc/network/interfaces)或使用网络管理器(如 NetworkManager)。

掌握这些命令将使您能够高效管理任何复杂的 Linux 网络环境,从简单的家庭网络到大型数据中心架构。



























以下是 iproute2 命令大全,涵盖网络接口、IP地址、路由、隧道、ARP 管理等核心功能,基于 Linux 现代网络管理工具整理。命令需 root 权限执行,临时生效(重启失效),持久化需结合网络配置文件(如 /etc/network/interfacessystemd-networkd)。


⚙️ 一、基础命令结构

ip [OPTIONS] OBJECT { COMMAND | help }
  • OBJECTlink(接口)、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清空接口所有IPip 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 ruleip 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 showip -s link
IP地址ip addr add/delip addr flush
路由ip route add/delip route replace
ARPip neigh showip neigh add/del
隧道ip tunnel add/del
Socket统计ss -lss -tss -p

⚠️ 注意

  • 以上命令需 sudo 执行,重启后失效,持久化需编辑网络配置文件(如 NetworkManager 或 /etc/network/interfaces)。
  • 查看详细信息可加 -d(如 ip -d link show eth0),统计信息用 -s(如 ip -s -s addr)。
    完整文档见 iproute2 Wiki



























iproute2ip 命令详解

ip 命令是 Linux 网络管理的瑞士军刀,属于 iproute2 套件的核心工具,取代了传统的 ifconfigroute 等命令。它提供了统一的接口管理网络栈的各个方面,包括设备、地址、路由、邻居、隧道等。

一、基础语法结构

ip [OPTIONS] OBJECT COMMAND

常用全局选项:

  • -s:显示详细统计信息(可重复使用增加详细度)
  • -d:输出详细信息
  • -4:仅操作 IPv4
  • -6:仅操作 IPv6
  • -r:解析主机名
  • -c:彩色输出
  • -j:JSON 格式输出
  • -p:易读格式(pretty print)

主要对象(OBJECT):

对象描述替代传统命令
link网络设备管理ifconfig
addressIP地址管理ifconfig
route路由表管理route
neighARP/邻居表管理arp
rule策略路由规则管理ip rule
tunnel隧道接口管理-
maddress多播地址管理-
mroute多播路由管理-
monitor监控网络事件-

二、核心功能详解

1. ip link - 网络设备管理

功能:管理物理和虚拟网络接口

常用命令

# 显示所有网络接口
ip link show

# 显示指定接口详情
ip -s -s link show eth0

# 启用/禁用接口
ip link set eth0 up
ip link set eth0 down

# 修改接口属性
ip link set eth0 mtu 9000
ip link set eth0 name newname
ip link set eth0 address 00:11:22:33:44:55

# 创建虚拟接口
ip link add veth0 type veth peer name veth1
ip link add br0 type bridge

2. ip address - IP地址管理

功能:管理接口的IP地址

常用命令

# 显示所有接口IP地址
ip address show

# 添加/删除IP地址
ip address add 192.168.1.10/24 dev eth0
ip address del 192.168.1.10/24 dev eth0

# 添加辅助IP地址
ip address add 192.168.1.11/24 dev eth0 label eth0:1

# 清除所有地址
ip address flush dev eth0

3. ip route - 路由管理

功能:管理路由表

常用命令

# 显示路由表
ip route show

# 添加/删除默认网关
ip route add default via 192.168.1.1
ip route del default

# 添加静态路由
ip route add 10.0.0.0/24 via 192.168.1.100
ip route add 192.168.2.0/24 dev eth1

# 添加策略路由
ip route add 172.16.0.0/16 via 10.0.0.1 table 100

# 测试路由路径
ip route get 8.8.8.8

4. ip neigh - 邻居表管理

功能:管理ARP缓存和邻居发现

常用命令

# 显示ARP表
ip neigh show

# 添加静态ARP条目
ip neigh add 192.168.1.100 lladdr 00:11:22:33:44:55 dev eth0 nud permanent

# 删除ARP条目
ip neigh del 192.168.1.100 dev eth0

# 刷新ARP缓存
ip neigh flush dev eth0

5. ip rule - 策略路由

功能:管理路由策略数据库

常用命令

# 显示路由策略
ip rule show

# 添加策略路由规则
ip rule add from 192.168.2.0/24 table 100
ip rule add to 10.0.0.0/8 table 200
ip rule add fwmark 0x1 table 150

# 删除规则
ip rule del from 192.168.2.0/24

6. ip tunnel - 隧道管理

功能:创建和管理隧道接口

常用命令

# 创建GRE隧道
ip tunnel add gre0 mode gre local 10.0.0.1 remote 203.0.113.5 ttl 255

# 创建IPIP隧道
ip tunnel add ipip0 mode ipip local 10.0.0.1 remote 203.0.113.5

# 配置隧道IP
ip address add 192.168.100.1/30 dev gre0

# 显示隧道接口
ip -d tunnel show

三、高级功能与技巧

1. 虚拟网络设备管理

# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 创建MACVLAN
ip link add link eth0 name macvlan0 type macvlan mode bridge

# 创建IPVLAN
ip link add link eth0 name ipvlan0 type ipvlan mode l2

# 创建网络命名空间
ip netns add ns1

2. VRF(虚拟路由转发)管理

# 创建VRF
ip link add vrf-blue type vrf table 10

# 分配接口到VRF
ip link set dev eth0 master vrf-blue

# 在VRF中添加路由
ip route add 192.168.1.0/24 via 10.0.0.1 vrf vrf-blue

3. 多表路由管理

# 查看所有路由表
grep -E '^[0-9]' /etc/iproute2/rt_tables

# 添加自定义路由表
echo "200 custom" >> /etc/iproute2/rt_tables

# 在自定义表中添加路由
ip route add default via 192.168.100.1 table custom

4. 网络事件监控

# 实时监控网络事件
ip monitor all

# 监控路由变化
ip monitor route

# 监控链路状态变化
ip monitor link

5. 高级诊断命令

# 查看详细接口统计
ip -s -s link show eth0

# 检查路由缓存
ip route show cache

# 追踪路由决策过程
ip route get 8.8.8.8 from 10.0.0.100 iif eth0

四、实用场景示例

1. 创建VLAN接口

ip link add link eth0 name eth0.10 type vlan id 10
ip address add 192.168.10.1/24 dev eth0.10
ip link set eth0.10 up

2. 配置网桥

ip link add name br0 type bridge
ip link set eth1 master br0
ip link set eth2 master br0
ip address add 192.168.1.1/24 dev br0
ip link set br0 up

3. 策略路由配置

# 创建自定义路由表
echo "100 vpn" >> /etc/iproute2/rt_tables

# 添加路由到自定义表
ip route add default via 10.8.0.1 dev tun0 table vpn

# 添加规则:来自特定用户的流量使用VPN
ip rule add uidrange 1000-1000 table vpn

# 添加规则:特定应用的流量使用VPN
ip rule add fwmark 0x1 table vpn

4. 双WAN负载均衡

# 创建自定义路由表
echo "200 isp1" >> /etc/iproute2/rt_tables
echo "201 isp2" >> /etc/iproute2/rt_tables

# 添加默认路由到各表
ip route add default via 192.168.1.1 dev eth1 table isp1
ip route add default via 192.168.2.1 dev eth2 table isp2

# 添加策略规则
ip rule add from 192.168.1.0/24 table isp1
ip rule add from 192.168.2.0/24 table isp2

# 设置默认路由
ip route add default nexthop via 192.168.1.1 dev eth1 weight 1 \
    nexthop via 192.168.2.1 dev eth2 weight 1

5. 网络故障排查

# 查看接口错误统计
ip -s link show eth0 | grep -E 'errors|dropped'

# 检查路由
ip route get 8.8.8.8

# 检查ARP缓存
ip neigh show

# 监控实时事件
ip monitor route link neigh

五、与传统命令对比

功能iproute2 命令传统命令
查看接口信息ip link showifconfig
配置IP地址ip addr add 192.168.1.1/24 dev eth0ifconfig eth0 192.168.1.1 netmask 255.255.255.0
查看路由表ip route showroute -n
添加默认网关ip route add default via 192.168.1.1route add default gw 192.168.1.1
查看ARP缓存ip neigh showarp -n
添加策略路由ip rule add ...无直接替代
创建隧道ip tunnel add ...无直接替代

六、最佳实践

  1. 使用简洁输出

    ip -br link show  # 简洁显示接口状态
    ip -br addr show  # 简洁显示IP地址
    
  2. 批量操作

    ip -batch - <<EOF
    link set eth0 up
    addr add 192.168.1.10/24 dev eth0
    route add default via 192.168.1.1
    EOF
    
  3. JSON输出处理

    ip -j link show | jq '.[] | select(.operstate == "UP") | .ifname'
    
  4. 持久化配置

    # Debian/Ubuntu
    nano /etc/network/interfaces
    
    # RHEL/CentOS
    nano /etc/sysconfig/network-scripts/ifcfg-eth0
    
  5. 结合其他工具

    # 监控带宽使用
    iftop -i eth0
    
    # 分析网络流量
    nethogs
    
    # 测试网络连通性
    mtr 8.8.8.8
    

ip 命令的强大之处在于其统一性和灵活性,通过组合不同的对象和命令,几乎可以实现任何网络配置需求。掌握 ip 命令是成为 Linux 网络管理专家的关键一步。



























ip link 命令详解:Linux 网络接口管理手册

ip link 是 iproute2 工具集中用于管理网络接口(链路层) 的核心命令,可完全替代传统的 ifconfig。它提供更精细的接口控制,支持现代网络技术(如 VLAN、VXLAN、桥接等),是 Linux 网络配置的基础工具。


一、基础命令结构

ip link [选项] [动作] [设备] [参数]

常用动作:

  • show:显示接口信息
  • add:创建新接口
  • delete:删除接口
  • set:修改接口属性
  • help:显示帮助

常用选项:

  • -s:显示统计信息
  • -d:显示详细信息
  • -j:JSON 格式输出
  • -p:人性化显示 MAC 地址
  • -br:简化表格输出

二、接口状态管理

1. 启用/禁用接口
# 启用接口
ip link set eth0 up

# 禁用接口
ip link set eth0 down
2. 查看接口状态
# 显示所有接口
ip link show

# 显示特定接口
ip link show eth0

# 简化输出
ip -br link show
# 输出示例:
# lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
# eth0             UP             52:54:00:12:34:56 <BROADCAST,MULTICAST,UP,LOWER_UP>

三、接口属性配置

1. MAC 地址管理
# 查看MAC地址
ip -br link show eth0 | awk '{print $3}'

# 修改MAC地址
ip link set eth0 address 00:11:22:33:44:55

# 随机MAC地址
ip link set eth0 address $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//')
2. MTU 设置
# 查看MTU
ip link show eth0 | grep mtu

# 修改MTU
ip link set eth0 mtu 9000
3. 混杂模式
# 启用混杂模式
ip link set eth0 promisc on

# 禁用混杂模式
ip link set eth0 promisc off
4. 传输队列长度
# 设置发送队列长度
ip link set eth0 txqueuelen 10000

四、虚拟接口创建

1. VLAN 接口
# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 启用VLAN接口
ip link set eth0.100 up
2. VXLAN 隧道
# 创建VXLAN接口
ip link add vxlan0 type vxlan id 42 dstport 4789 remote 203.0.113.1 local 192.168.1.100
3. 网桥接口
# 创建网桥
ip link add br0 type bridge

# 添加端口到网桥
ip link set eth0 master br0
4. 绑定接口(链路聚合)
# 创建bond接口
ip link add bond0 type bond mode 802.3ad

# 添加从接口
ip link set eth0 master bond0
ip link set eth1 master bond0
5. MACVLAN
# 创建MACVLAN接口
ip link add macvlan0 link eth0 type macvlan mode bridge
6. IPVLAN
# 创建IPVLAN接口
ip link add ipvlan0 link eth0 type ipvlan mode l2

五、接口高级操作

1. 接口重命名
# 临时重命名
ip link set eth0 name wan0

# 永久重命名(需修改udev规则)
echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="wan0"' > /etc/udev/rules.d/10-rename.rules
2. 别名接口
# 添加IP别名
ip addr add 192.168.1.100/24 dev eth0 label eth0:0
3. ARP 控制
# 禁用ARP
ip link set eth0 arp off

# 启用ARP
ip link set eth0 arp on
4. 组播控制
# 启用组播
ip link set eth0 multicast on

# 禁用组播
ip link set eth0 multicast off

六、状态监控与诊断

1. 详细统计信息
ip -s link show eth0

输出示例:

2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff
    RX: bytes  packets  errors  dropped missed  mcast   
    1256895320 1845321  0       0       0       83210
    TX: bytes  packets  errors  dropped carrier collsns 
    783216540  1024589  0       0       0       0
2. 关键统计指标
指标含义问题指示
errors错误包数量物理层问题
dropped丢弃包数量缓冲区满/策略丢弃
missed错过包数量处理能力不足
overruns溢出次数系统负载过高
carrier载波错误物理连接问题
collisions冲突次数半双工网络问题
3. 实时监控
# 监控链路状态变化
ip monitor link dev eth0

# 监控所有接口事件
ip monitor all

七、网络命名空间操作

1. 创建命名空间
ip netns add ns1
2. 在命名空间中操作接口
# 查看命名空间接口
ip -n ns1 link show

# 在命名空间中启用接口
ip -n ns1 link set lo up
3. 移动接口到命名空间
# 移动接口到命名空间
ip link set veth1 netns ns1

# 在命名空间中重命名
ip -n ns1 link set veth1 name eth0

八、高级特性

1. 接口组管理
# 创建接口组
ip link add link eth0 name eth0-group type group

# 添加接口到组
ip link set eth0 group eth0-group
2. XDP 程序附加
# 附加XDP程序
ip link set eth0 xdp obj xdp_prog.o
3. 硬件卸载配置
# 启用VLAN硬件卸载
ethtool -K eth0 tx-vlan-offload on

# 检查卸载状态
ip -d link show eth0 | grep vlan_hw
4. 端口镜像
# 创建镜像端口
ip link add name mirror0 type bridge

# 配置镜像
tc qdisc add dev eth0 ingress
tc filter add dev eth0 parent ffff: matchall action mirred egress mirror dev mirror0

九、故障排查指南

1. 接口不工作
# 检查物理状态
ip link show eth0 | grep state

# 检查驱动信息
ip -d link show eth0 | grep driver

# 检查错误统计
ip -s link show eth0
2. VLAN 配置问题
# 检查VLAN配置
bridge vlan show

# 检查VLAN硬件卸载
ethtool -k eth0 | grep vlan
3. 性能问题诊断
# 查看接口统计
ip -s -s link show eth0

# 检查中断平衡
cat /proc/interrupts | grep eth0

# 检查队列长度
ip link show eth0 | grep qlen

十、与传统 ifconfig 对比

功能ifconfigip link
显示接口ifconfigip link show
启用接口ifconfig eth0 upip link set eth0 up
禁用接口ifconfig eth0 downip link set eth0 down
修改 MACifconfig eth0 hw ether xx:xx:xxip link set eth0 address xx:xx:xx
设置 MTUifconfig eth0 mtu 9000ip link set eth0 mtu 9000
VLAN 接口不支持ip link add ... type vlan
网桥接口不支持ip link add ... type bridge
绑定接口需额外工具ip link add ... type bond
命名空间支持不支持原生支持
接口统计有限信息详细统计 (ip -s link)
JSON 输出不支持支持 (ip -j link)

十一、实用命令速查

1. 创建 VLAN 接口
ip link add link eth0 name eth0.100 type vlan id 100
ip addr add 192.168.100.1/24 dev eth0.100
ip link set eth0.100 up
2. 创建网桥
ip link add br0 type bridge
ip link set eth0 master br0
ip link set eth1 master br0
ip addr add 10.0.0.1/24 dev br0
ip link set br0 up
3. 创建 VXLAN
ip link add vxlan42 type vxlan id 42 dstport 4789 group 239.1.2.3 ttl 10
ip addr add 10.42.0.1/24 dev vxlan42
ip link set vxlan42 up
4. 接口批量配置
#!/bin/bash
for intf in eth0 eth1 eth2; do
  ip link set $intf mtu 9000
  ip link set $intf txqueuelen 10000
  ip link set $intf up
done
5. 监控接口状态变化
ip monitor link | awk '/state UP/ {print "Interface", $2, "activated at", strftime("%F %T")}'

ip link 提供了对 Linux 网络接口的全面控制,从基础状态管理到高级虚拟化功能。掌握其用法是 Linux 系统管理员、网络工程师和 DevOps 专业人员的必备技能,特别在云环境、容器网络和 SDN 场景中尤为重要。



























ip link add 命令详解:Linux 虚拟接口创建指南

ip link add 是 iproute2 工具集中用于创建虚拟网络接口的核心命令,可创建各种类型的虚拟接口(VLAN、VXLAN、桥接、绑定等)。这些接口在现代网络架构中至关重要,特别是在虚拟化、容器化和 SDN 环境中。


一、命令结构

ip link add [选项] [设备名] type [类型] [类型参数]

核心参数:

  • name NAME:指定接口名称(必需)
  • type TYPE:指定接口类型(必需)
  • link DEVICE:指定父接口(用于 VLAN、MACVLAN 等)
  • address LLADDRESS:设置 MAC 地址
  • mtu N:设置 MTU 值
  • txqueuelen N:设置传输队列长度
  • netns PID|NAME:直接在命名空间中创建

二、支持的接口类型及参数

1. VLAN 接口 (type vlan)
ip link add link <父接口> name <名称> type vlan id <VLAN ID> [参数]

参数:

  • id N:VLAN ID (1-4094)
  • protocol 802.1Q|802.1ad:VLAN 协议
  • reorder_hdr on|off:是否重排序包头
  • gvrp on|off:GARP VLAN 注册协议
  • mvrp on|off:多 VLAN 注册协议

示例:

# 创建标准802.1Q VLAN
ip link add link eth0 name eth0.100 type vlan id 100

# 创建Q-in-Q VLAN
ip link add link eth0 name eth0.200 type vlan id 200 protocol 802.1ad
2. VXLAN 接口 (type vxlan)
ip link add name <名称> type vxlan id <VNI> [参数]

参数:

  • id N:VXLAN 网络标识符 (VNI)
  • dstport PORT:目标 UDP 端口(默认 4789)
  • local ADDR:本地隧道端点 IP
  • remote ADDR:远程隧道端点 IP
  • group ADDR:组播组地址
  • ttl N:生存时间
  • dev DEVICE:绑定到物理接口
  • external:外部模式(需手动配置)
  • learning on|off:MAC 学习开关

示例:

# 创建单播VXLAN
ip link add name vxlan42 type vxlan id 42 dstport 4789 local 192.168.1.100 remote 203.0.113.1

# 创建组播VXLAN
ip link add name vxlan100 type vxlan id 100 group 239.1.2.3 dev eth0
3. 网桥接口 (type bridge)
ip link add name <名称> type bridge [参数]

参数:

  • stp_state 0|1:生成树协议开关
  • priority N:网桥优先级 (0-65535)
  • hello_time N:HELLO 包间隔(厘秒)
  • forward_delay N:转发延迟(厘秒)
  • ageing_time N:MAC 老化时间(秒)
  • vlan_filtering 0|1:VLAN 过滤开关

示例:

# 创建基础网桥
ip link add name br0 type bridge

# 创建带STP的网桥
ip link add name br-stp type bridge stp_state 1 forward_delay 1500
4. 绑定接口 (type bond)
ip link add name <名称> type bond [参数]

参数:

  • mode balance-rr|active-backup|balance-xor|broadcast|802.3ad|balance-tlb|balance-alb:绑定模式
  • miimon N:链路监控间隔(毫秒)
  • lacp_rate slow|fast:LACP 速率
  • xmit_hash_policy layer2|layer2+3|layer3+4:传输哈希策略
  • primary DEVICE:主接口(active-backup 模式)

示例:

# 创建LACP聚合
ip link add name bond0 type bond mode 802.3ad lacp_rate fast

# 创建主备绑定
ip link add name bond1 type bond mode active-backup primary eth0
5. MACVLAN/IPVLAN (type macvlan|ipvlan)
ip link add link <父接口> name <名称> type [macvlan|ipvlan] [参数]

参数:

  • mode private|vepa|bridge|passthru|source (MACVLAN)
  • mode l2|l3|l3s (IPVLAN)
  • flags N:控制标志

示例:

# 创建MACVLAN(桥接模式)
ip link add link eth0 name macvlan0 type macvlan mode bridge

# 创建IPVLAN(L3模式)
ip link add link eth0 name ipvlan0 type ipvlan mode l3
6. VETH 对 (type veth)
ip link add name <名称1> type veth peer name <名称2> [参数]

参数:

  • peer name NAME:指定对端接口名
  • address LLADDR:设置MAC地址
  • netns NAME:直接放入命名空间

示例:

# 创建标准veth对
ip link add name veth0 type veth peer name veth1

# 创建veth对并放入命名空间
ip link add name veth-host type veth peer name veth-guest netns container1
7. GRE/IPIP/SIT 隧道 (type gre|ipip|sit)
ip link add name <名称> type gre|ipip|sit [参数]

参数:

  • remote ADDR:远程隧道端点
  • local ADDR:本地隧道端点
  • ttl N:生存时间
  • dev DEVICE:绑定物理接口
  • key N:隧道密钥

示例:

# 创建GRE隧道
ip link add name gre1 type gre remote 203.0.113.1 local 192.168.1.100 ttl 255

# 创建IPIP隧道
ip link add name ipip0 type ipip remote 203.0.113.1 local 192.168.1.100

三、高级创建选项

1. 自定义 MAC 地址
ip link add name vlan10 link eth0 type vlan id 10 address 00:11:22:33:44:55
2. 设置 MTU
ip link add name vxlan100 type vxlan id 100 dstport 4789 mtu 9000
3. 直接在命名空间创建
ip netns add ns1
ip link add name veth-ns type veth peer name veth-host netns ns1
4. 创建接口并立即启用
ip link add name br0 type bridge && ip link set br0 up

四、完整创建流程示例

1. 创建 VLAN 接口
# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 配置IP地址
ip addr add 192.168.100.1/24 dev eth0.100

# 启用接口
ip link set eth0.100 up
2. 创建网桥并添加端口
# 创建网桥
ip link add name br0 type bridge

# 添加物理接口
ip link set eth0 master br0
ip link set eth1 master br0

# 配置IP并启用
ip addr add 10.0.0.1/24 dev br0
ip link set br0 up
3. 创建 VXLAN over VLAN
# 创建VLAN接口
ip link add link eth0 name eth0.42 type vlan id 42

# 创建VXLAN接口
ip link add name vxlan42 type vxlan id 42 dstport 4789 dev eth0.42 local 192.168.1.100

# 启用接口
ip link set eth0.42 up
ip link set vxlan42 up
4. 创建容器网络
# 创建命名空间
ip netns add container1

# 创建veth对
ip link add veth-host type veth peer name veth-guest netns container1

# 配置主机端
ip addr add 10.1.1.1/24 dev veth-host
ip link set veth-host up

# 配置容器端
ip netns exec container1 ip addr add 10.1.1.2/24 dev veth-guest
ip netns exec container1 ip link set veth-guest up
ip netns exec container1 ip route add default via 10.1.1.1

五、注意事项

  1. 权限要求:需要 root 权限
  2. 命名冲突:接口名必须唯一
  3. 依赖关系:某些接口需要父接口存在
  4. 临时性:创建的接口重启后消失
  5. 持久化:需通过配置文件持久化
  6. 内核支持:某些接口类型需要内核模块
    # 检查内核支持
    ls /sys/class/net
    modprobe <模块名>  # 如 bonding, 8021q, bridge
    

六、接口持久化方法

1. Debian/Ubuntu (/etc/network/interfaces)
# VLAN接口
auto eth0.100
iface eth0.100 inet static
    address 192.168.100.1
    netmask 255.255.255.0
    vlan-raw-device eth0
2. RHEL/CentOS (/etc/sysconfig/network-scripts/)
# ifcfg-br0
DEVICE=br0
TYPE=Bridge
IPADDR=10.0.0.1
NETMASK=255.255.255.0
ONBOOT=yes

# ifcfg-eth0
DEVICE=eth0
ONBOOT=yes
BRIDGE=br0
3. systemd-networkd (/etc/systemd/network/)
# 10-br0.netdev
[NetDev]
Name=br0
Kind=bridge

# 10-br0.network
[Match]
Name=br0

[Network]
Address=10.0.0.1/24
4. NetworkManager (nmcli)
# 创建网桥
nmcli con add type bridge ifname br0 con-name br0
nmcli con modify br0 ipv4.addresses 10.0.0.1/24

# 添加端口
nmcli con add type bridge-slave ifname eth0 master br0

七、故障排查

1. 接口创建失败
# 检查内核支持
dmesg | grep -i vxlan  # 或 bridge, bonding 等

# 检查模块加载
lsmod | grep 8021q

# 尝试手动加载模块
modprobe 8021q
2. VLAN 接口不工作
# 检查父接口状态
ip link show eth0

# 检查VLAN过滤
bridge vlan show
3. VXLAN 隧道不通
# 检查防火墙
iptables -L -v -n

# 检查路由
ip route show table all

# 检查组播
bridge mdb show
4. 绑定接口不聚合
# 检查链路状态
cat /proc/net/bonding/bond0

# 检查交换机配置
# 确保LACP正确配置

八、常用命令组合速查

# 1. 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 2. 创建带STP的网桥
ip link add name br0 type bridge stp_state 1

# 3. 创建LACP绑定
ip link add name bond0 type bond mode 802.3ad

# 4. 创建VXLAN隧道
ip link add name vxlan42 type vxlan id 42 dstport 4789 remote 203.0.113.1

# 5. 创建容器veth对
ip link add veth-host type veth peer name veth-guest netns container1

# 6. 创建MACVLAN接口
ip link add link eth0 name macvlan0 type macvlan mode bridge

# 7. 创建GRE隧道
ip link add name gre1 type gre remote 203.0.113.1 local 192.168.1.100

# 8. 创建IPIP隧道
ip link add name ipip0 type ipip remote 203.0.113.1 local 192.168.1.100

# 9. 创建带自定义MAC的接口
ip link add name custom-mac link eth0 type vlan id 200 address 00:11:22:33:44:55

# 10. 创建巨型帧接口
ip link add name jumbo-br type bridge mtu 9000

ip link add 是构建复杂网络架构的基础工具,掌握其用法对于云平台工程师、网络管理员和 DevOps 专业人员至关重要。通过组合不同类型的虚拟接口,可以实现高度灵活的网络设计,满足从传统数据中心到现代云原生环境的各种需求。



























ip link set 命令详解:Linux 网络接口配置指南

ip link set 是 iproute2 工具集中用于修改网络接口属性的核心命令,可替代传统的 ifconfig 配置方式。它提供了对接口状态的精细控制,是网络管理员日常操作中最常用的命令之一。


一、命令结构

ip link set [选项] [设备] [参数]

常用选项:

  • dev NAME:指定操作设备(可省略)
  • up/down:启用/禁用接口
  • name NEWNAME:重命名接口
  • address LLADDRESS:设置 MAC 地址
  • mtu N:设置 MTU 值
  • txqueuelen N:设置传输队列长度
  • master DEVICE:设置接口主设备(如桥接)
  • nomaster:解除主设备关系
  • netns PID|NAME:移动接口到网络命名空间
  • alias NAME:设置接口别名
  • multicast on/off:启用/禁用组播
  • promisc on/off:启用/禁用混杂模式
  • dynamic on/off:启用/禁用动态标志
  • arp on/off:启用/禁用 ARP

二、核心功能详解

1. 接口状态管理
# 启用接口
ip link set eth0 up

# 禁用接口
ip link set eth0 down

# 批量启用所有接口
for iface in $(ip -o link show | awk -F': ' '{print $2}'); do
  ip link set $iface up
done
2. MAC 地址管理
# 设置静态MAC地址
ip link set eth0 address 00:11:22:33:44:55

# 随机生成MAC地址
ip link set eth0 address $(openssl rand -hex 6 | sed 's/\(..\)/\1:/g; s/:$//')

# 恢复出厂MAC地址
ip link set eth0 address $(ethtool -P eth0 | awk '{print $3}')
3. MTU 设置
# 设置标准以太网MTU
ip link set eth0 mtu 1500

# 设置巨型帧(Jumbo Frames)
ip link set eth0 mtu 9000

# 设置PPPoE MTU(考虑8字节开销)
ip link set ppp0 mtu 1492
4. 队列长度调整
# 增大传输队列
ip link set eth0 txqueuelen 10000

# 查看当前队列长度
ip link show eth0 | grep qlen

三、高级接口操作

1. 桥接管理
# 添加接口到网桥
ip link set eth0 master br0

# 从网桥移除接口
ip link set eth0 nomaster

# 设置桥接端口属性
ip link set dev eth0 type bridge_slave priority 32 cost 100
2. 绑定接口(链路聚合)
# 创建绑定接口
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 type bond mode balance-rr
3. 网络命名空间操作
# 创建命名空间
ip netns add ns1

# 移动接口到命名空间
ip link set veth1 netns ns1

# 在命名空间中重命名
ip netns exec ns1 ip link set veth1 name eth0
4. VLAN 接口配置
# 创建VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100

# 设置VLAN标志
ip link set eth0.100 type vlan reorder_hdr off

四、接口特性控制

1. ARP 控制
# 禁用ARP
ip link set eth0 arp off

# 启用ARP
ip link set eth0 arp on
2. 组播控制
# 启用组播
ip link set eth0 multicast on

# 禁用组播
ip link set eth0 multicast off
3. 混杂模式
# 启用混杂模式(抓包必备)
ip link set eth0 promisc on

# 禁用混杂模式
ip link set eth0 promisc off
4. 动态标志
# 标记接口为动态创建
ip link set eth0 dynamic on

# 移除动态标志
ip link set eth0 dynamic off

五、接口重命名与别名

1. 重命名接口
# 临时重命名
ip link set eth0 name wan0

# 永久重命名(需配合udev规则)
echo 'SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="xx:xx:xx:xx:xx:xx", NAME="wan0"' > /etc/udev/rules.d/10-rename.rules
2. 设置别名
# 设置IP别名(传统方式)
ip addr add 192.168.1.100/24 dev eth0 label eth0:backup

# 设置接口别名(新方式)
ip link set eth0 alias "Primary WAN Interface"

六、虚拟接口管理

1. 创建 VXLAN 接口
ip link add vxlan42 type vxlan id 42 dstport 4789 remote 203.0.113.1
ip link set vxlan42 up
2. 创建 MACVLAN
ip link add macvlan0 link eth0 type macvlan mode bridge
ip link set macvlan0 up
3. 创建 IPVLAN
ip link add ipvlan0 link eth0 type ipvlan mode l2
ip link set ipvlan0 up
4. 创建 GRE 隧道
ip link add gre1 type gre remote 203.0.113.1 local 192.168.1.100 ttl 255
ip link set gre1 up

七、高级应用场景

1. 网络故障转移
# 主接口故障时自动切换到备份
ip link set eth0 down && ip link set eth1 up
2. 容器网络配置
# 创建veth对
ip link add veth0 type veth peer name veth1

# 将veth1放入容器命名空间
ip link set veth1 netns mycontainer

# 在容器内配置接口
ip netns exec mycontainer ip link set veth1 name eth0
ip netns exec mycontainer ip link set eth0 up
3. 接口监控脚本
#!/bin/bash
# 监控接口状态变化
ip monitor link | while read -r line; do
  if [[ $line =~ "state UP" ]]; then
    echo "[$(date)] Interface $(echo $line | awk '{print $2}') activated"
  elif [[ $line =~ "state DOWN" ]]; then
    echo "[$(date)] Interface $(echo $line | awk '{print $2}') deactivated"
  fi
done
4. 安全加固
# 禁用未使用接口
for iface in $(ip -o link show | awk -F': ' '!/lo|eth0|wlan0/ {print $2}'); do
  ip link set $iface down
  ip link set $iface arp off
  ip link set $iface multicast off
  ip link set $iface promisc off
done

八、注意事项

  1. 权限要求:大多数操作需要 root 权限
  2. 临时性修改:重启后失效(需持久化配置)
  3. 顺序依赖:某些操作有顺序要求(如先创建父接口)
  4. 硬件限制:MTU 等设置受网卡硬件限制
  5. 命名空间隔离:移动接口到命名空间会断开当前连接

九、与传统 ifconfig 对比

功能ifconfigip link set
启用接口ifconfig eth0 upip link set eth0 up
禁用接口ifconfig eth0 downip link set eth0 down
修改 MACifconfig eth0 hw ether xx:xx:xxip link set eth0 address xx:xx:xx
设置 MTUifconfig eth0 mtu 9000ip link set eth0 mtu 9000
混杂模式ifconfig eth0 promiscip link set eth0 promisc on
重命名接口不支持ip link set eth0 name wan0
VLAN 操作不支持完整支持
命名空间操作不支持原生支持
桥接管理有限支持完整支持

十、实用命令速查

# 1. 启用巨型帧
ip link set eth0 mtu 9000

# 2. 创建并启用VLAN接口
ip link add link eth0 name eth0.100 type vlan id 100
ip link set eth0.100 up

# 3. 移动接口到命名空间
ip netns add ns1
ip link set veth1 netns ns1

# 4. 设置接口为桥接端口
ip link set eth0 master br0

# 5. 禁用ARP和组播
ip link set eth0 arp off multicast off

# 6. 批量配置接口
for iface in eth{1..4}; do 
  ip link set $iface mtu 1500 txqueuelen 1000 up
done

# 7. 恢复默认MAC
ip link set eth0 address $(ethtool -P eth0 | awk '{print $3}')

# 8. 监控接口状态变化
ip monitor link dev eth0

ip link set 提供了对 Linux 网络接口的精细控制,是现代网络配置的基础工具。掌握其用法对于系统管理员、网络工程师和 DevOps 专业人员至关重要,特别是在云环境、容器网络和 SDN 场景中。



























Linux的 iproute2 配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250713

Linux的NetworkManger的nmcli配置网桥(bridge) 笔记250712

Linux的systemd-networkd配置:以太网(Ethernet)、绑定(Bond)、虚拟局域网(VLAN)、网桥(Bridge)笔记250712

Linux的NetworkManager的nmcli con add type vlan中的: ifname , dev ,vlan.parent, id,vlan.id

Linux的NetworkManager的nmcli con add type vlan中, iframedev 的区别

Linux的NetworkManager的nmcli connection add 笔记250712

Linux的NetworkManager的nmcli配置网络网卡(ethernet),网桥(bridge),绑定(bond),虚拟网络(vlan) 笔记250711

NetworkManager配置网桥(bridge)虚拟网络(vlan) 笔记250711

Netplan 中 bridges、bonds、ethernets、vlans 之间的关系 笔记250711

Linux创建网桥Bridge的方法有哪些? 笔记250710

用Netplan配置网桥bridge笔记250711

Netplan 配置网桥(Bridge)的模板笔记250711