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

求问一个设置通过代理请求远程dns的问题 #1372

Closed
chris7395328 opened this issue Apr 11, 2023 · 7 comments
Closed

求问一个设置通过代理请求远程dns的问题 #1372

chris7395328 opened this issue Apr 11, 2023 · 7 comments

Comments

@chris7395328
Copy link

我的应用场景是这样的,openwrt开启ipv6,使用openclash代理,然后我需要双栈ip优选和屏蔽代理网站的ipv6功能,因此我用了smartdns的分流功能,dns劫持为smartdns默认端口,另外开一个专门的端口5335,上游设置为cf的dns,加上-proxy,指向openclash的sock5,我的理解是这样就是通过代理去请求dns,然后openclash填写唯一dns上游是smartdns的5335,

然后因为5335这个上游dns是通过sock5代理的,我的节点是填域名(cf优选),所以openclash没办法通过5335这个唯一dns)得到我节点的ip,因为这个dns是通过我节点去请求的,所以就等于我没法使用代理了,我只能把5335的上有服务器取消代理才行,但是这样我就不能远程请求dns了。

请问这种情况我的最优选择是怎么做?需求就是想用smart的分流,又想通过现有的节点去实现外网请求远程dns

@pymumu
Copy link
Owner

pymumu commented Apr 11, 2023

https://pymumu.github.io/smartdns/config/forwarding-with-ipset/

看这里,不需要第二dns

@chris7395328
Copy link
Author

https://pymumu.github.io/smartdns/config/forwarding-with-ipset/

看这里,不需要第二dns

意思是直接用smartdns内部的ip域名分流来定那些ip去用代理服务器的dns
么,然后openclash那边就不设置smartdns作为上游dns了,恢复回它原本的dns设置么

@chris7395328
Copy link
Author

我是不是可以这样理解,我在5335端口设置的第二dns上游服务器本来就只有谷歌的,这个请求本身就会被翻墙插件识别为走代理,那么我不设置-proxy其实也是可以的,这个请求还是通过远程服务器请求的

@PikuZheng
Copy link
Contributor

有一个变通的方法,是将cf的域名填到smartdns的上游中并且单独指定一个组且从默认组中排除。这时cf这个域名由smartdns的bootstrap配置项负责解析并缓存,其他软件就可以通过smartdns拿到这个解析结果,且smartdns不会真正的使用这个cf域名作为上游。

@PikuZheng
Copy link
Contributor

也可能我没完全理解,总觉得楼主的设置有些绕圈

@pymumu
Copy link
Owner

pymumu commented Apr 11, 2023

openwrt的话可以直接在界面配置。

# 分组域名查询使用的DNS服务器,服务器通过socks代理请求。
server 8.8.8.8 -proxy socks -group oversea -exclude-default-group
proxy-server socks5://192.168.1.1:1080 -name socks

# 分组域名列表,以及对应规则设置。
domain-set -name domain-list -file /path/to/domain.list
domain-rules /domain-set:domain-list/ -c none -address #6 -nameserver oversea

上述IP地址换成实际的, /path/to/domain.list配置要分流的域名。
其他配置按照国内配置即可。
第二DNS不是必须,不清楚用法,建议就不用。

仔细看我给你那个页面的说明吧。

@chris7395328
Copy link
Author

chris7395328 commented Apr 11, 2023

openwrt的话可以直接在界面配置。

# 分组域名查询使用的DNS服务器,服务器通过socks代理请求。
server 8.8.8.8 -proxy socks -group oversea -exclude-default-group
proxy-server socks5://192.168.1.1:1080 -name socks

# 分组域名列表,以及对应规则设置。
domain-set -name domain-list -file /path/to/domain.list
domain-rules /domain-set:domain-list/ -c none -address #6 -nameserver oversea

上述IP地址换成实际的, /path/to/domain.list配置要分流的域名。 其他配置按照国内配置即可。 第二DNS不是必须,不清楚用法,建议就不用。

仔细看我给你那个页面的说明吧。

谢谢,我大概理解了。这个分组域名就是直接把需要代理的域名写进列表,代理插件关闭dns功能只做ip代理,我看了下好像passwall是有直接把列表导进smartdns的功能比较方便,openclash好像没有,有什么方法可以把oplash的分流规则导进smartclash么

这个是我目前的设置

bind :6153  -group cn
bind :5335  -group fq_dns -no-speed-check -no-cache -force-aaaa-soa

proxy-server socks5://Clash:xxx@127.0.0.1:7891 -name socks5
# proxy-server socks5://127.0.0.1:1080 -name socks5

domain-rules /我的优选域名/ -c none -address #6 -nameserver cn

server 223.5.5.6 -group cn
server 119.29.29.29  -group cn 
server 114.114.114.114  -group cn -check-edns

server-tls 1dot1dot1dot1.cloudflare-dns.com -group fq_dns -exclude-default-group -proxy socks5

把我的代理优选域名写进了域名规则,用直连dns来解析,目前已经实现了最初的需求,不过就是如你所说的用了第二dns服务器,还是有些绕,另外一个问题是,因为clash用了smart做解析所以得到的都是ip,就用不了clash本身配置的域名分流了,只能匹配到ip规则,这个有什么好的解决方法么

@pymumu pymumu closed this as completed Feb 8, 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