在 Ubuntu 上释放端口 53,以便自定义 DNS 服务器可以使用它

在 Ubuntu 上释放端口 53,以便自定义 DNS 服务器可以使用它

我正在实现一个自定义 DNS 服务器,但当我尝试使用它时,它与正在使用的端口 53 发生冲突。更改resolved.config 文件没有帮助。我的resolved.conf文件如下所示:

[Resolve]
DNS=127.0.0.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no

我的/etc/resolv.conf文件如下所示:

nameserver 127.0.0.1
nameserver 192.168.1.1
search lan1

端口 53 仍然用于解析 DNS...

$ sudo lsof -i :53
COMMAND   PID            USER   FD   TYPE DEVICE SIZE/OFF NODE     
systemd-r 636 systemd-resolve   12u  IPv4  22828   
0t0  UDP             127.0.0.53:domain 
systemd-r 636 systemd-resolve   13u  IPv4  22829      0t0  TCP   
127.0.0.53:domain (LISTEN)

当我运行自定义 DNS 服务器时,出现错误,

File "/usr/lib/python3.8/socketserver.py", line 466, in   
server_bind
self.socket.bind(self.server_address)
OSError: [Errno 98] Address already in use

我将非常感谢任何建议。

答案1

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

您可以在上面的链接中找到一个很棒的教程。下面我将记下教程中的内容以提高可见性。

以 root 身份编辑/etc/systemd/resolved.conf使用您选择的文本编辑器。

现在,您需要取消注释(去除 #) 这域名解析=DNSStubListener=线。

您现在想要更改域名解析=值到您选择的 DNS 服务器,然后更改DNSStubListener=是的

现在,保存更改并退出编辑器。

接下来,您需要创建一个符号链接为了/run/systemd/resolve/resolv.conf/etc/resolv.conf作为目的地。

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

你会注意到-s,这使得链接象征性的代替硬链接-F是删除任何现有的目标文件。

现在,您应该能够重新启动系统并能够使用端口 53

您可以通过运行以下命令来检查这一点:

sudo lsof -i :53

如果您没有看到任何输出,那么端口 53应该是开放的。

要撤消此操作,您需要编辑/etc/systemd/resolved.conf并将设置恢复到原来的样子。

添加#回到前面域名解析=行并更改DNSStubListener=回到

然后您可以通过键入以下内容删除该符号链接:

sudo rm /etc/resolv.conf

然后重新启动。

我真的希望这有帮助!查看链接以获得更好的视觉效果哈哈。

答案2

sudo systemctl disable systemd-resolved
sudo systemctl stop systemd-resolved

答案3

正如另一个答案中给出的那样,您主要可以按照此处的教程进行操作:https://www.linuxuprising.com/2020/07/ubuntu-how-to-free-up-port-53-used-by.html。我不会重复这些细节,但如果那个不起作用,您可能需要进行另一次修改。

您可能必须关闭 systemd 另一部分中的 DNSStubListener。

尝试编辑该文件/etc/systemd/resolved.conf.d/noresolved.conf- 如果有DNSStubListener=yes,请将其更改为DNSStubListener=no.

可能还有其他conf文件保存了这个集合(在[Resolve]说明符下,所以你可能需要进一步查看。

希望有帮助。

相关内容