DNS 服务器之间的 SSH 隧道连接超时

问题描述 投票:0回答:1

我有两台 DNS 服务器 A 和 B(A 位于受控区域内,即使使用 DoH,DNS 请求也可能受到监控 - DoH 被阻止或 DoH 服务器本身也受到监控),B 位于受控区域之外。的服务器在端口 53 上提供 DNS 服务。不同的是,A 的上游服务器设置为 127.0.0.1:1234(本地 ip),而 B 的上游服务器指向真实的 DNS 服务器,例如 8.8.8.8。

我想在 A 和 B 之间建立 SSH 隧道:

ssh -L 1234:localhost:53 user@B_ip

使A的127.0.0.1:1234可以作为A的上游DNS服务器。这样,当我使用A作为我的本地DNS服务器时,它的请求将安全地传输到B并且永远不会被ISP监控。但是,我无法让它工作:

我确保A和B都可以单独工作(将A的上游设置为8.8.8.8,B相同),隧道创建成功,但是一旦我将A的上游DNS更改为127.0.0.1:1234(隧道),它超时。

这是我在同一局域网内的测试服务器: A的dnsmasq.conf:

port=53
listen-address=10.0.0.125

server=127.0.0.1#5533
#server=10.0.0.130

B 的 dnsmasq.conf:

port=53
listen-address=127.0.0.1,10.0.0.130

server=8.8.8.8

我不确定我是否错过了任何东西,这两台服务器位于同一个局域网内,可以单独正常工作,我只是无法让隧道工作,非常感谢任何想法!

security ssh dns tunnel
1个回答
0
投票

我找到了它不起作用的原因...我使用 dig 命令来测试服务,但事实证明 dig 命令默认使用 UDP 来发送 DNS 请求,这就是为什么 reuqests 无法通过 SSH 隧道使用 TCP。使用相同的设置,使用 +tcp 选项将使其正常工作:

dig example.com -p 1234 @127.0.0.1 +tcp
© www.soinside.com 2019 - 2024. All rights reserved.