-
Notifications
You must be signed in to change notification settings - Fork 1.3k
Configurable DNS server #119
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
Comments
因为ssdns是将本地的dns转发到remote ssserver,如果remote server位于国外,那么设置上游dns为dns over tls也许意义不大,我的建议是是否ssdns可以在local直接将dns转发到dns over tls,不转发到remote,这样会减少延迟,不过这个就和dnscyrpt-proxy功能就很像了。 |
这样就成了一个纯粹的DNS服务器,就没有必要叫 |
|
是的,ssdns的确是解决本地无法访问特定dns服务器的一个方案,但是因为需要借助remote,延迟就不乐观,我在本地更愿意选用dnscrypt-proxy这样的方案,上游用支持dns-over-http2的dns server,不过ip被block的话只能借助ssdns。我还是支持ssserver可以设置dns-over-tls的,这样隐蔽性会更好一些。 |
注:
为了使很多程序的数据包能 借助 ExodusVPN/net2 从 如果需要做 IP 地区查询,并依据查询结果来左右 流量出口策略,可以借助 ExodusVPN/ip-db 来完成这一操作,目前那些通过脚本实现的,性能,可靠性,可维护性其实都是很糟糕的。 |
@LuoZijun 我目前在写一个类似的。目前已经实现捕获全部的tun数据,并且重新拼接出 tcp 和 udp 协议的数据。现在遇到的问题是,ss-rust 的代码并不方便外部使用,需要全部代码直接拷贝到我的代码库里面去改。但是这样后面 ss-rust 的更新就获取不到了。 大概流程:
|
那部分? |
我本意想尽量少改代码把上面的逻辑注入到 @zonyitoo 顺便问下,这种情况,除了 fork 后改代码或者拷贝代码外有别的好方法吗? |
我大概写过一个 macOS 系统 里面 DNS 设置相关的代码。
这个设计看起来是一个 |
目前改了改 smoltcp 可以在 tun 上实现 socket 的数据收发。怎么结合 tokio 使用还没想明白。 |
@zonyitoo 能给些建议吗?目前代码 https://github.com/gfreezy/seeker/blob/master/src/main.rs ,很难结合 tokio |
地址并不能打开 |
结合tunnel的方法的话,建议可以搞一个 我这边电脑都是MAC所以一直没有做这块,可以考虑把你的做成一个单独的bin? |
只要是可以注册到epoll的,肯定是可以结合tokio用的。如果没有已有的Rust库的话,建议可以先写一下封装库出来。写法上应该和普通的FD注册到Mio上是一样的。 |
抱歉,忘记改成公开的了,已经可以访问了。
我是用的 mac 的 tun,mac 系统提供了 API 创建 tun。
有点不太一样。tun 的接口是提供一个 fd,从这个 fd 读到的是 IP 包,需要在 userspace 自己组装成 tcp/udp。mio 注册的话只能注册这一个 fd,但是不知道怎么把 tun 的读写事件转换成上层 n 多 socket 的事件。 |
smoltcp这个库貌似就实现了这些代码吧,基于它改造一下? |
macOS 也可以的嘛。 |
查了一下资料貌似还真可以,看@gfreezy 是否有空可以搞一个?我最近忙完了先 |
已经实现了基本的功能,代码在 https://github.com/gfreezy/seeker @zonyitoo 我看 ss-rust 里面的代码,ss server 的连接是每次都建立的,并没有复用。如果我希望 ss 服务器连接可以复用,甚至在请求来之前提前完成 handshake,节省几次网络来回的时间,有什么建议吗? |
这样 或者 不过我觉得这一块可能优化不会特别大,在应用上大多都用于浏览器访问资源,大多的协议都是HTTP/1.1以上的,本身保持着的就是长连接。 |
系统配置方面有进展咯: macOS (通过 PF_ROUTE 操控) Linux (通过 Netlink 操控) 设置IP转发(通过 sysctl 操控,macOS 、Linux 和 BSD 都支持) DNS 设定方面还是只支持 macOS: 下一步应该就是防火墙规则的操控了,等价于 🎉🎉🎉🎉🎉 |
对于SS协议,TCP连接肯定得每次都单独建立。不过目前最新的版本实现了HTTP协议的 这个协议讨论的是Configurable DNS Server,均已经实现。关于 |
忘了讲, |
Currently server uses system DNS configuration (e.g.
/etc/resolv.conf
in *NIX). But maybe we could use DNS over TLS (quad9 for example).Split from #118 .
The text was updated successfully, but these errors were encountered: