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

weimingze@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:c4:a8:57 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
    inet 192.168.33.148/24 brd 192.168.33.255 scope global dynamic noprefixroute ens33
       valid_lft 1606sec preferred_lft 1606sec
    inet6 fe80::20c:29ff:fec4:a857/64 scope link
       valid_lft forever preferred_lft forever

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

weimingze@mzstudio:~$ ip -br address
lo               UNKNOWN        127.0.0.1/8 ::1/128
ens33            UP             192.168.33.148/24 fe80::20c:29ff:fec4:a857/64

常用选项

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

IP 地址管理(ip address)

1. 修改 IP 地址

weimingze@mzstudio:~$ sudo ip addr change 192.168.33.149/24 dev ens33
[sudo] password for weimingze:

2. 删除 IP 地址

weimingze@mzstudio:~$ sudo ip addr del 192.168.33.148/24 dev ens33

3. 添加临时 IP 地址

weimingze@mzstudio:~$ sudo ip addr add 192.168.33.148/24 dev ens33

接口管理(ip link)

1. 查看接口状态:

weimingze@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:c4:a8:57 brd ff:ff:ff:ff:ff:ff
    altname enp2s1
weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST,UP,LOWER_UP>

2. 启用接口 ip link set ens33 up

weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST>
weimingze@mzstudio:~$ sudo ip link set ens33 up
weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST,UP,LOWER_UP>

3. 禁用接口 ip link set ens33 down

weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST,UP,LOWER_UP>
weimingze@mzstudio:~$ sudo ip link set ens33 down
weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST>

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

weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:0c:29:c4:a8:57 <BROADCAST,MULTICAST,UP,LOWER_UP>
weimingze@mzstudio:~$
weimingze@mzstudio:~$ sudo ip link set ens33 address 00:11:22:33:44:55
weimingze@mzstudio:~$ ip -br l
lo               UNKNOWN        00:00:00:00:00:00 <LOOPBACK,UP,LOWER_UP>
ens33            UP             00:11:22:33:44:55 <BROADCAST,MULTICAST,UP,LOWER_UP>

路由管理(ip route)

1. 查看路由表:ip route show

weimingze@mzstudio:~$ ip route show  # 或简写: ip r
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100

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

weimingze@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100
weimingze@mzstudio:~$ sudo ip route add default via 192.168.33.2
weimingze@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.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100

加静态路由:ip route add

weimingze@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.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100
weimingze@mzstudio:~$ ip route add 10.0.0.0/24 via 192.168.33.2
RTNETLINK answers: Operation not permitted
weimingze@mzstudio:~$ sudo ip route add 10.0.0.0/24 via 192.168.33.2
weimingze@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.148 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.148 metric 100

删除路由:ip route del

weimingze@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.148 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.148 metric 100
weimingze@mzstudio:~$ sudo ip route del 10.0.0.0/24
weimingze@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.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100
weimingze@mzstudio:~$ sudo ip route del default via 192.168.33.2
weimingze@mzstudio:~$ ip r
default via 192.168.33.2 dev ens33 proto dhcp src 192.168.33.148 metric 100
192.168.33.0/24 dev ens33 proto kernel scope link src 192.168.33.148 metric 100

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

练习:

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