/etc/resolv.conf
添加 DNS;用 nmtui
/vi /etc/sysconfig/networkscripts/ifcfg*
配 IP,重启网络Linux DNS与IP地址配置完全指南
在Linux系统中,正确配置网络参数(包括IP地址和DNS解析)是保障设备正常通信的核心环节,本文将系统性地介绍静态/动态IP分配及DNS客户端配置的完整流程,涵盖主流发行版的操作差异,并提供故障排查思路,通过本指南,您可掌握从临时测试到持久化配置的全链路管理方案。
前置准备
✅ 必要条件清单
项目 | 说明 |
---|---|
Root权限 | 多数配置文件需sudo 权限修改 |
终端工具 | 推荐使用SSH或物理控制台,避免图形界面中断 |
网卡识别 | 执行ip link show 确认目标网卡名称(如ens33/eth0) |
网关有效性验证 | 确保预设网关处于同一子网且可达 |
DNS服务器可靠性 | 优先选择运营商提供或公共DNS(如8.8.8.8/1.1.1.1) |
IP地址配置方案
🔧 方案A:临时性配置(立即生效但重启失效)
IPv4手动指定
# 语法:ip [option] object {command | parameters} sudo ip addr add 192.168.1.100/24 dev ens33 # 添加主IP+掩码 sudo ip addr del 192.168.1.101/24 dev ens33 # 删除冗余IP sudo ip link set ens33 up # 激活网卡
💡 技巧:ip brief address show
快速查看当前绑定的所有IP
IPv6无状态自动配置(SLAAC)
sudo ip 6 addr add <EUI64生成的全局地址>/64 dev ens33 preferred_lft forever
⚠️ 注意:多数云服务商默认启用DHCPv6而非纯SLAAC
📜 方案B:永久性配置(推荐生产环境使用)
▶︎ Debian/Ubuntu系(Netplan时代)
编辑/etc/netplan/50cloudinit.yaml
:
network: version: 2 renderer: networkd ethernets: ens33: dhcp4: no # 禁用DHCP addresses: [192.168.1.100/24] # 静态IP段 routes: to: default via: 192.168.1.1 # 默认网关 dns: [] # 此处不填,单独管理DNS
应用配置:sudo netplan apply
▶︎ RHEL/CentOS系(传统networkmanager)
修改/etc/sysconfig/networkscripts/ifcfgens33
:
| 参数 | 值 | 说明 |
||||
| ONBOOT=yes | ✔️ | 启动时激活网卡 |
| BOOTPROTO=static | static | 静态IP模式 |
| IPADDR=192.168.1.100| 自定义IP | 不可与局域网内其他设备冲突 |
| PREFIX=24 | /24 | CIDR表示法 |
| GATEWAY=192.168.1.1| 路由器LAN口地址 | 必须真实存在 |
| DNS1=8.8.8.8 | Google公共DNS | 最多可定义三个DNS服务器 |
| PEERDNS=no | 禁止反向DNS查询 | 提升安全性 |
修改后执行:sudo systemctl restart NetworkManager
DNS客户端深度配置
📌 核心配置文件解析
/etc/resolv.conf
关键字段说明
字段名 | 示例值 | 功能描述 |
---|---|---|
nameserver | 8.8.8 | 首选DNS服务器 |
search | localdomain.com | 搜索域后缀(缩短域名输入) |
options | singlerequestreopen | 允许单次请求重试机制 |
ndots: | ndots:2 | 绝对FQDN解析阈值(≥该数值不加搜索域) |
🛠️ 特殊场景配置技巧
多DNS负载均衡
# 同时使用三大公共DNS实现故障转移 nameserver 8.8.8.8 nameserver 1.1.1.1 nameserver 223.5.5.5
👉 原理:系统按顺序尝试,首个响应成功的DNS将被采用
私有区域定向解析
创建/etc/openvpn/updateresolvconf
脚本(适用于VPN场景):
echo "nameserver 10.0.0.1" > /etc/resolv.conf.new cat /etc/resolv.conf >> /etc/resolv.conf.new mv /etc/resolv.conf.new /etc/resolv.conf
配合Firewall规则实现内外网分离解析
配置验证与排错
🔍 标准化检测流程
步骤 | 命令 | 预期结果 |
---|---|---|
接口状态检查 | ip c a |
显示所有活跃接口及其IPv4/IPv6地址 |
路由表校验 | route n |
默认路由指向正确网关 |
DNS正向解析测试 | dig @8.8.8.8 example.com |
返回非权威应答(ANSWER SECTION) |
反向解析验证 | dig x <本机公网IP> |
PTR记录应指向合法域名 |
连通性深度测试 | traceroute n 8.8.8.8 |
展示完整的网络跳转路径 |
❗ 常见错误解决方案
现象 | 可能原因 | 解决方法 |
---|---|---|
Name or service not known |
DNS端口被防火墙阻断 | firewallcmd addservice=dns |
网关不可达 | 路由表中缺少默认路由 | 补充route add default gw <网关> |
SELinux阻止网络访问 | 安全策略限制 | 临时禁用:setenforce 0 |
跨子网通信失败 | 子网掩码计算错误 | 使用在线CIDR计算器重新规划网段 |
进阶管理工具推荐
工具名称 | 特点 | 适用场景 |
---|---|---|
nmtui |
文本界面可视化配置 | 快速调整基础网络参数 |
wicked |
SUSE开发的下一代网络管理器 | 复杂桥接/VLAN场景 |
dnsmasq |
轻量级本地缓存DNS服务器 | 内网加速+防污染拦截 |
unbound |
递归DNS解析器 | 自建隐私保护型DNS服务 |
相关问题与解答
Q1: 为什么修改了/etc/network/interfaces
却没有生效?
答:现代Debian系已迁移至Netplan,传统/etc/network/interfaces
文件不再被读取,请检查/etc/netplan/*.yaml
文件,并执行sudo netplan apply
应用配置,若需恢复旧版网络管理,可安装ifupdown
包并创建符号链接。
Q2: 设置了多个DNS服务器但总是优先使用最后一个怎么办?
答:Linux系统的/etc/resolv.conf
中DNS服务器列表的顺序决定优先级,排在前面的会被优先使用,如果发现实际行为相反,可能是以下原因导致:① 某些发行版(如OpenWrt)会反转列表顺序;② 第三方软件(如Systemdresolved)覆盖了原始配置,建议使用systemdresolve status
检查实际使用的DNS列表,并通过execstop
参数强制指定顺序。
Linux网络配置的本质是建立三层映射关系:物理层(MAC地址)→ 数据链路层(交换机学习)→ 网络层(IP路由),掌握IP与DNS的配置,相当于掌握了网络世界的“门牌号”和“邮政局”设置,建议在实际环境中多进行破坏性测试(如断开网关、伪造DNS响应),通过实践加深