ip
是 Linux 系统中用于管理网络配置的核心工具,支持路由表、网络接口、ARP 表、策略路由、隧道等操作。其功能覆盖网络层(IPv4/IPv6)、链路层(如 VLAN、桥接)、命名空间(NetNS)及 TCP/IP 协议栈的高级配置。
用法
ip [选项] OBJECT { COMMAND | help }
ip [ -force ] -batch filename
核心对象(OBJECT)
对象 | 功能 |
---|---|
link | 管理网络接口(如启用/禁用、设置 MTU、查看状态)。 |
address | 管理 IPv4/IPv6 地址(如添加/删除 IP、查看地址分配)。 |
route | 管理路由表(如添加/删除路由、查看路由规则)。 |
neigh | 管理 ARP(IPv4)或邻居发现(IPv6)缓存表。 |
rule | 管理策略路由规则(多路由表切换)。 |
netns | 管理网络命名空间(创建、删除、切换)。 |
tunnel | 管理 IP 隧道(如 GRE、VXLAN、IP-in-IP)。 |
mroute | 管理组播路由缓存。 |
xfrm | 管理 IPSec 安全策略(如加密、认证)。 |
monitor | 实时监听网络状态变化(如路由、地址、接口事件)。 |
常用选项(OPTIONS)
1. 地址族与协议
-4
:指定 IPv4(等价-family inet
)。-6
:指定 IPv6(等价-family inet6
)。-0
:指定链路层(-family link
),如 MAC 地址操作。-B
:指定桥接(-family bridge
)。-M
:指定 MPLS(-family mpls
)。
2. 输出控制
-h, --human-readable
:以易读单位(如 KB/MB)显示统计信息。-s, --statistics
:显示统计信息(多次使用增加详细度)。-d, --details
:显示更多详细信息。-o, --oneline
:每条记录占一行(换行符替换为\
)。-r, --resolve
:解析 DNS 名称而非显示 IP。-c, --color
:启用带颜色的输出。
3. 批量操作
-b, --batch <filename>
:从文件或标准输入执行批量命令。-force
:批量模式下忽略错误继续执行。
4. 网络命名空间
-n, --netns <NAME>
:切换到指定网络命名空间(无需ip netns exec
)。
5. 其他
-l, --loops <COUNT>
:设置地址刷新最大循环次数(默认 10)。-t, --timestamp
:监控模式下显示时间戳。-rc, --rcvbuf <SIZE>
:设置 netlink 套接字接收缓冲区大小(默认 1MB)。
常见命令示例
1. 网络接口管理(ip link
)
- 启用/禁用接口:
ip link set eth0 up # 启用 eth0 ip link set eth0 down # 禁用 eth0
- 查看接口状态:
ip link show # 查看所有接口 ip link show eth0 # 查看 eth0 详细状态
2. IP 地址管理(ip addr
)
- 添加/删除 IP 地址:
ip addr add 192.168.1.100/24 dev eth0 # 添加 IPv4 地址 ip addr del 192.168.1.100/24 dev eth0 # 删除 IPv4 地址
- 查看地址分配:
ip addr show # 显示所有接口的 IP 地址 ip -6 addr show # 仅显示 IPv6 地址
3. 路由表管理(ip route
)
- 添加/删除路由:
ip route add 192.168.2.0/24 via 192.168.1.1 dev eth0 # 添加静态路由 ip route del 192.168.2.0/24 # 删除静态路由
- 查看路由表:
ip route show # 显示默认路由表 ip route show table 10 # 显示指定路由表(ID=10)
4. 策略路由(ip rule
)
- 添加/删除规则:
ip rule add from 192.168.1.0/24 table 100 # 来自 192.168.1.0/24 的流量使用路由表 100 ip rule del from 192.168.1.0/24 # 删除规则
- 查看规则:
ip rule show
5. ARP/邻居缓存(ip neigh
)
- 查看 ARP 表:
ip neigh show # 显示 IPv4 ARP 表 ip -6 neigh show # 显示 IPv6 邻居缓存
- 手动添加/删除 ARP 条目:
ip neigh add 192.168.1.1 lladdr 00:11:22:33:44:55 dev eth0 ip neigh del 192.168.1.1 dev eth0
6. 网络命名空间(ip netns
)
- 创建/删除命名空间:
ip netns add ns1 # 创建命名空间 ns1 ip netns delete ns1 # 删除命名空间 ns1
- 在命名空间中执行命令:
ip netns exec ns1 ip link show # 查看 ns1 中的网络接口
7. 隧道管理(ip tunnel
)
- 创建 GRE 隧道:
ip tunnel add gre1 mode gre remote 192.168.10.1 local 192.168.1.100 ttl 255 ip link set gre1 up ip addr add 10.0.0.1/24 dev gre1
8. 监控网络事件(ip monitor
)
- 实时监控路由/地址/接口变化:
ip monitor all # 监控所有事件 ip -6 monitor route # 仅监控 IPv6 路由变化
注意事项
- 权限要求:大多数操作需要
root
权限(使用sudo
)。 - IPv4/IPv6 区分:通过
-4
或-6
明确指定协议版本。 - 批量脚本安全:使用
-b
批量模式时,建议先测试单条命令,避免误操作。 - 网络命名空间:需确保内核支持命名空间(Linux 3.0+)。
- 路由表持久化:
ip
命令修改的路由在重启后失效,需配合配置文件(如/etc/network/interfaces
)。 - 性能监控:
ip -s link show
可查看接口流量统计(收发包数、错误计数)。
退出状态
- 0:命令成功。
- 1:语法错误。
- 2:内核返回错误(如无效参数、权限不足)。