2. ip 命令

ip 命令是 Linux 系统中功能强大的网络配置工具,用于替代传统的 ifconfig、route 等命令。它能够管理网络接口、IP 地址、路由表、ARP 缓存、隧道等网络相关功能。

作用

  1. 管理网络接口(查看、启用/禁用、配置参数)。
  2. 配置 IP 地址(IPv4/IPv6)。
  3. 管理路由表(添加/删除路由、策略路由)。
  4. 管理邻居表(ARP/NDP)。
  5. 管理隧道、VLAN、VPN 等虚拟设备。

命令个格式

ip [选项] [操作对象] 子命令

常用操作对象

操作对象
说明
addressaddra
管理 IP 地址
link
管理网络接口(如网卡状态)
route
管理路由表
neigh
管理邻居表(ARP)
tunnel
配置隧道
maddr
管理多播地址

如:

查看本机的IP地址: ip a

weimz@mzstudio:~$ ip a # 或命令全称:ip address show
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 00:0c:29:78:2a:e1 brd ff:ff:ff:ff:ff:ff
    inet 192.168.33.163/24 brd 192.168.33.255 scope global dynamic noprefixroute ens33
       valid_lft 1373sec preferred_lft 1373sec
    inet6 fe80::20c:29ff:fe78:2ae1/64 scope link noprefixroute 
       valid_lft forever preferred_lft forever

查看本机的IP地址(简洁显示 IP 信息):ip -br address

weimz@mzstudio:~$ ip -br address
lo               UNKNOWN        127.0.0.1/8 ::1/128 
ens33            UP             192.168.33.163/24 fe80::20c:29ff:fe78:2ae1/64 

常用选项

操作对象
说明
-br[ief]
简洁显示(默认详细显示)
-4
指定 IPv4
-6
指定 IPv6
-s
显示详细统计信息(如 ip -s link)
-c
彩色输出

IP 地址管理(ip address)

1. 修改 IP 地址

如:

sudo ip addr change 192.168.33.149/24 dev ens33

2. 删除 IP 地址

如:

sudo ip addr del 192.168.33.149/24 dev ens33

3. 添加临时 IP 地址

如:

sudo ip addr add 192.168.33.149/24 dev ens33

接口管理(ip link)

1. 查看接口状态:

weimz@mzstudio:~$ ip link show  # 或简写 ip l
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN mode DEFAULT group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
2: ens33: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP mode DEFAULT group default qlen 1000
    link/ether 00:0c:29:78:2a:e1 brd ff:ff:ff:ff:ff:ff
weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:78:2a:e1 <BROADCAST,MULTICAST,UP,LOWER_UP> 

2. 启用接口 ip link set ens33 up

weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:78:2a:e1 <BROADCAST,MULTICAST,UP,LOWER_UP> 
weimz@mzstudio:~$ sudo ip link set ens33 up
weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:78:2a:e1 <BROADCAST,MULTICAST,UP,LOWER_UP> 

3. 禁用接口 ip link set ens33 down

weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            UP             00:0c:29:78:2a:e1 <BROADCAST,MULTICAST,UP,LOWER_UP> 
weimz@mzstudio:~$ sudo ip link set ens33 down
weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            DOWN           00:0c:29:78:2a:e1 <BROADCAST,MULTICAST> 

4. 修改 MAC 地址: ip link set ens33 address 00:11:22:33:44:55

weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            DOWN           00:0c:29:78:2a:e1 <BROADCAST,MULTICAST> 
weimz@mzstudio:~$ 
weimz@mzstudio:~$ sudo ip link set ens33 address 00:11:22:33:44:55
weimz@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP> 
ens33            DOWN           00:11:22:33:44:55 <BROADCAST,MULTICAST> 

路由管理(ip route)

1. 查看路由表:ip route show

weimz@mzstudio:~$ sudo ip link set ens33 up
weimz@mzstudio:~$ ip route show  # 或简写: ip r
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 20100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 

2. 添加默认网关:ip route add

weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 
weimz@mzstudio:~$ sudo ip route add default via 192.168.33.2
weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 

加静态路由:ip route add

weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 
weimz@mzstudio:~$ ip route add 10.0.0.0/24 via 192.168.33.2
RTNETLINK answers: Operation not permitted
weimz@mzstudio:~$ sudo ip route add 10.0.0.0/24 via 192.168.33.2
weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
10.0.0.0/24 via 192.168.33.2 dev ens33 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 

删除路由:ip route del

weimz@mzstudio:~$  ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
10.0.0.0/24 via 192.168.33.2 dev ens33 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 
weimz@mzstudio:~$ sudo ip route del 10.0.0.0/24
weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 
weimz@mzstudio:~$ sudo ip route del 10.0.0.0/24
RTNETLINK answers: No such process
weimz@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.164 metric 100 
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.164 metric 100 
weimz@mzstudio:~$ 

详细用法请通过 man ip 查看 ip 命令手册。

练习:

  1. 使用 ip -br addr 命令查看你的电脑有几块网卡,对应的IP地址都是什么?
  2. 使用 ip addr 命令查看你的电脑上更多的网络信息。