你提到的“改DNS 53端口”,通常有两种含义,需要先明确你是哪种情况:

1、改变本地电脑/路由器使用的DNS服务器端口(想让电脑向8.8.8.8 的5353端口发请求)
2、改变本地运行的DNS服务(如dnsmasq、BIND)的监听端口(把本机DNS服务从53改为5353,避免冲突)
下面分别说明操作方法。
情况一:修改客户端**使用的DNS服务器端口(非标准端口)
标准DNS服务默认监听53端口,但有些特定服务(如某些私人DNS或DoT/DoH转换工具)会使用非标端口。

1. Windows(原生设置无法指定端口)
Windows系统的TCP/IP设置不支持直接填写端口号,你需要借助第三方工具或修改Hosts等替代方案:
推荐方法:使用dnscrypt-proxy或SimpleDNSCrypt
这类工具可以配置上游DNS服务器的IP和端口,配置文件(如dnscrypt.toml)中添加:
[static.'my-custom-dns']
stamp = 'sdns://...' # 或者直接指定IP:端口 或者使用[static] 字段直接定义:

[static.'custom-dns']
address = '8.8.8.8:5353'替代方案:使用Proxifier/Netch等代理软件
它们可以拦截DNS请求并重定向到指定IP和端口。
这些系统可以通过修改配置文件或命令行指定端口。
macOS 使用networksetup(需配合代理工具)
原生不支持端口,同样推荐使用dnsmasq 或dnscrypt-proxy。
Linux(直接使用 dig/nslookup 测试)
测试时可以直接指定端口:
dig @8.8.8.8 -p 5353 example.com长期修改:
如果你使用的DHCP客户端或NetworkManager支持,可以在连接配置中自定义DNS服务器,例如在/etc/resolv.conf 中只能填IP,不能填端口,实际做法是本地搭建一个DNS转发器(见下方情况二),让转发器使用非标准端口去查询上游。
3. 路由器(OpenWrt/DD-WRT等)
直接在路由器内部配置 dnsmasq,指定上游服务器的端口:
在 /etc/config/dhcp 或 dnsmasq.conf 中 server=8.8.8.8#5353 server=1.1.1.1#5353
然后重启dnsmasq即可让全屋设备使用此端口。
情况二:修改本地DNS服务**的监听端口
如果你想让自己搭建的DNS服务(如dnsmasq、AdGuard Home、BIND)不使用默认53端口,而是改用比如5353端口。
1. dnsmasq(Linux/路由器常用)
编辑配置文件dnsmasq.conf 或/etc/dnsmasq.d/ 下的文件:
port=5353
然后重启服务:
sudo systemctl restart dnsmasq
在Web管理后台的设置 → DNS设置 中,修改监听端口 为5353 或其他值。
编辑/etc/bind/named.conf.options 或配置文件:
options {
listen-on port 5353 { any; };
// 其他配置...
};重启BIND:
sudo systemctl restart bind9
- 如果是Windows Server的DNS服务,需通过注册表修改(极不推荐,容易导致系统服务异常)。
- 如果只是普通电脑上的Simple DNS Plus或Technitium DNS Server等第三方软件,一般在其图形界面设置中直接改监听端口即可。
| 你的目标 | 操作方式 | |
让电脑使用8.8.8.8:5353 作为DNS | 本地安装 dnscrypt-proxy/AdGuard Home,在其配置中将上游指向8.8.8.8:5353,然后系统DNS设为127.0.0.1 | |
| 让本机搭建的DNS服务监听非标端口 | 直接修改服务的配置文件(如 dnsmasq 的port=5353) | |
| 由于53端口被占用,想改端口 | 关闭占用服务,或修改本机DNS服务的监听地址为其他端口 |
如果你只是临时遇到端口冲突(比如VMware或Windows容器占用53),推荐先排查原因:
Windows netstat -aon | findstr :53 Linux/macOS sudo lsof -i :53
如果是安全考虑(如防止DNS劫持),改端口不能从根本上解决问题,建议改用DNS over HTTPS/TLS(DoH/DoT),需要进一步指导可以告诉我你的具体场景。
文章摘自:https://idc.huochengrm.cn/dns/27287.html
评论