Linux ip 命令:现代网络配置与路由管理利器
ip 命令是 Linux 网络管理的"新标准"。虽然很多人还在用 ifconfig,但它早已被标记为过时(deprecated),许多新版 Linux 发行版甚至默认不再安装 net-tools 包。ip 命令不仅覆盖了旧工具的全部功能,还引入了网络命名空间、策略路由、VLAN 等现代网络特性,是云原生和容器时代必备的技能。
最基础的用法
ip addr
或简写为 ip a,会列出所有网络接口的详细信息,包括 MAC 地址、IPv4/IPv6 地址、子网掩码、接口状态(UP/DOWN)等。相比 ifconfig,它会显示更多接口(包括 lo、docker0、veth 等虚拟接口)。
实际使用中,高频场景与命令组合
1. 简洁查看接口状态
ip -br addr
-br (brief) 模式以紧凑的表格形式输出,每行一个接口,只显示名称、状态和 IP 地址,非常适合快速扫一眼网络配置。
2. 管理网络接口(链路层)
查看接口列表:
ip link show
或 ip l,只显示链路层信息(MAC、MTU、状态),不显示 IP。
启用/禁用网卡:
sudo ip link set eth0 up
sudo ip link set eth0 down
修改 MTU:
sudo ip link set eth0 mtu 9000
开启巨帧(Jumbo Frame)时常用。
修改 MAC 地址:
sudo ip link set eth0 address 00:11:22:33:44:55
需要先 down 再改再 up。
3. 管理 IP 地址
添加 IP 地址:
sudo ip addr add 192.168.1.100/24 dev eth0
删除 IP 地址:
sudo ip addr del 192.168.1.100/24 dev eth0
查看指定接口的 IP:
ip addr show eth0
注意:ip addr 配置的地址在重启后会失效,永久配置需要写入网络配置文件(如 /etc/netplan/ 或 /etc/sysconfig/network-scripts/)。
4. 管理路由表
这是排查"能 ping 通但访问不了"问题的关键。
查看路由表:
ip route show
或 ip r,输出类似 default via 192.168.1.1 dev eth0,告诉你默认网关是谁。
添加静态路由:
sudo ip route add 10.0.0.0/8 via 192.168.1.254
删除路由:
sudo ip route del 10.0.0.0/8
查看特定目标的路由走向:
ip route get 8.8.8.8
这条命令非常实用,它会告诉你访问 8.8.8.8 时会走哪个网卡、哪个网关、源 IP 是什么,是排查多网卡路由问题的神器。
5. 管理 ARP 缓存
ip neigh show
查看 ARP 表(IP 到 MAC 的映射)。如果某台机器的 ARP 条目显示 INCOMPLETE 或 FAILED,说明二层通信有问题。
清除 ARP 缓存:
sudo ip neigh flush all
6. 网络命名空间(容器网络基础)
这是 ip 命令超越 ifconfig 的核心能力之一,也是理解 Docker/Kubernetes 网络模型的基础。
创建命名空间:
sudo ip netns add test_ns
在命名空间中执行命令:
sudo ip netns exec test_ns ip addr
列出所有命名空间:
ip netns list
如果不知道如何下手,可以先尝试
ip -s link show eth0
-s (statistics) 会显示网卡的收发统计信息,包括字节数、数据包数、错误数、丢包数等。如果 RX errors 或 TX dropped 持续增长,说明物理链路或驱动可能有问题。
或者,当你遇到网络不通时,按这个顺序排查:
ip -br addr # 1. IP 配了吗?状态是 UP 吗?
ip route show # 2. 默认网关配了吗?
ip route get 8.8.8.8 # 3. 路由走得通吗?
ip neigh show # 4. ARP 解析正常吗?
- 点赞
- 收藏
- 关注作者
评论(0)