5154

Good Luck To You!

centos一键更换dns

CentOS中,可通过修改/etc/resolv.

在CentOS系统中一键更换DNS的详细方法

准备工作

(一)确认网络接口名称

在终端中输入以下命令来查找当前系统的网络接口名称,这是后续操作的重要依据。

nmcli d

该命令会列出系统中所有的网络连接及其相关信息,包括接口名称(如eth0ens33等)。

(二)备份原有DNS配置(可选但推荐)

在进行DNS更换之前,备份原有的DNS配置文件是个不错的习惯,以防后续出现问题可以快速恢复,如果使用NetworkManager管理网络,相关配置可能在/etc/sysconfig/networkscripts/目录下对应的接口配置文件中;如果是传统的network service管理方式,同样在该目录下有相应的配置文件,可以使用cp命令进行备份,例如备份ifcfgeth0文件:

sudo cp /etc/sysconfig/networkscripts/ifcfgeth0 /etc/sysconfig/networkscripts/ifcfgeth0.bak

使用NetworkManager方式一键更换DNS

(一)编写更换DNS脚本

可以创建一个脚本文件来实现一键更换DNS的功能,使用文本编辑器(如vinano)创建一个新的脚本文件,例如命名为change_dns.sh

sudo vi change_dns.sh

在文件中添加以下内容:

#!/bin/bash
# 定义新的DNS服务器地址
DNS1="8.8.8.8"
DNS2="8.8.4.4"
# 获取所有网络接口名称
interfaces=$(nmcli t f NAME con show | grep v "")
# 遍历每个接口并设置DNS
for interface in $interfaces; do
    echo "正在设置接口 $interface 的DNS..."
    sudo nmcli con mod "$interface" ipv4.dns "$DNS1 $DNS2"
    sudo nmcli con mod "$interface" ipv4.ignoreautodns yes
done
# 重启所有网络接口以使更改生效
for interface in $interfaces; do
    sudo nmcli con down "$interface" && sudo nmcli con up "$interface"
done
echo "DNS更换完成!"

上述脚本中,DNS1DNS2定义了要设置的DNS服务器地址(这里以谷歌的公共DNS为例),然后通过nmcli命令获取所有网络接口名称,并遍历每个接口设置DNS,最后重启网络接口使更改生效。

(二)赋予脚本执行权限

保存并退出编辑器后,需要为脚本文件赋予执行权限,否则无法直接运行,使用以下命令:

sudo chmod +x change_dns.sh

(三)执行脚本一键更换DNS

现在可以直接执行脚本来完成DNS的一键更换:

centos一键更换dns

sudo ./change_dns.sh

执行后,脚本会自动遍历系统中的所有网络接口,将它们的DNS设置为指定的值,并重启接口使设置生效。

使用传统network service方式一键更换DNS

(一)编写更换DNS脚本

同样创建一个脚本文件,例如命名为change_dns_传统.sh

sudo vi change_dns_传统.sh

在文件中添加以下内容:

#!/bin/bash
# 定义新的DNS服务器地址
DNS1="8.8.8.8"
DNS2="8.8.4.4"
# 查找所有网络接口配置文件
config_files=$(ls /etc/sysconfig/networkscripts/ifcfg*)
# 遍历每个配置文件并修改DNS设置
for config_file in $config_files; do
    echo "正在修改配置文件 $config_file 的DNS..."
    sudo sed i "/DNS1=/c DNS1=$DNS1" "$config_file"
    sudo sed i "/DNS2=/c DNS2=$DNS2" "$config_file"
done
# 重启网络服务以使更改生效
sudo systemctl restart network
echo "DNS更换完成!"

这个脚本通过sed命令直接修改/etc/sysconfig/networkscripts/目录下所有接口配置文件中的DNS设置,然后重启网络服务。

(二)赋予脚本执行权限

与前面类似,保存并退出编辑器后,赋予脚本执行权限:

sudo chmod +x change_dns_传统.sh

(三)执行脚本一键更换DNS

执行以下命令来运行脚本,实现一键更换DNS:

sudo ./change_dns_传统.sh

脚本会遍历所有接口配置文件,修改其中的DNS设置,并重启网络服务使新设置生效。

centos一键更换dns

验证DNS更换是否成功

无论是使用哪种方式更换DNS,更换完成后都需要进行验证,以确保DNS设置已经正确生效。

(一)查看DNS配置信息

可以使用以下命令来查看当前系统的DNS配置信息:

nmcli dev show | grep DNS

或者查看对应接口配置文件中的DNS设置(对于传统network service方式):

cat /etc/sysconfig/networkscripts/ifcfg<interface> | grep DNS

其中<interface>替换为实际的网络接口名称。

(二)测试DNS解析功能

使用ping命令来测试DNS解析是否正常工作,

ping google.com

如果能够正常解析并ping通,说明DNS更换成功且工作正常。

以下是一个简单的对比表格,展示了使用NetworkManager方式和传统network service方式更换DNS的一些特点: | 更换方式 | 优点 | 缺点 | | | | | | NetworkManager方式 | 配置相对灵活,可针对每个连接单独设置,支持动态管理 | 对于不熟悉命令行操作的用户来说,命令可能较为复杂 | | 传统network service方式 | 操作简单直接,适合熟悉配置文件编辑的用户 | 修改后需重启网络服务,可能会短暂中断网络连接,且对于多连接管理不够灵活 |

centos一键更换dns

相关问题与解答

(一)问题:更换DNS后网络连接正常,但无法访问某些网站怎么办?

解答:这可能是由于新设置的DNS服务器无法解析某些特定域名,或者这些网站的服务器对某些DNS有限制,可以尝试更换其他可靠的DNS服务器地址,如腾讯的DNS(119.29.29.29和182.254.116.116)或阿里的DNS(223.5.5.5和223.6.6.6)等,再次执行更换DNS的脚本进行尝试,也可以检查本地防火墙设置,确保没有阻止对这些网站的访问。

(二)问题:如何在不重启网络接口的情况下使DNS设置生效?

解答:对于使用NetworkManager方式管理的网络,可以使用以下命令来释放并重新获取IP地址,从而使新的DNS设置生效(以eth0接口为例):

sudo nmcli con down eth0 && sudo nmcli con up eth0

对于传统network service方式管理的网络,可以使用以下命令来释放并重新获取IP地址:

sudo ifdown <interface> && sudo ifup <interface>

其中<interface>替换为实际的网络接口名称。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年7月    »
123456
78910111213
14151617181920
21222324252627
28293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.