You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CentOS中配置带自定义端口的DNS服务器(修改/etc/resolv.conf)方法咨询

CentOS中配置带自定义端口的DNS服务器(修改/etc/resolv.conf)方法咨询

嗨,先给你划个重点:默认的/etc/resolv.conf里的nameserver字段不支持直接指定端口号——这是glibc自带的DNS解析库的限制,它只会默认用53端口去连接DNS服务器,你要是直接写nameserver 127.0.0.1:5353这种格式,系统根本识别不了,白忙活。

那该怎么解决呢?给你两个在CentOS里实用的方案:

方案一:用dnsmasq做DNS转发(最常用)

dnsmasq是轻量的DNS缓存+转发工具,刚好能帮我们把默认53端口的请求转发到你自定义的5353端口DNS上。

  • 先安装dnsmasq:
sudo yum install dnsmasq -y
  • 编辑dnsmasq的配置文件/etc/dnsmasq.conf,添加/修改以下内容:
# 只监听本地回环地址,避免对外暴露服务
listen-address=127.0.0.1
# 指定你的自定义端口DNS作为上游服务器,格式是【IP#端口】
server=127.0.0.1#5353
# 把你原来的两个DNS服务器也加上作为备选(如果需要的话)
server=14.2.3.1
server=14.2.3.2
# 禁用默认读取resolv.conf的行为,避免冲突
no-resolv
  • 重启dnsmasq并设置开机自启:
sudo systemctl restart dnsmasq
sudo systemctl enable dnsmasq
  • 修改/etc/resolv.conf,把本地dnsmasq设为首选DNS:
sudo echo "nameserver 127.0.0.1" > /etc/resolv.conf
# 要是想保留原来的DNS作为备选,也可以追加进去
# sudo echo -e "nameserver 14.2.3.1\nnameserver 14.2.3.2" >> /etc/resolv.conf

⚠️ 注意:如果你的CentOS用了NetworkManager,它可能会自动覆盖/etc/resolv.conf。这时候需要修改NetworkManager配置,让它别乱改:

  • 编辑/etc/NetworkManager/NetworkManager.conf,在[main]模块里加一行:
dns=none
  • 重启NetworkManager:
sudo systemctl restart NetworkManager

方案二:用systemd-resolved(适合CentOS 8+)

如果你的CentOS版本比较新(比如8及以上),系统自带的systemd-resolved也支持自定义端口的DNS配置:

  • 编辑/etc/systemd/resolved.conf,修改[Resolve]部分:
[Resolve]
# 把自定义端口的DNS放在前面,格式是【IP:端口】
DNS=127.0.0.1:5353 14.2.3.1 14.2.3.2
# 要是想让所有域名都用这些DNS,可以加一行Domains=~.
  • 重启systemd-resolved服务:
sudo systemctl restart systemd-resolved
  • 让/etc/resolv.conf指向systemd-resolved的配置文件:
sudo ln -sf /run/systemd/resolve/stub-resolv.conf /etc/resolv.conf

这样配置后,系统就会通过systemd-resolved转发请求到你指定的5353端口DNS上了。

备注:内容来源于stack exchange,提问作者dave

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 14:34:51