第 7 章 · 01 看自己:`ip`、`ifconfig`


文档摘要

第 7 章 · 01 看自己: 、 本节摘要:本章按「自底向上」的方法论排查网络问题——先看本机(网卡、IP、端口),再测可达(ping、curl),最后抓包(tcpdump)。本节是第一层:看本机的网络配置。 是现代 Linux 的网络配置命令(属于 iproute2 包),已经取代了老牌的 (net-tools 包); 看 IP 地址、 看路由表、 看链路状态。本节要讲清这三者的用法,以及为什么新系统都改用 了——同时帮你认读那些看起来古怪的网卡名( 、 、 )。 内容来源:原项目「Linux 命令大全」 、 ,精选并套用体系化模板。 学习目标 阅读完本节,你应当能够: 用 (或 )查看本机所有网卡的 IP 地址。 用 查看路由表,找到默认网关。 用 查看网卡链路状态(up/down)。

第 7 章 · 01 看自己:ipifconfig

本节摘要:本章按「自底向上」的方法论排查网络问题——先看本机(网卡、IP、端口),再测可达(ping、curl),最后抓包(tcpdump)。本节是第一层:看本机的网络配置。ip 是现代 Linux 的网络配置命令(属于 iproute2 包),已经取代了老牌的 ifconfig(net-tools 包);ip addr 看 IP 地址、ip route 看路由表、ip link 看链路状态。本节要讲清这三者的用法,以及为什么新系统都改用 ip 了——同时帮你认读那些看起来古怪的网卡名(ens33eth0wlan0)。

内容来源:原项目「Linux 命令大全」command/ip.mdcommand/ifconfig.md,精选并套用体系化模板。

学习目标

阅读完本节,你应当能够:

  1. ip addr(或 ip a)查看本机所有网卡的 IP 地址。
  2. ip route 查看路由表,找到默认网关。
  3. ip link 查看网卡链路状态(up/down)。
  4. 理解现代发行版用 ip(iproute2)取代 ifconfig(net-tools)的原因。
  5. 认读常见的网卡命名:eth0/ens33/wlan0/lo/docker0 各代表什么。

一、设计动机:为什么 ifconfig 被淘汰了

老一代 Linux 用户熟悉 ifconfig,但近十年的发行版里,它已经不预装了(或装了也提示废弃)。取代它的是 ip 命令。

原因:ifconfig 属于 net-tools 包,这个包在 2001 年就停止维护了。它有几个硬伤:

  • 不支持新的网络特性(多队列网卡、网络命名空间、policy routing 等)。
  • 接口设计老旧,一个命令干一件事,组合不便。

ip 属于 iproute2 包,由内核网络子系统的维护者维护,与内核能力同步。它用一个统一的接口(ip 对象 命令)管理地址、路由、链路、邻居表等所有网络资源:

ip addr # 地址(简写 ip a) ip route # 路由(简写 ip r) ip link # 链路(简写 ip l) ip neigh # 邻居(ARP 表)

💡 技巧:ip 的对象和命令都能简写到不歧义的最短前缀:ip a=ip addrip r=ip routeip l show= ip link show。日常用简写,省事。

二、高频组合与实战

看本机 IP:ip addr

ip addr # 简写 ip a, 列出所有网卡与 IP ip -br addr # 简洁版(-br = brief), 一行一个网卡, 推荐!

ip -br addr 的简洁输出:

lo UNKNOWN 127.0.0.1/8 ::1/128 eth0 UP 192.168.1.10/24 fe80::a00:27ff:fe4e:66a1/64 docker0 DOWN

一行一个网卡:名字、状态、IP。排查「我的 IP 是多少」用这个最快。

看路由表:ip route

ip route # 看路由表, 找默认网关

典型输出:

default via 192.168.1.1 dev eth0 # 默认网关: 192.168.1.1, 走 eth0 192.168.1.0/24 dev eth0 proto kernel # 本网段直连 eth0

default via X 这行告诉你「默认网关是 X」——所有去往外网的流量都先发给这个网关。

看链路状态:ip link

ip link # 看所有网卡的状态(up/down)、MAC 地址、MTU ip -br link # 简洁版

排查「网卡是不是 up 了」「物理连接通没通」用这个。

三、认读网卡命名

不同系统的网卡名不同,容易让人困惑:

名字 含义
lo 本地回环(loopback),IP 永远是 127.0.0.1,本机自测用
eth0 第一块以太网卡(老式命名,如旧 CentOS)
ens33 / enp0s3 新式命名(基于总线位置),现代发行版常见
wlan0 / wlp3s0 无线网卡
docker0 Docker 默认网桥
tun0 / tap0 VPN/虚拟网络用的隧道设备

新式命名(ens33enp0s3)看起来古怪,但它的好处是稳定:名字基于网卡在主板上的物理位置,不会因为插拔顺序变化。老式 eth0 在多网卡机器上可能每次启动顺序不同,导致配置错乱。

四、踩坑与排错

坑 1:老系统还只有 ifconfig

CentOS 6 等老系统可能没装 ip,或 ip 版本太老。这时只能用 ifconfig:

ifconfig # 列出所有网卡(老命令) ifconfig eth0 # 看指定网卡

但新系统(以及容器、云主机)优先用 ip

坑 2:看不到 IPv4,只看到 IPv6

ip addr 输出里,现代系统每张网卡同时有 IPv4(inet)和 IPv6(inet6)地址。新手有时被一堆 fe80:: 搞晕。inet 开头的那行就是 IPv4,如 inet 192.168.1.10/24

坑 3:ifconfig 显示不到所有网卡

ifconfig 不加参数只显示「up 的」网卡。要看全部用 ifconfig -a。而 ip link/ip addr 默认显示全部(含 down 的),更直观。

本节要点回顾

  1. ip(iproute2)取代了 ifconfig(net-tools)——后者 2001 年停止维护,不支新特性。
  2. 三大用法:ip addr(或 ip -br addr)看 IP、ip route 看路由/默认网关、ip link 看链路状态。
  3. ip -br addr 是最快看本机 IP 的命令,一行一个网卡。
  4. 网卡命名:lo 回环、eth0/ens33 以太网、wlan0 无线、docker0 网桥;新式命名基于总线位置,稳定可靠。
  5. 找 IPv4 看 inet 开头的行,IPv6 是 inet6/fe80::,别被搞混。

下一节讲「看端口」——用 ss/netstat 确认本机开了哪些端口、谁在监听。


发布者: 作者: 灏天文库 转发
评论区 (0)
U