Linux 网络接口将网络命名空间连接到物理设备、环回路径、网桥、隧道、虚拟设备或其他链路。接口状态、地址、路由、DNS 和持久配置相互关联,但彼此不同。
网络配置 · 第 1 课
网络接口
学习如何检查 Linux 接口状态、地址、统计信息和持久配置归属。
发现接口
使用现代 iproute2 工具:
$ ip -brief link show
$ ip -brief address show
接口名称可能是 enp1s0 这样基于硬件的可预测名称、eth0 这样的传统名称,或管理员定义的名称。绝不要假定 eth0 一定存在或标识某个特定适配器。
为什么脚本应该发现接口,而不是假定存在 eth0?
管理状态与运行状态
UP 表示接口在管理上已启用。LOWER_UP 通常表示较低层报告运行就绪,例如检测到以太网载波。任何一个标志都不能单独证明 IP 地址、路由、DNS、防火墙或应用程序路径正常。
$ ip -details link show dev enp1s0
$ ip -s link show dev enp1s0
统计视图可以显示错误、丢弃和计数器,但只有结合时间区间和基线,计数器才有意义。
管理状态 UP 无法证明什么?
更改运行时状态
运行时命令包括:
$ sudo ip link set dev enp1s0 up
$ sudo ip address add 192.0.2.10/24 dev enp1s0
这些更改影响当前内核状态,并可能与之后重新应用配置文件的网络管理器冲突。关闭远程管理接口可能立即中断访问。更改前应确认确切设备、保留控制台访问、记录当前状态,并准备定时或经过测试的回滚。
ip address add 本身能保证重启后设置仍然存在吗?
确定配置归属
不同发行版和安装的持久配置路径各不相同,可能包括 NetworkManager 配置文件、systemd-networkd 单元、netplan 输入、/etc/network/interfaces、cloud-init 或编排系统。编辑文件前,应确定哪个服务管理该设备:
$ systemctl --type=service --state=running | grep -E 'NetworkManager|networkd|networking'
$ networkctl status
$ nmcli device status
只使用已确定管理器所提供的命令。两个管理器控制同一条链路时可能相互竞争,并覆盖对方的状态。
持久更改接口前应该做什么?
验证更改
应验证链路状态、分配的地址和有效期、所选路由、解析器状态、邻居可达性及实际应用程序。对于持久更改,只有存在恢复通道时,才能通过受控服务重启或系统重启进行测试。
什么比在 ip address 中看到新地址更能证明更改有效?
课程已完成
你已完成 网络接口
现在,你可以检查和更改接口,而不会混淆运行时状态与持久策略。
发现真实接口名称和地址。
区分管理状态与运行连接。
将直接
ip更改视为当前内核状态。持久更改前确定活动配置所有者。
之后验证路由、解析和应用程序行为。