1. 准备工作与目标网络环境
1.1 目标网络信息准备
在开始配置静态 IP 之前,务必明确你要分配的 静态地址、子网掩码、网关 与 DNS 服务器,以避免与 DHCP 池冲突。这些信息会直接决定你的网络拓扑是否顺畅工作。请记录以下关键参数:IP 地址、子网掩码、网关、以及 DNS。
示例信息:192.168.1.100/24、网关 192.168.1.1、DNS 8.8.8.8/8.8.4.4。将这些参数带入后续的配置文件或命令中,可以快速实现静态 IP 的落地。下一步需要确认你所使用的发行版与网络管理工具,以选择正确的配置路径。
在开始动手前,请确认你的接口名称是正确的,常见有 eth0、enp3s0、ens33 等。接口名称决定了你在各类配置中的具体段落和标签位置。
1.2 了解发行版及网络管理工具
不同 Linux 发行版或版本可能使用不同的网络管理工具,常见的包括 Netplan、NetworkManager、systemd-networkd,以及旧式的 /etc/network/interfaces 配置。根据你的系统版本选择对应的实现路径,以确保配置能够在下次启动时自动应用。
了解你系统中的默认网络管理工具,可以从以下几个角度入手:系统版本、/etc/netplan 目录是否存在、NetworkManager 是否在运行、以及 systemd-networkd 服务是否启用。通过这些信息,可以快速定位到正确的配置路径和命令。对初次尝试者,建议优先使用发行版文档中推荐的工具,以减少排错成本。
2. Netplan 路径下的静态 IP 配置(Ubuntu/Debian 新体系)
2.1 定位配置文件与接口
Netplan 的配置文件通常位于 /etc/netplan/ 目录,文件名可能是 01-netcfg.yaml 或类似名称。在编辑前务必备份原始文件,以便出现问题时可以快速回滚。你需要确认要修改的接口名称,如 enp3s0、ens33 等,以便在配置中绑定正确的网卡。
通过以下命令可以列出系统中的网络接口及其状态,以确定最终要修改的接口名称:ip link、ls /sys/class/net。
如果你的系统尚未启用 Netplan,请先了解当前使用的渲染器(renderer)以及目标网络管理工具,以确保后续步骤可顺利执行。
2.2 编写或修改 YAML 配置
在 /etc/netplan/01-netcfg.yaml 中,按照以下结构定义静态地址。Address 与 gateway4、nameservers 需要与网络架构一致。
# /etc/netplan/01-netcfg.yaml
network:version: 2renderer: networkdethernets:enp3s0:dhcp4: noaddresses: [192.168.1.100/24]gateway4: 192.168.1.1nameservers:addresses: [8.8.8.8, 8.8.4.4]
注意:把 enp3s0 替换为你实际的接口名称,192.168.1.100/24、192.168.1.1、8.8.8.8 等参数按需修改。

2.3 应用配置并验证
完成配置后,需要将 Netplan 将配置写入网络管理工具并应用。netplan apply 会让新配置生效并接管网络。确保没有语法错误,否则可能导致网络出现中断。
sudo netplan apply
应用完成后,使用以下命令验证 IP、路由和 DNS 设置是否正确。ip addr 与 ip route 可以显示当前分配的地址和路由。
ip addr show enp3s0
ip route show default
3. /etc/network/interfaces 旧式配置(Debian/Ubuntu 18.04 以前)
3.1 定位并编辑接口文件
旧式方法将静态配置放在 /etc/network/interfaces,并通过 ifup/ifdown 进行管理。这种方式在较老的 Debian/Ubuntu 版本中较为常见。编辑前同样需要备份原文件,以便回滚。
在该文件中,每个接口都需要一个单独的块来描述静态信息。请确保与网络拓扑一致,避免冲突地址。
3.2 示例配置与含义
以下示例为有线接口 eth0 的静态设置,包含 address、netmask、gateway、以及 dns-nameservers。
# /etc/network/interfaces
auto eth0
iface eth0 inet staticaddress 192.168.1.100netmask 255.255.255.0gateway 192.168.1.1dns-nameservers 8.8.8.8 8.8.4.4
3.3 重启网络服务以应用配置
变更后需要重新加载网络设置,常用命令为 sudo systemctl restart networking,或直接重启网络接口:sudo ifdown eth0 && sudo ifup eth0。确保在恢复网络连接前已保存正确的配置。
sudo systemctl restart networking
# 或
sudo ifdown eth0 && sudo ifup eth0
4. NetworkManager 静态 IP 配置(nmcli/系统连接 文件)
4.1 nmcli 使用概览
NetworkManager 提供 nmcli 命令行工具用于创建、修改和管理连接。配置文件通常位于 /etc/NetworkManager/system-connections/ 下,文件以连接名命名。确保网络管理服务处于启用状态,以避免冲突。
在高密度主机部署中,nmcli 提供灵活的动态调整能力,支持多种连接类型,且对桌面和服务器环境都友好。
4.2 通过 nmcli 设置静态 IPv4
通过 nmcli 创建或修改一个名为 Wired connection 1 的有线连接,指定 static IPv4、地址、网关、DNS。下面给出两种常用方式:创建新连接和修改现有连接。
sudo nmcli connection add type ethernet ifname enp0s31f6 con-name "Wired connection 1" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
# 或修改现有连接
sudo nmcli connection modify "Wired connection 1" ipv4.addresses 192.168.1.100/24 ipv4.gateway 192.168.1.1 ipv4.dns "8.8.8.8 8.8.4.4" ipv4.method manual
sudo nmcli connection up "Wired connection 1"
4.3 验证与排错
完成配置后,查看连接状态并获取当前 IP 信息。可使用 nmcli connection show、ip addr、以及 systemd-resolve --status 来确认设置结果。
nmcli connection show "Wired connection 1"
ip addr show enp0s31f6
systemd-resolve --status
5. systemd-networkd 静态 IP 配置(/etc/systemd/network)
5.1 配置文件定位与命名约束
systemd-networkd 使用 .network 文件在 /etc/systemd/network/ 目录下管理网络连接。通过 NameMatch 可以根据接口名自动匹配,适合轻量级服务端环境。在启用该管理工具前,确认没有其他网络管理工具同时运行以避免冲突。
5.2 创建并编写 .network 配置
以下为 enp3s0 的静态示例,包含 Address、Gateway、DNS。
# /etc/systemd/network/20-wired.network
[Match]
Name=enp3s0[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=8.8.8.8 8.8.4.4
5.3 重载并启动网络服务
修改后需要重新加载系统服务以应用新设置。确保 systemd-networkd 作为唯一的网络管理后端运行,执行以下命令应用配置:
sudo systemctl daemon-reload
sudo systemctl restart systemd-networkd
6. 常见排错与验证要点
6.1 检查接口状态与 IP
使用 ip addr show 查看接口是否获得了配置中的静态 IP,ip route 确认默认网关是否生效。若地址未分配,请检查对应配置文件是否存在语法错误及是否被正确渲染。
ip addr show enp3s0
ip route show default
6.2 DNS 与解析状态
DNS 是否生效可通过 systemd-resolve --status、nmcli device show 等命令确认。若解析失败,检查 /etc/resolv.conf 的符号链接是否正确,以及网络管理工具是否正在维护 DNS 设置。
systemd-resolve --status
cat /etc/resolv.conf
6.3 日志与服务状态
查看网络相关服务的日志有助于定位问题,常用命令包括 journalctl -u systemd-networkd、journalctl -u NetworkManager,以及 journalctl -b 的综合查看。
sudo journalctl -u systemd-networkd -e
sudo journalctl -u NetworkManager -b


