命令简介

ip 是一个用于管理和配置Linux内核网络堆栈的命令行工具。它是一个功能强大且灵活的工具,可以完成诸如配置网络接口、管理路由表、配置隧道等任务。ip 命令被设计为取代更早期的网络配置工具,如 ifconfigroute

命令格式

1
ip [ OPTIONS ] OBJECT { COMMAND | help }

其中:

  • OPTIONS:是一些可选的命令行选项
  • OBJECT: 表示要操作的对象,如 addresslinkroute
  • COMMAND: 是要执行的操作命令,如 showadddel

参数说明

对象 (OBJECT)

对象 说明 备注
address 协议地址管理 -
addrlabel 协议地址选择标签管理 -
l2tp L2TP隧道端口管理 -
link 网络设备配置 -
maddress 多播地址管理 -
monitor 监控网络状态 -
mroute 多播路由缓存条目管理 -
mrule 多播路由策略管理 -
neighbour 邻居/ARP表管理 -
netns 网络命名空间管理 -
ntable 邻居表配置 -
route 路由表条目管理 -
rule 路由策略数据库规则管理 -
tcp_metrics/tcpmetrics 管理 TCP 指标 -
token 模块化载荷编码器/解码器管理 -
tunnel IP 隧道配置 -
tuntap 管理 tun/tap 设备 -
xfrm 管理 IP 转换 -

命令 (COMMAND)

命令 说明 备注
add 添加新项目 -
change 更改现有项目的属性 -
replace 替换现有项目 -
delete 删除项目 -
show 列出对象的信息 -
flush 删除所有项目 -
save 将当前配置保存到文件 -
restore 从文件恢复配置 -
rename 重命名项目 -
help 获取帮助信息 -

命令实例

基础用法

1.显示网络接口信息

1
2
$ ip link show
$ ip link show dev eth0

2.启用/禁用网络接口

1
2
$ ip link set dev eth0 up
$ ip link set dev eth0 down

3.配置IP地址

1
2
$ ip addr add 192.168.1.100/24 dev eth0
$ ip addr del 192.168.1.100/24 dev eth0

4.显示路由表

1
$ ip route show

5.添加/删除路由

1
2
$ ip route add 10.0.0.0/24 via 192.168.1.1 dev eth0
$ ip route del 10.0.0.0/24

6.显示ARP缓存

1
$ ip neigh show

7.管理网络命名空间

1
2
3
$ ip netns add myns
$ ip netns exec myns ip link list
$ ip netns delete myns

8.配置VLAN接口

1
2
$ ip link add link eth0 name eth0.100 type vlan id 100
$ ip addr add 192.168.2.100/24 dev eth0.100

9.配置网桥接口

1
2
3
$ ip link add name br0 type bridge
$ ip link set dev eth0 master br0
$ ip addr add 192.168.1.100/24 dev br0

10.配置隧道接口

1
2
3
$ ip tunnel add tun0 mode ipip remote 10.0.0.1 local 10.0.0.2
$ ip addr add 192.168.10.1/24 dev tun0
$ ip link set dev tun0 up

扩展用法

1.配置策略路由:为来自 192.168.1.0/24 网段的流量创建一个单独的路由表 (table 10)。

1
2
$ ip rule add from 192.168.1.0/24 table 10
$ ip route add default via 192.168.1.1 dev eth0 table 10

2.配置多播路由:为源地址 192.168.1.2 的多播流量 224.0.0.1 添加多播路由条目。

1
2
$ ip mroute add 224.0.0.1 from 192.168.1.2 eth0
$ ip mroute show

3.配置ECMP (Equal Cost Multi Path):为目标网段 10.0.0.0/24 配置了两条等价的下一跳路径,实现了等价多路径路由。

1
$ ip route add 10.0.0.0/24 nexthop via 192.168.1.1 dev eth0 nexthop via 192.168.1.2 dev eth1

高级用法

1.网络命名空间

网络命名空间是一种Linux内核功能,它允许在单个系统上创建多个独立的网络堆栈实例。这对于构建虚拟机、容器或网络模拟环境非常有用。

1
2
3
4
5
6
7
8
9
# 创建网络命名空间
$ ip netns add myns

# 执行命名空间中的命令
$ ip netns exec myns ip link list

# 在命名空间中配置网络接口
$ ip netns exec myns ip addr add 10.0.0.1/24 dev eth0
$ ip netns exec myns ip link set dev eth0 up

2.网络策略路由

网络策略路由允许根据特定条件(如源地址、目标地址等)选择不同的路由表。这种技术可用于实现各种高级路由场景,如基于源地址的路由、多宿主主机等。

1
2
3
4
5
6
7
8
# 创建新的路由表
$ ip route add table 10

# 为特定源地址创建新的路由规则
$ ip rule add from 192.168.1.0/24 table 10

# 在新的路由表中添加路由条目
$ ip route add default via 10.0.0.1 table 10

3.隧道配置

ip 命令可以用于配置各种类型的隧道接口,如 GRE、IPIP、SIT 等。隧道接口可用于连接不同的网络,或实现一些特殊的网络功能。

1
2
3
4
5
6
7
8
# 创建 GRE 隧道
$ ip tunnel add gre1 mode gre remote 10.0.0.1 local 10.0.0.2 dev eth0

# 配置隧道接口地址
$ ip addr add 192.168.10.1/24 dev gre1

# 启用隧道接口
$ ip link set dev gre1 up

以上就是关于 ip 命令的详细介绍和使用示例,希望对你有所帮助。如果还有任何疑问或需要进一步的帮助,欢迎随时提出。