Closed ChenWenBrian closed 6 years ago
不太可能会考虑这样的问题,设置 DNS server 也不推荐使用,原本只是为了解决在 android 上遇到的不使用操作系统默认 DNS 的问题,之后会将这个配置注释以让大多人不需要感知。
我个人不推荐在程序里加入过多和项目本身无关的功能,能够通过其他工具或者方式解决的问题就不要全都放在一起。你如果有对 DNS 解析的特殊需求可以考虑借助于其他工具解决。
那可否考虑将目前的DNS_SERVER的设置作为仅与frps端连接前的域名解析使用?
这样的修改是一件很奇怪的事情,我建议还是不要使用这个功能,直接使用操作系统的 DNS 解析。
@ChenWenBrian 你不妨把你的网络环境具体的说下,看看大家有什么好办法了
Hi @xiaoyell,抱歉回复的晚了,这几天一直再尝试各种解决方案,虽然问题有解决,还是期望FRP本身能支持。
网络环境可以见上图。 目前主要的问题就是阿里的DDNS解析和公司内网的DNS问题。阿里的DDNS最低TTL是600,也就是10分钟才会更新,而公司的DNS更变态,要缓存半小时。而从公司内网FRPC去连接家里的FRPS,需要用到DDNS解析。当家里路由器的IP变更时,FRPC会重新连接,我希望这个时间尽可能的短。如果我指定DNS为阿里的,则10分钟内必然连接成功,但是问题是内网的http_proxy和socks_proxy的解析就全部出错;如果我指定DNS为内网的,则每次耗时在30分钟左右,好处是可以解析内网域名。
我个人想到的几种方案:
个人比较倾向第三种方案,增强FRPC的扩展能力,这样大家再遇到类似需求的时候,可以由用户自行扩展一些简单的功能,希望各位大神能考虑下,谢谢。
写了个脚本动态监控阿里的域名解析变化,并更新本地hosts文件。然后frpc直接使用动态域名去连接家里的服务器就可以了,无需再设置dns服务器。 脚本放github了,供有同样需求的同学参考 AliDDNS
目前在frpc里可以设置整体的DNS server,但是该设置也会同时影响到其他端口的服务,例如HTTP和Socks5的代理。
遇到的问题: frps的服务器地址是通过公网的动态域名解析的,公司内网的网关DNS虽然也能解析,但是每次更换IP后内网DNS会缓存很久之前的解析结果(约半小时);而公网如223.6.6.6(阿里的)、8.8.8.8往往只缓存10分钟,可以保证frpc更快的连接到新IP。 于是我在frpc上设置了dns_server,但是发现这样做后,HTTP代理都不能正常解析内网域名了,因为所有的域名解析都是公网的DNS在做,而公网DNS没法知道内网的域名情况。
希望能有如下的DNS独立设置项: