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

luci-app-ssr-plus: add mosdns support #1298

Merged
merged 7 commits into from
Oct 28, 2023
Merged

luci-app-ssr-plus: add mosdns support #1298

merged 7 commits into from
Oct 28, 2023

Conversation

XiaoliChan
Copy link
Contributor

@XiaoliChan XiaoliChan commented Oct 25, 2023

Features:

  • MosDNS support
  • Allow choose DNS resolver in shunt mode
  • Allow set DNS server in shunt mode
  • Allow disable/enable IPv6 with MosDNS (normal & shunt mode)

Reference:

@XiaoliChan
Copy link
Contributor Author

Screenshot:

  • For the main server (normal mode):
    image

  • For shunt mode:
    image

@XiaoliChan
Copy link
Contributor Author

@coolsnowwolf Confirm this PR can do review ^^

Signed-off-by: Xiaoli Chan <[email protected]>
@zxlhhyccc
Copy link
Collaborator

zxlhhyccc commented Oct 25, 2023

@coolsnowwolf Confirm this PR can do review ^^

为何mosdns还是需要设置上游dns解析?建议直接使用mosdns通过yaml的配置文件来解析,通过yaml文件处理,可以更好的进行分流,此时就不需要在luci界面设置上游dns了!如果设置上游dns解析,与pdnsd之类的解析有何区别?这样子解析把mosdns的功能阉割了!
建议参考:https://github.com/stupidloud/helloworld/tree/tmp
此仓库就是直接使用yaml配置处理,效率高了很多!

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 25, 2023

为何mosdns还是需要设置上游dns解析?建议直接使用mosdns通过yaml的配置文件来解析,通过yaml文件处理,可以更好的进行分流,此时就不需要在luci界面设置上游dns了!如果设置上游dns解析,与pdnsd之类的解析有何区别?这样子解析把mosdns的功能阉割了! 建议参考:https://github.com/stupidloud/helloworld/tree/tmp 此仓库就是直接使用yaml配置处理,效率高了很多!

没能懂你的意思,关于yaml这一块之类的东西

此外,这个确实是做pdnsd的功能,但是pdnsd ipv6这块没有mosdns处理得好(对我而言)

另外,HelloWorld本身就不需要这么复杂的分流之类的,对于用户而言,我只需要出墙的站点走tcp dns查询,并且决定是否屏蔽出墙站点的ipv6,剩下的分流只需要交给HelloWorld自带的路由决定即可,高级用户而言,真需要复杂的请求处理,你可以填入第三方dns地址

@zxlhhyccc
Copy link
Collaborator

zxlhhyccc commented Oct 25, 2023

另外,HelloWorld本身就不需要这么复杂的分流之类的,对于用户而言,我只需要出墙的站点走tcp dns查询,并且决定是否屏蔽出墙站点的ipv6,剩下的分流只需要交给HelloWorld自带的路由决定即可,高级用户而言,真需要复杂的请求处理,你可以填入第三方dns地址

如果确实使用pdnsd功能,建议上游dns可以设置多个并直接读取到yaml里,以便通过yaml查询最快dns来解析。。。

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 25, 2023

如果确实使用pdnsd功能,建议上游dns可以设置多个并直接读取到yaml里,以便通过yaml查询最快dns来解析。。。

例子来一个,我这个只设置了一个dns,你的意思是mosdns会检测最快的dns?

我觉得只需要加上个缓存功能即可,而且每次切换节点的时候,都会重启mosdns,意味着不用担心有旧的缓存

@Beginner-Go Beginner-Go changed the title [DNS] Add mosdns support luci-app-ssr-plus: add mosdns support Oct 25, 2023
@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 26, 2023

更新日志:

  • 启用并发查询,加快DNS解析速度
  • 默认调用两个DNS(用于并发查询)
  • 使用 RFC 7766 新的 query pipelining 连接复用模式(MosDNS特性,经过本人实测,列表内的DNS均支持RFC 7766)
  • 启用缓存功能(没有本地存储化)luci-app-ssr-plus: add mosdns support #1298 (comment)

Reference:

Signed-off-by: Xiaoli Chan <[email protected]>
@zxlhhyccc
Copy link
Collaborator

zxlhhyccc commented Oct 26, 2023

如果确实使用pdnsd功能,建议上游dns可以设置多个并直接读取到yaml里,以便通过yaml查询最快dns来解析。。。

例子来一个,我这个只设置了一个dns,你的意思是mosdns会检测最快的dns?

我觉得只需要加上个缓存功能即可,而且每次切换节点的时候,都会重启mosdns,意味着不用担心有旧的缓存

比如上游dns设置如下:
image
然后将其读取到yaml里的upstreams:中,可以参考luci-app-mosdns中的模式

Signed-off-by: Xiaoli Chan <[email protected]>
@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 26, 2023

比如上游dns设置如下: image 然后将其读取到yaml里的upstreams:中,可以参考luci-app-mosdns中的模式

最新的commit已经有了,但是请记住,mosdns用在这里只做pdnsd的活,不做分流之类的,分流之类的应该让ssrp完成就好

Signed-off-by: Xiaoli Chan <[email protected]>
@XiaoliChan
Copy link
Contributor Author

@XiaoliChan 功能都正常了吗? 可以 merge 了吗?

我x86实测,没问题

@zxlhhyccc
Copy link
Collaborator

最新的commit已经有了,但是请记住,mosdns用在这里只做pdnsd的活,不做分流之类的,分流之类的应该让ssrp完成就好

使用mosdns做分流不是更好吗?

@XiaoliChan
Copy link
Contributor Author

使用mosdns做分流不是更好吗?

后续我再看看吧,现在其实已经很好使了,你说的分流应该是把chinadns的活也干了,后续应该只需要调整一下yaml就好了

@zxlhhyccc
Copy link
Collaborator

使用mosdns做分流不是更好吗?

后续我再看看吧,现在其实已经很好使了,你说的分流应该是把chinadns的活也干了,后续应该只需要调整一下yaml就好了

建议直接使用yaml来分流,可使用多个上游dns直接读取到yaml中处理解析。。。。

@XiaoliChan
Copy link
Contributor Author

建议直接使用yaml来分流,可使用多个上游dns直接读取到yaml中处理解析。。。。

没能懂你意思,现在已经有多个DNS了啊

你说的分流功能我还在看,后续应该会有,因为我要看怎么搭配ipset,目前ssrp已经有分流啊

或者你可以等这PR结束后你再fork一份弄个PR

@XiaoliChan
Copy link
Contributor Author

@zxlhhyccc 做了一下功课,大概懂你的意思了,无非就是自动添加ipset条目,这个功能我还在考虑是不是要加上,因为其实它也是依赖第三方数据库实现的,这样会与ssrp本身做重复活

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 27, 2023

@Beginner-Go 实测了几天,没问题,原有的功能都还在,没有动以前的功能,像 @zxlhhyccc 所说的,只是加多一个自动添加ipset的feature,这个还在考虑中

@zxlhhyccc
Copy link
Collaborator

@zxlhhyccc 做了一下功课,大概懂你的意思了,无非就是自动添加ipset条目,这个功能我还在考虑是不是要加上,因为其实它也是依赖第三方数据库实现的,这样会与ssrp本身做重复活

配置上游dns后到yaml添加后,yaml可以配置geoip数据库,并使用域名或IP数据库分流处理即可,不再需要ssrp去做分流。。。

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 27, 2023

配置上游dns后到yaml添加后,yaml可以配置geoip数据库,并使用域名或IP数据库分流处理即可,不再需要ssrp去做分流。。。

不是的,你只是追加你外国的IP到blacklist的ipset里面而已,实际上你还是要靠ssrp...

其实就是chinadns的活而已,并且“接管”DNSMASQ shadowsocksr#L204

实现这个功能的话,后续也许会考虑吧,只需要CV这个功能,匹配到大陆的IP就往china 的ipset里面加IP就好了,不过,用chinadns-ng 的话,其实并没有开启 "-A, -a" 选项,所以你说的功能还有待实验

@XiaoliChan
Copy link
Contributor Author

突然找到一处逻辑错误,等我修复了先XD

@zxlhhyccc
Copy link
Collaborator

在线等 好了说一声

你开始抄作业了?

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 27, 2023

@Beginner-Go OK了,忘记处理mosdns服务器那,把DNS地址加入到ipset列表

image

@XiaoliChan
Copy link
Contributor Author

XiaoliChan commented Oct 27, 2023

@XiaoliChan 可以 merge 了吗?

可以了

@zxlhhyccc 说的功能后续再看看怎么加进来吧

Signed-off-by: Xiaoli Chan <[email protected]>
@Beginner-Go Beginner-Go merged commit 7a3ab3a into fw876:master Oct 28, 2023
7 checks passed
@zxlhhyccc
Copy link
Collaborator

zxlhhyccc commented Oct 28, 2023

@XiaoliChan 可以 merge 了吗?

可以了

@zxlhhyccc 说的功能后续再看看怎么加进来吧

好的,如果加上由masdns进行分流,那就非常完美!

另外,还是同样问题,ssrp无论是mosdns还是pdnsd均出现dns泄漏,且非常严重。。。。,所以mosdns还是建议使用yaml分流。
image

@zxlhhyccc
Copy link
Collaborator

@XiaoliChan
Copy link
Contributor Author

@zxlhhyccc 请移步到issues

@XiaoliChan XiaoliChan deleted the mosdns-support branch November 1, 2023 05:08
Beginner-Go pushed a commit that referenced this pull request Nov 8, 2023
* [DNS] Add mosdns support

Signed-off-by: Xiaoli Chan

* [DNS] Add mosdns in luci app makefile

Signed-off-by: Xiaoli Chan

* [DNS] self review

Signed-off-by: Xiaoli Chan

* [DNS] enable MosDNS features

Signed-off-by: Xiaoli Chan

* [MosDNS] Less file

Signed-off-by: Xiaoli Chan

* [SSRP] Beginner: review I

Signed-off-by: Xiaoli Chan

* Fix dns issues

Signed-off-by: Xiaoli Chan
Beginner-Go pushed a commit that referenced this pull request Nov 8, 2023
* [DNS] Add mosdns support

Signed-off-by: Xiaoli Chan

* [DNS] Add mosdns in luci app makefile

Signed-off-by: Xiaoli Chan

* [DNS] self review

Signed-off-by: Xiaoli Chan

* [DNS] enable MosDNS features

Signed-off-by: Xiaoli Chan

* [MosDNS] Less file

Signed-off-by: Xiaoli Chan

* [SSRP] Beginner: review I

Signed-off-by: Xiaoli Chan

* Fix dns issues

Signed-off-by: Xiaoli Chan
Beginner-Go pushed a commit that referenced this pull request Nov 8, 2023
* [DNS] Add mosdns support

Signed-off-by: Xiaoli Chan

* [DNS] Add mosdns in luci app makefile

Signed-off-by: Xiaoli Chan

* [DNS] self review

Signed-off-by: Xiaoli Chan

* [DNS] enable MosDNS features

Signed-off-by: Xiaoli Chan

* [MosDNS] Less file

Signed-off-by: Xiaoli Chan

* [SSRP] Beginner: review I

Signed-off-by: Xiaoli Chan

* Fix dns issues

Signed-off-by: Xiaoli Chan
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

Successfully merging this pull request may close these issues.

3 participants