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

Rom*_*lia 5 linux ubuntu dns bind

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

[Resolve]
DNS=127.0.0.1
#FallbackDNS=
#Domains=
#LLMNR=no
#MulticastDNS=no
#DNSSEC=no
Run Code Online (Sandbox Code Playgroud)

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

nameserver 127.0.0.1
nameserver 192.168.1.1
search lan1
Run Code Online (Sandbox Code Playgroud)

端口 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)
Run Code Online (Sandbox Code Playgroud)

当我运行自定义 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
Run Code Online (Sandbox Code Playgroud)

我将不胜感激任何建议

小智 5

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

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

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

现在,您需要取消注释(删除 #DNS=DNSStubListener=行。

现在,您需要将DNS=值更改为您选择的 DNS 服务器,然后将DNSStubListener=的值从yes更改为no

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

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

sudo ln -sf /run/systemd/resolve/resolv.conf /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

您会注意到-s,它使链接成为符号链接而不是硬链接,而-f则删除任何现有的目标文件。

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

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

sudo lsof -i :53
Run Code Online (Sandbox Code Playgroud)

如果您没有看到任何输出,则端口 53应该打开。

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

#添加回DNS=行前面,并将DNSStubListener=更改回no

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

sudo rm /etc/resolv.conf
Run Code Online (Sandbox Code Playgroud)

然后重新启动。

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