61·网络进阶

网络接口配置 ip/ifconfig

ipifconfignetwork

Linux 系统管理与运维 - 第 61 课:网络接口配置 ip / ifconfig

学习目标

完成本课学习后,你将能够:

  1. 理解 Linux 系统中网络接口的基本概念(如 eth0, ens33, lo)。
  2. 使用 ifconfigip 命令查看和临时配置网络接口的 IP 地址、子网掩码等。
  3. 区分 临时网络配置(重启失效)与永久网络配置(通过配置文件)。
  4. 掌握 启用/禁用网络接口的基本方法。

核心概念

1. 什么是网络接口?

在 Linux 中,网络接口就像是计算机连接到网络(或网络内部通信)的“门”。每个接口都有一个名字(如 eth0, ens33, wlan0),代表一个物理或虚拟的网络连接点。

  • lo:回环接口 (loopback),用于本机内部通信,IP 地址固定为 127.0.0.1
  • eth0, ens33, enp0s3 等:通常是物理有线网卡。
  • wlan0:通常是无线网卡。
  • docker0, virbr0 等:虚拟接口,由容器或虚拟化软件创建。

2. 传统工具:ifconfig

ifconfig (interface configuration) 是较早的网络配置工具。虽然在许多新系统中已被 ip 命令取代,但了解它仍然有用,因为许多脚本和文档中还在使用。

  • 查看所有接口信息ifconfig
  • 查看指定接口信息ifconfig eth0
  • 临时设置接口 IPsudo ifconfig eth0 192.168.1.100 netmask 255.255.255.0 up

3. 现代工具:ip

ip 命令是 iproute2 软件包的一部分,功能更强大、更统一。它采用对象模型:ip [选项] 对象 { 命令 | help }

  • 查看所有接口ip addr show 或简写 ip a
  • 查看指定接口ip addr show dev eth0
  • 临时添加 IP 地址sudo ip addr add 192.168.1.100/24 dev eth0
  • 删除 IP 地址sudo ip addr del 192.168.1.100/24 dev eth0
  • 启用/禁用接口sudo ip link set eth0 up / sudo ip link set eth0 down

关键区别

  • ifconfig 使用传统的网络掩码格式(如 netmask 255.255.255.0)。
  • ip 使用 CIDR (无类别域间路由) 表示法(如 192.168.1.100/24,其中 /24 等同于 255.255.255.0)。
  • ip 命令修改立即生效,但重启后同样会丢失(除非写入配置文件)。

代码示例

示例 1:使用 ifconfig 查看与临时配置

# 1. 查看系统上所有活动的网络接口及其 IP 信息
ifconfig

# 2. 只查看 `eth0` 接口的详细信息(MAC地址、IP、数据包统计等)
ifconfig eth0

# 3. 临时为 `eth0` 接口分配一个新的 IP 地址 (需要root权限)
# 注意:此配置在系统重启或网络服务重启后会丢失!
sudo ifconfig eth0 192.168.1.150 netmask 255.255.255.0 up

# 4. 验证新 IP 地址是否已生效
ifconfig eth0 | grep "inet addr"   # 传统格式查看
# 或使用更通用的方式
ip addr show dev eth0

示例 2:使用 ip 命令查看与临时配置

# 1. 以简洁模式查看所有接口的 IP 地址信息
ip -brief addr show

# 2. 查看 `eth0` 接口的完整信息(状态、MAC、IP等)
ip addr show dev eth0

# 3. 为 `eth0` 添加一个辅助的 IP 地址(同一个接口可以拥有多个IP)
sudo ip addr add 192.168.1.200/24 dev eth0

# 4. 再次查看,确认新 IP 已添加(会看到两个 inet 条目)
ip addr show dev eth0

# 5. 删除刚才添加的辅助 IP 地址
sudo ip addr del 192.168.1.200/24 dev eth0

# 6. 禁用 `eth0` 接口 (通常用于故障排查)
sudo ip link set eth0 down
# 禁用后,使用 `ip link show` 会看到 state DOWN

# 7. 再次启用 `eth0` 接口
sudo ip link set eth0 up

示例 3:理解永久配置(配置文件)

临时配置重启后失效。永久配置需要编辑网络接口的配置文件。路径因发行版而异:

  • Debian/Ubuntu/etc/network/interfaces
  • CentOS/RHEL 7 及更早/etc/sysconfig/network-scripts/ifcfg-eth0
  • CentOS/RHEL 8+/Fedora:使用 NetworkManager,配置可能在 /etc/NetworkManager/system-connections/ 或通过 nmcli 工具管理。

以 CentOS 7 的 ifcfg-eth0 文件为例

# 查看当前配置文件
cat /etc/sysconfig/network-scripts/ifcfg-eth0
# 典型内容如下:
TYPE=Ethernet
BOOTPROTO=static      # "dhcp" 表示自动获取IP,"static" 表示手动设置
NAME=eth0
DEVICE=eth0
ONBOOT=yes           # 系统启动时是否激活此接口
IPADDR=192.168.1.100  # 你的静态IP地址
NETMASK=255.255.255.0 # 子网掩码
GATEWAY=192.168.1.1   # 默认网关
DNS1=8.8.8.8         # 首选DNS服务器
DNS2=8.8.4.4         # 备用DNS服务器

# 修改后,需要重启网络服务使配置生效
sudo systemctl restart network   # CentOS 7/RHEL 7
# 或使用 nmcli (如果NetworkManager是活跃的)
sudo nmcli connection reload
sudo nmcli connection up eth0

实践练习

练习 1:基础查看

  1. 任务:使用 ip 命令查看你系统中的网络接口,并找出有 IP 地址的非回环 (lo) 接口名称及其 IPv4 地址。
  2. 要求:使用一条 ip 命令完成查看。
  3. 预期输出:类似以下格式(接口名和IP地址会不同):
    eth0    UP             192.168.1.105/24
    
    提示:可以使用 ip -brief addr show 命令。

练习 2:临时配置与验证

  1. 任务:假设你有一台测试机,网络接口为 ens33。请为它临时添加一个额外的 IP 地址 10.0.0.1/24
  2. 步骤
    • 步骤 1:使用 ip addr add 命令添加地址。
    • 步骤 2:使用命令验证该地址是否已成功添加到 ens33 接口。
  3. 清理:练习完成后,记得使用 ip addr del 命令移除这个临时地址。

练习 3:探索配置文件

  1. 任务:找到并查看你当前主要网络接口(如 eth0ens33)的永久配置文件。
  2. 要求
    • 判断该接口当前是使用 DHCP 动态获取 IP,还是使用静态 IP?
    • 如果使用静态 IP,记录下 IPADDR、NETMASK 和 GATEWAY 的值。
  3. 提示:根据你的 Linux 发行版,查看对应的配置文件路径(见“核心概念”部分)。

常见错误

  1. 权限不足

    • 错误信息RTNETLINK answers: Operation not permitted
    • 原因:修改网络配置需要 root 权限。
    • 解决:命令前加 sudo
  2. 接口名称错误

    • 错误信息Cannot find device "eth0"
    • 原因:接口名可能不是 eth0,可能是 ens33, enp0s3 等。
    • 解决:先使用 ip link showifconfig -a 确认正确的接口名称。
  3. 配置文件语法错误

    • 现象:修改配置文件后,systemctl restart network 失败。
    • 原因:配置文件拼写错误(如 NETWASK 写错)、缺少必要字段等。
    • 解决:仔细检查配置文件,确保每行格式正确,并检查服务日志 journalctl -xe 获取具体错误信息。
  4. 配置未生效

    • 现象:修改了配置文件并重启服务,但 ip addr 显示的 IP 没变。
    • 原因:可能 NetworkManager 和 network 服务冲突,或者配置的接口名不正确。
    • 解决:尝试使用 nmcli 管理,或重启整个系统(sudo reboot)进行最终测试。

小结

本课我们学习了管理和配置 Linux 网络接口的核心技能:

  • 两大工具ifconfig (经典) 和 ip (现代、推荐)。优先使用 ip 命令。
  • 基本操作:查看 (ip a, ifconfig)、临时配置 IP (ip addr add, ifconfig ... netmask ...)、启用/禁用接口 (ip link set ... up/down)。
  • 配置持久化:临时命令仅对当前会话有效。永久配置需要编辑系统网络配置文件(路径因发行版而异),并重启网络服务。
  • 关键概念:理解接口名称、IP 地址、子网掩码/CIDR 表示法,以及动态(DHCP)与静态 IP 的区别。

掌握了这些基础配置技能,你就能在服务器部署、网络故障排查时,自信地查看和调整网络连接了。下一课,我们将学习如何查看当前的网络连接状态和监听端口。

练习编辑器

rust
Loading...

继续学习

完成本课后,建议继续学习下一课「网络连接查看 ss/netstat」 以巩固所学知识。