1. 通用前置检查
# 1) 查看当前网卡名称
ip addr show # 或 ifconfig
# 2) 查看 DNS 生效情况
resolvectl status # systemd-resolved
cat /etc/resolv.conf # 传统方式⚠️ 风险提醒
• 错误配置可能导致 SSH 失联,先在控制台或带外会话操作
• 修改前务必备份:sudo cp /etc/resolv.conf /etc/resolv.conf.bak-$(date +%F)
2. Ubuntu / Debian 系列
2.1 Ubuntu ≥ 18.04(Netplan 默认)
文件位置:/etc/netplan/*.yaml
2.1.1 修改静态 IP + DNS
sudo nano /etc/netplan/01-netcfg.yaml示例(YAML 缩进敏感):
network:
version: 2
ethernets:
ens33: # 替换为你的网卡名
dhcp4: no
addresses: [192.168.1.100/24]
gateway4: 192.168.1.1
nameservers:
addresses: [223.5.5.5, 8.8.8.8] # 阿里云 + Google保存后:
sudo netplan apply # 立即生效
sudo netplan try # 60 秒内无确认则自动回滚若执行失败,Netplan 会提示回滚;也可手动恢复备份
2.1.2 仅修改 DNS(DHCP 环境)
sudo nano /etc/systemd/resolved.conf取消注释并填写:
[Resolve]
DNS=223.5.5.5 8.8.8.8
FallbackDNS=114.114.114.114重启服务:
sudo systemctl restart systemd-resolved验证:
resolvectl status2.2 Debian ≤ 9 或 Ubuntu ≤ 16.04(interfaces)
文件位置:/etc/network/interfaces
sudo nano /etc/network/interfaces示例(静态):
auto ens33
iface ens33 inet static
address 192.168.1.100
netmask 255.255.255.0
gateway 192.168.1.1
dns-nameservers 223.5.5.5 8.8.8.8重启网络:
sudo systemctl restart networking若 SSH 失联,可在云控制台使用 VNC 回滚。
3. CentOS / RHEL 系列
3.1 CentOS 7/8 & RHEL 7/8(ifcfg-scripts)
文件位置:/etc/sysconfig/network-scripts/ifcfg-<网卡名>
3.1.1 备份与编辑
NIC=$(ip route | grep default | awk '{print $5}')
sudo cp /etc/sysconfig/network-scripts/ifcfg-$NIC /etc/sysconfig/network-scripts/ifcfg-$NIC.bak
sudo nano /etc/sysconfig/network-scripts/ifcfg-$NIC3.1.2 关键字段说明(示例)
| 字段 | 说明 | 示例值 |
|---|---|---|
BOOTPROTO | 获取方式 | static 或 dhcp |
IPADDR | 静态 IP | 192.168.1.100 |
NETMASK | 子网掩码 | 255.255.255.0 |
GATEWAY | 默认网关 | 192.168.1.1 |
DNS1 / DNS2 | DNS 服务器 | 223.5.5.5 / 8.8.8.8 |
ONBOOT | 开机启动 | yes |
完整示例(静态):
TYPE=Ethernet
BOOTPROTO=static
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.1.100
NETMASK=255.255.255.0
GATEWAY=192.168.1.1
DNS1=223.5.5.5
DNS2=8.8.8.8保存后:
sudo systemctl restart networkCentOS 8 若使用 NetworkManager,需同时:
sudo nmcli connection reload
sudo nmcli connection up $NIC4. systemd-networkd(通用新发行版,如 Arch)
文件位置:/etc/systemd/network/10-static.network
sudo nano /etc/systemd/network/10-static.network示例:
[Match]
Name=ens33
[Network]
Address=192.168.1.100/24
Gateway=192.168.1.1
DNS=223.5.5.5 8.8.8.8启用并重启:
sudo systemctl enable --now systemd-networkd systemd-resolved5. 回滚 & 故障恢复
| 场景 | 回滚命令 |
|---|---|
| Netplan 失败 | sudo netplan apply --debug 或 sudo cp /etc/netplan/*.yaml.bak /etc/netplan/ |
| interfaces 失败 | sudo systemctl restart networking 或还原备份文件后重启 |
| ifcfg 失败 | sudo cp /etc/sysconfig/network-scripts/ifcfg-$NIC.bak /etc/sysconfig/network-scripts/ifcfg-$NIC 然后重启网络 |
| 完全失联 | 通过云控制台 VNC/救援模式 恢复 |
6. 验证 DNS 生效
# 1) 查看当前生效 DNS
resolvectl status | grep "DNS Servers"
# 2) 解析测试
nslookup pigyun.com
dig @223.5.5.5 pigyun.com若返回正确 IP 即配置成功。
7. 常见坑与提示
| 坑点 | 说明 |
|---|---|
| DHCP 覆盖 resolv.conf | 使用 PEERDNS=no(CentOS)或 dhcp4-overrides: use-dns: false(Netplan) |
| YAML 缩进错误 | Netplan 会报错:Invalid YAML;务必保持两空格缩进 |
| CentOS 8 已 EOL | 需先切换 Vault 源,否则无法安装网络工具;参考 CentOS EOL 修复手册 |
PIGYun 建议
• 短期:使用 Vault 源 + 静态 DNS 继续运行
• 长期:迁移至 Rocky Linux 9 / AlmaLinux 9 获得持续安全更新