Linux 静态 IP 配置
网络配置工具说明
NetworkManager(nmcli 和 nmtui)
-
适用系统:
- 现代 Linux 发行版的默认网络管理工具
- Ubuntu 16.04+
- CentOS/RHEL 7+
- Fedora
- Debian 9+
-
工作原理:
- 作为系统守护进程运行
- 提供 D-Bus 接口供其他程序调用
- 动态管理网络配置和连接
- 可以自动处理网络配置变更
- 支持多种连接类型(有线、无线、VPN等)
-
配置存储:
- 配置文件位于
/etc/NetworkManager/system-connections/
- 每个连接独立配置文件
- 支持配置版本控制
- 配置文件位于
Netplan
-
适用系统:
- Ubuntu 17.10+
- 部分基于 Ubuntu 的发行版
-
工作原理:
- 使用 YAML 格式描述网络配置
- 作为配置抽象层
- 可以选择 NetworkManager 或 systemd-networkd 作为后端
- 将配置转换为后端可理解的格式
-
配置流程:
- 读取 /etc/netplan/*.yaml
- 生成后端配置
- 应用到选择的网络管理器
networking 服务说明
-
概述:
- 是 Debian/Ubuntu 系统的传统网络管理服务
- 由 ifupdown 软件包提供
- 负责处理
/etc/network/interfaces
文件中的配置
-
工作机制:
- 系统启动时读取 interfaces 配置文件
- 使用 ifup/ifdown 命令管理网络接口
- 支持网络接口的热插拔
- 可以执行自定义的 pre-up/post-up 脚本
-
主要组件:
- networking 服务:系统服务
- ifup/ifdown:命令行工具
- interfaces 配置文件:网络配置存储
- if-*.d 目录:存放接口相关脚本
-
与其他工具的关系:
- 与 NetworkManager 可能存在冲突
- 在新版本 Ubuntu 中逐渐被 Netplan 取代
- 仍在许多服务器环境中使用
-
常用命令:
# 启动网络服务
systemctl start networking
# 停止网络服务
systemctl stop networking
# 重启网络服务
systemctl restart networking
# 查看服务状态
systemctl status networking
# 启用/禁用开机自启
systemctl enable networking
systemctl disable networking
- 配置示例:
# /etc/network/interfaces 基本配置
auto lo
iface lo inet loopback
# 静态 IP 配置
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
# DHCP 配置
auto eth1
iface eth1 inet dhcp
# 高级配置:添加自定义脚本
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
pre-up /path/to/script.sh
post-up /path/to/another-script.sh
- 故障排查:
- 查看日志:
journalctl -u networking.service
- 检查配置:
ifup --no-act eth0
- 验证语法:
ifup -n eth0
- 手动测试:
ifdown eth0 && ifup eth0
- 查看日志:
network 服务说明
-
概述:
- 是 RHEL/CentOS 系统的传统网络管理服务
- 主要用于 RHEL/CentOS 6/7 版本
- 管理
/etc/sysconfig/network-scripts/
目录下的配置
-
工作机制:
- 系统启动时读取 network-scripts 目录下的配置
- 使用 ifup/ifdown 脚本管理接口
- 支持多种网络设备类型
- 可以通过脚本扩展功能
-
主要组件:
- network 服务:核心服务进程
- network-scripts:配置脚本目录
- ifcfg-* 文件:接口配置文件
- route-* 文件:路由配置文件
-
配置文件结构:
/etc/sysconfig/network-scripts/
├── ifcfg-eth0 # 以太网配置
├── ifcfg-eth1
├── route-eth0 # 静态路由配置
├── rule-eth0 # 路由规则
└── network # 全局网络配置
- 常用命令:
# 启动网络服务
systemctl start network
# 停止网络服务
systemctl stop network
# 重启网络服务
systemctl restart network
# 查看服务状态
systemctl status network
# 启用/禁用开机自启
systemctl enable network
systemctl disable network
- 配置示例:
基本配置(ifcfg-eth0):
# 静态 IP 配置
DEVICE=eth0
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
# DHCP 配置
DEVICE=eth0
BOOTPROTO=dhcp
ONBOOT=yes
# 绑定网卡配置
DEVICE=bond0
BONDING_MASTER=yes
BONDING_OPTS="mode=1 miimon=100"
BOOTPROTO=static
IPADDR=192.168.1.100
NETMASK=255.255.255.0
- 特殊配置:
路由配置(route-eth0):
# 添加静态路由
10.0.0.0/24 via 192.168.1.1
172.16.0.0/16 via 192.168.1.254
-
故障排查:
- 查看日志:
journalctl -u network.service
- 检查配置:
service network status
- 测试接口:
ifdown eth0 && ifup eth0
- 检查路由:
ip route show
- 查看日志:
-
注意事项:
- RHEL/CentOS 8+ 已弃用此服务
- 建议迁移到 NetworkManager
- 配置文件权限需要正确(600或644)
- 修改配置后需要重启服务
选择建议
-
现代系统首选:
- NetworkManager(nmcli/nmtui)
- 功能最完整
- 支持图形界面
- 适合动态环境
- NetworkManager(nmcli/nmtui)
-
Ubuntu 新系统:
- Netplan
- 配置简单清晰
- 向后兼容性好
- 支持多后端切换
- Netplan
-
服务器环境:
- 传统配置文件
- 配置稳定
- 适合静态环境
- 便于脚本管理
- 传统配置文件
-
特殊场景:
- 容器环境:传统配置
- 嵌入式系统:传统配置
- 桌面环境:NetworkManager
配置优先级
工具间的优先级
-
高优先级:
- systemd-networkd
- NetworkManager
- 这些现代工具会覆盖传统配置
-
中优先级:
- Netplan(Ubuntu)
- 作为配置抽象层,通过渲染器选择实际工具
-
低优先级:
- 传统 interfaces 配置
- networking 服务
- 如果存在现代工具,这些配置可能被忽略
同一工具内的优先级
-
NetworkManager:
- 用户特定配置 > 系统配置
/etc/NetworkManager/system-connections/
>/usr/lib/NetworkManager/
- 后导入的配置覆盖先导入的
-
Netplan:
- 按字母顺序加载配置文件
- 编号更大的配置文件优先级更高
- 例如:
99-config.yaml
>01-config.yaml
-
传统配置:
- interfaces:按文件中的顺序处理
- networking 服务:按字母顺序加载
- 后面的配置会覆盖前面的配置
配置冲突处理
-
多工具并存时:
- 建议只使用一种工具管理网络
- 禁用其他工具以避免冲突
# 禁用 NetworkManager systemctl disable NetworkManager systemctl stop NetworkManager # 禁用 networking 服务 systemctl disable networking systemctl stop networking
-
检查当前生效的配置:
# 查看当前网络管理工具 systemctl list-units | grep -E 'NetworkManager|networking|systemd-networkd' # 查看网络接口状态 networkctl status
配置前准备
- 查看网络接口信息:
ip addr
# 或
ifconfig
- 确认当前网络配置:
# 查看当前网关
ip route show
# 查看 DNS 配置
cat /etc/resolv.conf
配置方法
方法一:NetworkManager 命令行配置(推荐)
# 查看所有网络连接
nmcli connection show
# 修改指定网络连接为静态 IP
nmcli connection modify eth0 \
ipv4.method manual \
ipv4.addresses 192.168.1.100/24 \
ipv4.gateway 192.168.1.1 \
ipv4.dns "8.8.8.8 8.8.4.4"
# 重启网络连接
nmcli connection down eth0
nmcli connection up eth0
方法二:NetworkManager TUI 配置(图形界面)
使用 nmtui 提供的文本用户界面进行配置:
- 安装 nmtui(如果未安装):
# Ubuntu/Debian
apt install network-manager
# CentOS/RHEL
yum install NetworkManager-tui
- 启动配置界面:
nmtui
- 在交互界面中:
- 选择 "Edit a connection"
- 选择要编辑的网络接口
- 选择 "IPv4 CONFIGURATION"
- 将 "Automatic" 改为 "Manual"
- 添加 IP 地址、子网掩码和网关
- 添加 DNS 服务器
- 保存并退出
方法三:Netplan 配置(Ubuntu 17.10+ 推荐)
- 创建或编辑配置文件
/etc/netplan/01-netcfg.yaml
:
network:
version: 2
renderer: networkd # 或使用 NetworkManager
ethernets:
eth0: # 替换为实际网卡名
addresses:
- 192.168.1.100/24
gateway4: 192.168.1.1
nameservers:
addresses: [8.8.8.8, 8.8.4.4]
dhcp4: no
- 应用配置:
# 测试配置
sudo netplan try
# 应用配置
sudo netplan apply
注意事项:
- YAML 文件格式要求严格,注意缩进
- 配置文件名应以 .yaml 结尾
- 不同版本的 netplan 语法可能略有不同
方法四:通过配置文件(传统方式)
Ubuntu/Debian 系统
- 编辑
/etc/network/interfaces
:
auto eth0
iface eth0 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 8.8.8.8 8.8.4.4
- 重启网络服务:
systemctl restart networking
CentOS/RHEL 系统
- 编辑
/etc/sysconfig/network-scripts/ifcfg-eth0
:
BOOTPROTO=static
DEVICE=eth0
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=8.8.8.8
DNS2=8.8.4.4
- 重启网络服务:
systemctl restart network
验证配置
- 检查 IP 配置:
ip addr show eth0
- 测试网络连通性:
# 测试网关连通性
ping -c 4 192.168.1.1
# 测试外网连通性
ping -c 4 8.8.8.8
- 测试 DNS 解析:
nslookup www.baidu.com
常见问题
-
IP 地址冲突
- 使用
arping
检查 IP 是否被占用:
arping -I eth0 192.168.1.100
- 使用
-
网络配置不生效
- 检查网络服务状态:
systemctl status NetworkManager # 或 systemctl status networking
- 检查配置文件语法是否正确
- 确保网络接口名称正确
-
DNS 解析问题
- 检查
/etc/resolv.conf
文件 - 确保 DNS 服务器可访问
- 检查
注意事项
-
配置前备份
# 备份网络配置文件 cp /etc/network/interfaces /etc/network/interfaces.bak
-
远程配置风险
- 建议通过控制台或本地配置
- 远程配置时保持一个备用会话
- 配置错误可能导致网络中断
-
安全建议
- 避免使用已被占用的 IP
- 遵循网络管理员分配的 IP 段
- 记录配置变更
评论区