Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

可否支持 tcp监听(接收客户端的tcp查询)、tcp请求(转发给tcp上游) #106

Closed
w311ang opened this issue Sep 26, 2022 · 6 comments

Comments

@w311ang
Copy link

w311ang commented Sep 26, 2022

原因lifenjoiner/dnsforwarder#7

@zfl9
Copy link
Owner

zfl9 commented Oct 11, 2022

暂时没有这个计划( 请搭配其他dns udp2tcp工具,如 https://github.com/zfl9/dns2tcp )。

UPDATE: chinadns-ng 2.0 将支持 tcp/udp 监听,tcp/udp/doh 上游。

@zfl9 zfl9 closed this as completed Oct 11, 2022
@ShadowOfTheDay
Copy link

我有同样的问题,搜到了这个旧的issue。不知道OP的问题解决没。
我想OP的意思是希望chinadns-ng可以同时监听来自TCP端口的客户端请求,而不是chinadns-ng通过TCP查询上游DNS服务器。这个功能似乎和dns2tcp实现的目的不一样,因为dns2tcp还是只监听UDP的客户端DNS请求。
应用场景如下:服务器中chinadns-ng作为dnsmasq的上游,客户端shadowsocks-android连接到服务器时,远程DNS使用TCP查询,dnsmasq将请求转发给chinadns-ng,但后者不支持TCP查询,所以DNS请求失败,不知道我理解得对不对,实际操作的确会失败。
不知道 @zfl9 有没有什么建议,谢谢了。

@zfl9 zfl9 reopened this Oct 7, 2023
@zfl9 zfl9 changed the title 可否支持tcp请求 可否支持 tcp监听、tcp请求(转发给tcp上游) Oct 7, 2023
@zfl9
Copy link
Owner

zfl9 commented Oct 7, 2023

后面应该会加入支持,目前还没什么时间哈,望理解。(chinadns-ng 2.0 版本将预计支持 tcp)

@zfl9 zfl9 changed the title 可否支持 tcp监听、tcp请求(转发给tcp上游) 可否支持 tcp监听(接收客户端的tcp查询)、tcp请求(转发给tcp上游) Oct 7, 2023
@zfl9
Copy link
Owner

zfl9 commented Oct 7, 2023

我有同样的问题,搜到了这个旧的issue。不知道OP的问题解决没。 我想OP的意思是希望chinadns-ng可以同时监听来自TCP端口的客户端请求,而不是chinadns-ng通过TCP查询上游DNS服务器。这个功能似乎和dns2tcp实现的目的不一样,因为dns2tcp还是只监听UDP的客户端DNS请求。 应用场景如下:服务器中chinadns-ng作为dnsmasq的上游,客户端shadowsocks-android连接到服务器时,远程DNS使用TCP查询,dnsmasq将请求转发给chinadns-ng,但后者不支持TCP查询,所以DNS请求失败,不知道我理解得对不对,实际操作的确会失败。 不知道 @zfl9 有没有什么建议,谢谢了。


不太清楚 shadowsocks-android 的 dns 解析流程。但我可以说下 ss-tproxy 关于 dns over tcp 的一个解决方案。

  • 最前面还是 dnsmasq,接收本地网络的 dns 请求(基本都是 udp,tcp 可能也有,但非常少,可以忽略)
  • chinadns-ng 作为 dnsmasq 的唯一上游(udp),给 chinadns-ng 配置 国内dns上游、可信dns上游(走代理)
  • 根据 ss-tproxy.conf 配置,决定是否通过 tcp 来查询可信(国外)dns(注:无论是tcp还是udp,都会走代理)
    • 通过 udp 来查询,无需启动其他 dns 进程,chinadns-ng 的可信dns上游直接就是 8.8.8.8 等国外dns
    • 通过 tcp 来查询,则启动 dns2tcp 进程,作为 chinadns-ng 的可信dns上游,dns2tcp 上游则设为 8.8.8.8

简单来说,本地网络中的 dns 解析,除了最后一环,全部都使用 udp 来传输;而最后一环,则根据实际情况或个人喜好,决定是否启动 dns2tcp(通过tcp查询)、dns2socks(通过socks5代理)、dnsproxy(通过DoH、DoT等等),或者不启动任何其他dns进程(直接通过udp传输给国内外的公共dns)。

本地网络的 dns 流量,使用 udp 传输完全没有问题,不存在隐私问题、安全问题,而且 udp 传输还更快,其他传输协议或多或少都存在“握手”这个过程,在本地网络中,这是完全没有必要的。

之所以只在最后一环做文章,是为了简单;比如,想使用 DoH/DoT 来传输,可以使用 dnsproxy;想通过原始 TCP 来传输,可以使用 dns2tcp;想走 socks5 代理,可以使用 dns2socks 等工具;随时都可以替换,解析流程也清晰明了。

所以,这个功能优先级并不是很高,因为有其他解决方案。

@zfl9
Copy link
Owner

zfl9 commented Nov 12, 2023

#144

@zfl9
Copy link
Owner

zfl9 commented Mar 7, 2024

见 2024.03.07 版本。

@zfl9 zfl9 closed this as completed Mar 7, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

3 participants