无法使用 dnsmasq 将 DNS 请求转发到跳转服务器

无法使用 dnsmasq 将 DNS 请求转发到跳转服务器

我的目标是将某些与工作相关的主机的 DNS 请求转发到跳转服务器,该服务器能够解析这些请求。

53在跳转服务器上5353本地映射了端口,如下所示:

ssh -L 5353:localhost:53 pritzl@jump

在此会话中,我能够nslookup server.work。现在,我希望能够在家里的机器上执行相同操作。

我的配置dnsmasq.conf如下/etc/NetworkManager/dnsmasq.d/dnsmasq.conf

server=/google.com/1.1.1.1
server=/server.work/127.0.0.1#5353

然后,我重新启动了网络管理器:service network-manager restart

现在,我们来测试一下:

  • 对于google.com,我得到:
pritzl@pritzl-vault:~$ nslookup google.com
Server:     127.0.1.1
Address:    127.0.1.1#53

Non-authoritative answer:
Name:   google.com
Address: 172.217.17.78
  • 对于server.work,我得到:
pritzl@pritzl-vault:~$ nslookup server.work
;; connection timed out; no servers could be reached
  • 对于server-2.work,我立即得到:
pritzl@pritzl-vault:~$ nslookup server-2.work
Server:     127.0.1.1
Address:    127.0.1.1#53

** server can't find server-2.work: NXDOMAIN

(关于后者,我想这是有道理的,因为我的 ISP 的 DNS 不知道server-2.work,并且可以立即响应。我想我应该改变我的dnsmasq.conf以包含来自的所有内容*.work,但在这里进行限制是一个很好的测试。)

出了点问题,但我不知道是什么。我该如何继续?

附加信息

我也尝试过设置server=/google.com/127.0.0.1#5353dnsmsaq.conf然后nslookup google.com就不起作用了(除了结论之外,什么都不起作用,不仅仅是与工作相关的主机)。我不确定这是什么意思确切地,但我认为这是一个值得在这里添加的有趣测试。

答案1

man ssh

-L local_socket:remote_socket
         Specifies that connections to the given TCP port or Unix socket
         on the local (client) host are to be forwarded to the given host
         and port, or Unix socket, on the remote side.

DNS 通常使用 UDP,而不是 TCP。虽然可以使用 TCP,并且 dnsmasq 对此的支持有限,但这并不代表您的远程 DNS 服务器支持(或配置)此协议。

相关内容