TLDR:我可以通过 SSH 连接洋葱地址,但不能通过 CNAME 连接到它的主机名。
我将 SSH 服务器作为 Tor 服务运行,但我不想记住洋葱地址。我知道我可以将名称添加到我的 SSH 客户端配置中,但这样做的目的是在我借用别人的计算机时能够访问我的计算机,显然我不想过多地干扰其他人的设置. (是的,这些其他计算机实际上很可能已经安装了 Tor。)所以我设置了一个主机名,其中包含指向洋葱地址的 CNAME 记录。如果我这样做torify ssh myaddress.onion
,它可以正常工作,但torify ssh mydomain.com
会导致:
1565911820 ERROR torsocks[31652]: Unable to resolve. Status reply: 4 (in socks5_recv_resolve_reply() at socks5.c:683)
ssh: Could not resolve hostname mydomain.com: Non-recoverable failure in name resolution
(不,我没有mydomain.com
按字面意思输入;错误已被编辑。)
这样做dig -t CNAME mydomain.com
确实会返回洋葱地址。到目前为止,我所有的测试都是在主机本身(LUbuntu 18.04.3)上进行的。
这是您理解 DNS 工作原理的失败,以及
.onion
在公共 DNS 中不是有效 TLD 的事实。让我给你一个关于 CNAME 解析的速成课程,以及一个解决方案,让你尝试在你的事情上“别名”它。DNS CNAME 解析
DNS CNAME 记录称为别名。它们充当一个指针,说“这个域是另一个域的别名,解析那个域并去那个目的地。”
如果我有
example1.com
一个 A 记录为 1.2.3.4 的域,这是我的实际服务器,并example2.com
设置为 的 CNAMEexample1.com
,那么当我转到example2.com
DNS 时,将看到example2.com
A 记录解析的 DNS 记录取决于example1.com
. 这在 NORMAL DNS 中有效,因为它是公开寻址的并且能够被查找。CNAME 目的地并没有真正“共享”作为正在完成的 DNS 查找的 DNS 查找结果,只关心生成的 A/AAAA 记录,因为
.onion
它不能正确地进行 DNS,所以不能有一个记录,并且失败。说明如下。为什么 ONION 解析失败
CNAME 记录与 Tor ONION 地址不同。当您根据标准 DNS 中的地址查找 CNAME 记录时
.onion
,它会出现硬故障。这是因为在公共 DNS 中,.onion
它是不可寻址的并且不是有效的 TLD。CNAME 记录也不会像您想象的那样以“重定向”格式“解析”为别名地址 - 只有当 CNAME 指针的目标实际上可以返回公共 DNS 记录时,CNAME 才会正确解析。因为它
.onion
永远不会,所以它在查找时要么是 NXDOMAINs 要么是 SERVFAILs。这就是为什么你得到你得到的错误。
那我怎样才能让它工作呢?
通过“作弊”并稍微配置一下您的 SSH 配置。
尝试将此部分添加到您的
~/.ssh/config
文件中(如果文件不存在,请创建该文件):然后再次尝试 SSH 到
mydomain.com
. 它应该将其重新指向您.onion
在幕后的地址。但是,不要依赖 DNS 将域指向
.onion
地址——它们在域的公共 DNS 中不起作用。普通的 dns 号.. 保存在 txt 记录中并像这样包装电话怎么样