Ubuntu:如何释放systemd-resolved使用的端口53

默认情况下,Ubuntu已在端口53上进行了systemd解析的侦听。如果您运行自己的DNS服务器,则因为端口53已被使用而无法执行。因此,发生以下错误。 “监听tcp 0.0.0.0:53:bind:地址已在使用中”本文介绍如何防止systemd-resolved在Ubuntu上使用端口53。该过程已在Ubuntu 20.04上进行了测试,但也应在其他Ubuntu版本上也可以使用。 Ubuntu 18.04,下一个Ubuntu 20.10和Pop! _OS,Zorin OS,Elementary OS,Linux Mint和其他基于Ubuntu的Linux发行版。基本上,这适用于系统版本232及更高版本的所有系统。

要查看系统是否使用端口53,请使用以下命令:

sudo lsof -i :53

输出示例显示在默认Ubuntu 20.04系统上使用端口53解析的systemd:

$ sudo lsof -i :53

COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 610 systemd-resolve   12u  IPv4  19377      0t0  UDP localhost:domain 
systemd-r 610 systemd-resolve   13u  IPv4  19378      0t0  TCP localhost:domain (LISTEN)

如果未获得任何输出,则表示未使用端口53。

如何防止systemd-resolved在Ubuntu上使用端口53

值得注意的是,您只需取消注释即可释放端口53 DNSStubListener 而且它 no/etc/systemd/resolved.conf..其他步骤用于启用DNS服务器。没有DNS服务器,系统将无法解析域名,并且您将无法使用网络浏览器访问您的网站。编辑 /etc/systemd/resolved.conf 使用文本编辑器(以根用户身份)将其打开,例如在Nano控制台文本编辑器中。

sudo nano /etc/systemd/resolved.conf

然后取消注释(删除 # 从行的开头) DNS= 线和 DNSStubListener= 线。下一个, DNS= 将此文件中的值设置为DNS服务器(例如,如果使用本地代理,则为127.0.0.1,如果使用Cloudflare DNS,则为1.1.1.1)。还有 DNSStubListener= 来自的价值 yesno..
进行这些更改后,文件的外观如下所示(我使用1.1.1.1作为DNS服务器,即Cloudflare DNS):

[Resolve]
DNS=1.1.1.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
#DNSOverTLS=no
#Cache=no
DNSStubListener=no
#ReadEtcHosts=yes

要使用Nano文本编辑器保存文件, Ctrl + x然后输入 y 然后按 Enter.2。的符号链接 /run/systemd/resolve/resolv.conf 什么时候 /etc/resolv.conf 作为目的地:

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf

这里, -s 要创建符号链接而不是硬链接, -f 这旨在删除现有的目标文件(因此 /etc/resolv.conf 如果存在)3。重新启动系统。
这将释放Ubuntu系统上的端口53,并且您将不再收到诸如“监听tcp 127.0.0.1:53:bind:地址已在使用”之类的错误。
您可以通过运行以下命令来检查端口53是否正在使用 sudo lsof -i :53 -如果未使用端口53,此命令将不显示任何输出。
如果你喜欢:

  • 如何在Linux上刷新DNS缓存(对于systemd-resolved,BIND,Dnsmasq或nscd)
  • 如何在Linux中永久更改MAC地址

如何还原变更

您要撤消按照本文中的说明进行的更改吗?这是您要做的事情:1。从编辑开始 /etc/systemd/resolved.conf 使用文本编辑器(以根用户身份)将其打开,例如在Nano控制台文本编辑器中。

sudo nano /etc/systemd/resolved.conf

并注释掉(添加 # 前行) DNS=DNSStubListener=no,保存文件。要使用Nano文本编辑器保存文件, Ctrl + x然后输入 y 然后按 Enter.2。去掉 /etc/resolv.conf 符号链接:

sudo rm /etc/resolv.conf

3.重新启动系统。

Sidebar