ip 命令(iproute2 套件)已是 Ubuntu、CentOS、Rocky 等多数发行版的默认网络工具,逐步取代了 ifconfig。本文整理在配置静态 IP、排查网络时最常用的查看与临时配置命令。
适用:Debian/Ubuntu、RHEL/CentOS、openSUSE、Arch 等大多数发行版。 速记:
-4仅 IPv4,-6仅 IPv6,-c彩色输出,-br精简表格,-o单行输出。
1. 快速查看(最常用三条)
# 1) 所有网卡与IP(精简)
ip -br -c addr
# 2) 默认网关
ip route show default # 或简写:ip r
# 3) 指定网卡的 MAC、状态、MTU
ip -br -c link show dev <IFACE>
2. 查看 IP / 子网掩码 / MAC / 网关 / DNS
2.1 IP 地址(含 CIDR 掩码)
ip -4 addr show # 仅 IPv4
ip -6 addr show # 仅 IPv6
ip -o -4 addr show dev <IFACE> # 单行输出,便于脚本/复制
输出形如 192.168.1.23/24,其中 /24 就是子网掩码(等价 255.255.255.0)。
常见对照:/24=255.255.255.0,/16=255.255.0.0,/8=255.0.0.0,/23=255.255.254.0。
2.2 MAC 地址(物理地址)
ip link show dev <IFACE>
# 示例行:link/ether 00:1a:2b:3c:4d:5e
2.3 默认网关与路由
ip route show default # 查看默认网关
ip route # 查看完整路由表
ip route get 1.1.1.1 # 测试到某目的地址走哪条路
典型默认路由示例:default via 192.168.1.1 dev <IFACE> metric 100
2.4 DNS(延伸)
ip 不管理 DNS。常见查看方法:
cat /etc/resolv.conf
# 若使用 systemd-resolved:
resolvectl status
3. 临时配置 IP/网关(立即生效,重启后失效)
重要:以下更改仅临时生效,重启会丢失。要“永久化”,见第 8 节。
3.1 设置/删除 IPv4 地址
sudo ip addr add 192.168.1.23/24 dev <IFACE> # 添加 IP
sudo ip addr del 192.168.1.23/24 dev <IFACE> # 删除 IP
sudo ip -4 addr flush dev <IFACE> # 清空该网卡所有 IPv4
3.2 启用/禁用网卡、调整 MTU、临时改 MAC
sudo ip link set dev <IFACE> up
sudo ip link set dev <IFACE> down
sudo ip link set dev <IFACE> mtu 9000
sudo ip link set dev <IFACE> address 02:00:00:00:00:01 # 临时更改 MAC(需谨慎)
3.3 配置默认网关与静态路由
# 新设或替换默认网关(推荐 replace)
sudo ip route replace default via 192.168.1.1 dev <IFACE> metric 100
# 添加 / 删除静态路由
sudo ip route add 10.10.0.0/16 via 192.168.1.254 dev <IFACE>
sudo ip route del 10.10.0.0/16
4. 进阶观察:链路统计、邻居(ARP/NDP)、多播
ip -s link show dev <IFACE> # 收/发字节、丢包、错误等
ip neigh show # IPv4 ARP / IPv6 邻居
sudo ip neigh flush dev <IFACE>
ip maddr show dev <IFACE> # 组播地址
5. 多网口“优先级”(metric)与策略路由(入门)
多个默认路由并存时,metric 越小优先级越高:
sudo ip route replace default via 192.168.1.1 dev enp3s0 metric 100
sudo ip route add default via 10.0.0.1 dev enp4s0 metric 200
策略路由:跨网段多出口可用 ip rule + 路由表实现基于源地址的转发:
# 示例:来自 10.10.0.0/16 的流量走 table 100
sudo ip rule add from 10.10.0.0/16 table 100
sudo ip route add default via 10.10.0.1 dev enp4s0 table 100
ip rule show
ip route show table 100
6. VLAN 与桥接(常见最小示例)
# 创建 VLAN 子接口(如 VLAN ID=100)
sudo ip link add link enp3s0 name enp3s0.100 type vlan id 100
sudo ip link set enp3s0.100 up
sudo ip addr add 192.168.100.10/24 dev enp3s0.100
# 简易二层桥(bridge)
sudo ip link add name br0 type bridge
sudo ip link set br0 up
sudo ip link set enp3s0 master br0
sudo ip link set enp4s0 master br0
sudo ip addr add 192.168.1.50/24 dev br0
7. 常见问题速查
- 网卡有链路但没 IP:
ip link set dev <IFACE> up;确认是否由 DHCP 获取(NetworkManager/systemd-networkd/dhclient),或手动ip addr add …。 - 能 ping 网关但不能上网:
ip r检查默认路由;resolvectl status/cat /etc/resolv.conf检查 DNS;ip route get 1.1.1.1看实际走的路径与出口网卡。 - 多网口“互抢”出口:用
metric管理优先级(见第 5 节)。 - 临时改 MAC 后网络异常:某些交换机/安全策略会拒绝,恢复原 MAC 或在交换机端放行。
8. 永久化配置(简述指路)
ip命令仅修改内核实时状态。要“永久生效”,需写入系统网络管理器配置。
-
Ubuntu(Netplan):
/etc/netplan/*.yamlnetwork: version: 2 ethernets: enp3s0: addresses: [192.168.1.23/24] routes: - to: default via: 192.168.1.1 nameservers: addresses: [223.5.5.5, 8.8.8.8]应用:
sudo netplan apply -
NetworkManager(多数桌面发行版):使用
nmcli或图形界面编辑连接,添加“手动 IPv4/IPv6、网关、DNS”。 -
RHEL/CentOS(network-scripts/ifcfg,较老):编辑
/etc/sysconfig/network-scripts/ifcfg-<IFACE>。
9. 实用小抄(Cheat Sheet)
# 查看
ip -br -c addr # 网卡与地址(最常用)
ip -br -c link # 网卡状态/MAC/MTU
ip -4 r; ip -6 r # 路由表
ip r get 8.8.8.8 # 某目的地址走哪条路
ip -s link show dev <IFACE> # 链路统计
ip neigh # ARP/NDP 邻居
# 临时配置
sudo ip a add 192.168.1.23/24 dev <IFACE>
sudo ip a del 192.168.1.23/24 dev <IFACE>
sudo ip -4 a flush dev <IFACE>
sudo ip r replace default via 192.168.1.1 dev <IFACE> metric 100
sudo ip l set dev <IFACE> up|down
sudo ip l set dev <IFACE> mtu 9000
sudo ip l set dev <IFACE> address 02:00:00:00:00:01
# 进阶
sudo ip l add link <IFACE> name <IFACE>.100 type vlan id 100
sudo ip l add name br0 type bridge
sudo ip rule add from 10.10.0.0/16 table 100
ip 是网络排障与配置的一把“瑞士军刀”:先用 ip -br -c addr / link 看清现场,再用 ip route / ip neigh 理清路径与邻居,最后按需临时修改并在网络管理器里永久化。