免费翻墙freefq.com

  移动端← | →PC电脑端
您当前的位置:首页 > 网络翻墙技巧

DNS隧道可以实现DoH和DoT

时间:2023-07-11  来源:  作者: 条评论

dnstt是一种新的DNS隧道,可以与DNS over HTTPS和DNS over TLS解析器一起使用,根据Turbo Tunnel的理念设计。hus免费翻墙网
hus免费翻墙网
https://www.bamsoftware.com/software/dnstt/hus免费翻墙网
hus免费翻墙网
git clone https://www.bamsoftware.com/git/dnstt.githus免费翻墙网
hus免费翻墙网
它与其他DNS隧道有何不同?hus免费翻墙网
hus免费翻墙网
    它可以与DNS over HTTPS(DoH)和DNS over TLS(DoT)解析器一起使用,这使得网络观察者更难以判断是否使用了隧道。hus免费翻墙网
    它嵌入了一个适当的可靠性和会话协议(KCP+smux)。客户端和服务器可以同时发送和接收数据,客户端无需等待一个查询接收到响应后再发送下一个查询。同时进行多个查询有助于提高性能。(这就是Turbo Tunnel的概念。)hus免费翻墙网
    它使用Noise协议对隧道进行端到端的加密和认证,与DoH/DoT加密分开。
hus免费翻墙网
 hus免费翻墙网

.------.  |            .--------.               .------.
|tunnel|  |            | public |               |tunnel|
|client|<---DoH/DoT--->|resolver|<---UDP DNS--->|server|
'------'  |c           '--------'               '------'
   |      |e                                       |
.------.  |n                                    .------.
|local |  |s                                    |remote|
| app  |  |o                                    | app  |
'------'  |r                                    '------'

hus免费翻墙网
这样的DNS隧道对于绕过审查是有用的。想象一下,一个审查者可以观察到客户端⇔解析器的连接,但无法观察到解析器⇔服务器的连接(图中的垂直线)。传统基于UDP的DNS隧道通常被认为很容易被检测到,因为它们生成的DNS消息的格式不同寻常,而且每个DNS消息必须带有隧道服务器的域名标记,因为中间的递归解析器需要知道将它们转发到哪里。但是使用DoH或DoT,客户端⇔解析器的DNS消息是加密的,因此审查者不能轻易地看到正在使用隧道。(当然,根据加密流量的数量和时序可能仍然可能启发式地检测到隧道,仅仅加密本身并不能解决这个问题。)hus免费翻墙网
hus免费翻墙网
我希望这个软件发布可以展示这种类型的隧道设计的潜力。目前,该软件不提供TUN/TAP网络接口,甚至不提供SOCKS或HTTP代理接口。它只是将本地TCP套接字连接到远程TCP套接字。不过,您可以相对容易地设置它以像普通的SOCKS或HTTP代理一样工作,见下文。hus免费翻墙网
DNS区设置hus免费翻墙网
hus免费翻墙网
DNS隧道通过使隧道服务器充当特定DNS区的权威解析器来工作。中间的解析器通过将该区域的子域的查询转发到隧道服务器来充当代理。要设置DNS隧道,您需要一个域名和一个可以运行服务器的主机。hus免费翻墙网
hus免费翻墙网
假设您的域名是example.com,您的主机的IP地址是203.0.113.2和2001:db8::2。转到您的域名注册商的配置面板,并添加三个新记录:hus免费翻墙网
hus免费翻墙网
A    tns.example.com    指向203.0.113.2hus免费翻墙网
AAAA    tns.example.com    指向2001:db8::2hus免费翻墙网
NS    t.example.com    由tns.example.com管理hus免费翻墙网
hus免费翻墙网
tns和t标签可以是任何您想要的内容,但tns标签不应是t标签的子域(该子域下的所有内容都保留给隧道负载)。t标签应该很短,因为DNS消息中的空间有限,而且域名占用其中的一部分。hus免费翻墙网
隧道服务器设置hus免费翻墙网
hus免费翻墙网
在服务器主机上运行以下命令;即在上面的示例中的tns.example.com / 203.0.113.2 / 2001:db8::2上运行。hus免费翻墙网
hus免费翻墙网
cd dnstt-serverhus免费翻墙网
go buildhus免费翻墙网
hus免费翻墙网
首先,您需要为端到端隧道加密生成加密密钥。hus免费翻墙网
hus免费翻墙网
./dnstt-server -gen-key -privkey-file server.key -pubkey-file server.pubhus免费翻墙网
privkey写入server.keyhus免费翻墙网
pubkey写入server.pubhus免费翻墙网
hus免费翻墙网
现在运行服务器。127.0.0.1:8000是将转发隧道流的TCP地址(图中的“远程应用程序”)。hus免费翻墙网
hus免费翻墙网
./dnstt-server -udp :5300 -privkey-file server.key t.example.com 127.0.0.1:8000hus免费翻墙网
hus免费翻墙网
隧道服务器需要在端口53上可访问。您可以直接绑定到端口53(-udp :53),但这需要您以root身份运行服务器。最好像上面显示的那样在非特权端口上运行服务器,并使用端口转发将端口53转发到它。在Linux上,以下命令将端口53转发到端口5300:hus免费翻墙网
hus免费翻墙网
sudo iptables -I INPUT -p udp --dport 5300 -j ACCEPThus免费翻墙网
sudo iptables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 5300hus免费翻墙网
sudo ip6tables -I INPUT -p udp --dport 5300 -j ACCEPThus免费翻墙网
sudo ip6tables -t nat -I PREROUTING -i eth0 -p udp --dport 53 -j REDIRECT --to-ports 5300hus免费翻墙网
hus免费翻墙网
您还需要为隧道服务器连接到的内容提供一些内容。它可以是代理服务器或其他任何内容。为了测试,您可以使用Ncat监听器:hus免费翻墙网
hus免费翻墙网
sudo apt install ncathus免费翻墙网
ncat -lkv 127.0.0.1 8000hus免费翻墙网
hus免费翻墙网
隧道客户端设置hus免费翻墙网
hus免费翻墙网
cd dnstt-clienthus免费翻墙网
go buildhus免费翻墙网
hus免费翻墙网
将服务器上的server.pub(公钥文件)复制到客户端。您不需要在客户端上使用server.key(私钥文件)。hus免费翻墙网
hus免费翻墙网
选择一个DoH或DoT解析器。这里有一个DoH解析器的列表:hus免费翻墙网
hus免费翻墙网
    https://github.com/curl/curl/wiki/DNS-over-HTTPS#publicly-available-servershus免费翻墙网
hus免费翻墙网
以及这里有一个DoT解析器的列表:hus免费翻墙网
hus免费翻墙网
    https://dnsprivacy.org/wiki/display/DP/DNS+Privacy+Public+Resolvers#DNSPrivacyPublicResolvers-DNS-over-TLS%28DoT%29hus免费翻墙网
    https://dnsencryption.info/imc19-doe.htmlhus免费翻墙网
hus免费翻墙网
要使用DoH解析器,请使用-doh选项:hus免费翻墙网
hus免费翻墙网
./dnstt-client -doh https://doh.example/dns-query -pubkey-file server.pub t.example.com 127.0.0.1:7000hus免费翻墙网
hus免费翻墙网
对于DoT,请使用-dot:hus免费翻墙网
hus免费翻墙网
./dnstt-client -dot dot.example:853 -pubkey-file server.pub t.example.com 127.0.0.1:7000hus免费翻墙网
hus免费翻墙网
127.0.0.1:7000指定了隧道的客户端端口。连接到该端口的任何内容(图中的“本地应用程序”)将通过解析器进行隧道传输,并连接到隧道服务器上的127.0.0.1:8000。您可以使用Ncat客户端测试它;运行此命令,您在客户端终端中键入的任何内容都将显示在服务器上,反之亦然。hus免费翻墙网
hus免费翻墙网
ncat -v 127.0.0.1 7000hus免费翻墙网
hus免费翻墙网
如何创建标准代理hus免费翻墙网
hus免费翻墙网
您可以通过使隧道服务器转发到标准代理服务器来使隧道工作像普通的代理服务器。我发现使用Ncat的HTTP代理服务器模式很方便。hus免费翻墙网
hus免费翻墙网
ncat -lkv --proxy-type http 127.0.0.1 3128hus免费翻墙网
./dnstt-server -udp :5300 -privkey-file server.key t.example.com 127.0.0.1:3128hus免费翻墙网
hus免费翻墙网
在客户端上,将您的应用程序配置为使用隧道的本地端口(127.0.0.1:7000)作为HTTP/HTTPS代理:hus免费翻墙网
hus免费翻墙网
./dnstt-client -doh https://doh.example/dns-query -pubkey-file server.pub t.example.com 127.0.0.1:7000hus免费翻墙网
curl -x http://127.0.0.1:7000/ https://example.com/hus免费翻墙网
hus免费翻墙网
我尝试使用Firefox通过DNS隧道连接到Ncat HTTP代理,它可以正常工作。hus免费翻墙网
本地测试hus免费翻墙网
hus免费翻墙网
如果您只想看看它是如何工作的,而不想费心设置DNS区域或网络服务器,您可以在本地主机上运行隧道的两端。这种方式使用明文UDP DNS,所以不用说,跨互联网使用这样的配置是不隐蔽的。因为在这种情况下没有中间解析器,您可以使用任何您想要的域名;只需在客户端和服务器上保持一致即可。hus免费翻墙网
hus免费翻墙网
./dnstt-server -gen-key -privkey-file server.key -pubkey-file server.pubhus免费翻墙网
./dnstt-server -udp 127.0.0.1:5300 -privkey-file server.key t.example.com 127.0.0.1:8000hus免费翻墙网
ncat -lkv 127.0.0.1 8000hus免费翻墙网
hus免费翻墙网
./dnstt-client -udp 127.0.0.1:5300 -pubkey-file server.pub t.example.com 127.0.0.1:7000hus免费翻墙网
ncat -v 127.0.0.1 7000hus免费翻墙网
hus免费翻墙网
当它工作时,您将在服务器上看到如下的日志消息:hus免费翻墙网
hus免费翻墙网
2020/04/20 01:48:58 pubkey 0000111122223333444455556666777788889999aaaabbbbccccddddeeeeffffhus免费翻墙网
2020/04/20 01:49:00 begin session 468d274ahus免费翻墙网
2020/04/20 01:49:03 begin stream 468d274a:3hus免费翻墙网
hus免费翻墙网
以及在客户端上看到如下的日志消息:hus免费翻墙网
hus免费翻墙网
2020/04/20 01:49:00 MTU 134hus免费翻墙网
2020/04/20 01:49:00 begin session 468d274ahus免费翻墙网
2020/04/20 01:49:03 begin stream 468d274a:3hus免费翻墙网
hus免费翻墙网
注意事项hus免费翻墙网
hus免费翻墙网
对于外部观察者来说,DoH或DoT隧道是隐蔽的,但对于中间的解析器来说并非如此。如果解析器想要阻止您使用隧道,他们可以很容易地做到,只需不递归解析隧道服务器的DNS区域的请求。然而,隧道仍然对恶意解析器的窃听或篡改是安全的;解析器可以拒绝服务,但无法更改或读取隧道的内容。hus免费翻墙网
hus免费翻墙网
出于技术原因,该隧道要求解析器支持至少1232字节的UDP负载大小,这比DNS保证的最小值512要大。我怀疑大多数公共的DoH或DoT服务器都满足这个要求,但我没有进行过调查或其他任何操作。hus免费翻墙网
hus免费翻墙网
我没有进行任何系统性能测试,但我对Google、Cloudflare和Quad9解析器进行了一些初步测试。使用Google和Cloudflare时,通过Ncat传输文件时,我可以获得超过100 KB/s的下载速度。Cloudflare的DoH解析器偶尔会发送“400 Bad Request”响应(当隧道客户端看到这样的意外状态码时,它会自动限制自身的速度)。Quad9解析器的性能似乎明显不如其他解析器,但我不知道原因。
hus免费翻墙网
via: https://github.com/net4people/bbs/issues/30hus免费翻墙网

返回→:首页 > 网络翻墙技巧

相关文章

  • 在美国,脱口秀可不可以随意侮辱军人?
  • 一个人可以废物到什么程度?
  • 人口雪崩了,我们就可以过上好日子了吗?
  • 这样做,全面二胎的愿景或许能够实现
  • 如何构建一个防污染DNS?
  • 锦州发布|继续坚守实现动态清零
  • 【翻墙问答】防范政府黑客以DNS骑劫建立影子网域盗取用
  • 关于疫情防控变化的幻想可以消失了
  • 实现“双向奔赴”
  • 反美可不可以在美国买房?
  • 栏目更新

    栏目热门

    墙外新闻

    读者文摘

    欢迎评论:免登录,输入验证码即可匿名评论 共有条评论
    用户名: 密码:
    验证码: 匿名发表
      移动端← | →PC电脑端

    免费翻墙网freefq.com

    关于本站 | 联系我们 | 免责声明 | 赞助本站 | 网站地图 | 浏览建议

    Powered by 免费翻墙网freefq.com  © 2014-2024 免费翻墙软件网——提供最全的免费翻墙软件

    管理员精中特别提醒:本网站域名、主机和管理员都在美国,且本站内容仅为非中国大陆网友服务。禁止中国大陆网友浏览本站!若中国大陆网友因错误操作打开本站网页,请立即关闭!中国大陆网友浏览本站存在法律风险,恳请立即关闭本站所有页面!对于您因浏览本站所遭遇的法律问题、安全问题和其他所有问题,本站均无法负责也概不负责。

    特别警告:本站推荐各种免费科学上网软件、app和方法,不建议各位网友购买收费账号或服务。若您因付费购买而遭遇骗局,没有得到想要的服务,请把苦水往自己肚子里咽,本站无法承担也概不承担任何责任!

    本站严正声明:各位翻墙的网友切勿将本站介绍的翻墙方法运用于违反当地法律法规的活动,本站对网友的遵纪守法行为表示支持,对网友的违法犯罪行为表示反对!

    网站管理员定居美国,因此本站所推荐的翻墙软件及翻墙方法都未经测试,发布仅供网友测试和参考,但你懂的——翻墙软件或方法随时有可能失效,因此本站信息具有极强时效性,想要更多有效免费翻墙方法敬请阅读本站最新信息,建议收藏本站!本站为纯粹技术网站,支持科学与民主,支持宗教信仰自由,反对恐怖主义、邪教、伪科学与专制,不支持或反对任何极端主义的政治观点或宗教信仰。有注明出处的信息均为转载文章,转载信息仅供参考,并不表明本站支持其观点或行为。未注明出处的信息为本站原创,转载时也请注明来自本站。

    鉴于各种免费翻墙软件甚至是收费翻墙软件可能存在的安全风险及个人隐私泄漏可能,本站提醒各位网友做好各方面的安全防护措施!本站无法对推荐的翻墙软件、应用或服务等进行全面而严格的安全测试,因此无法对其安全性做保证,无法对您因为安全问题或隐私泄漏等问题造成的任何损失承担任何责任!

    S. Grand Ave.,Suite 3910,Los Angeles,CA 90071

    知识共享许可协议
    本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。