解决HOMEPROXY不支持带端口的本地DNS服务器的问题

瓦工BIGGERBOX-20-1024

HOMEPROXY不支持带端口的本地DNS服务器的解决,及修改监听地址让Smartdns作为HOMEPROXY上游本地服务器。

早先HOMEPROXY是支持直接输入ip+端口 方式自定义本地上游DNS服务器的。随着升级现在HOMEPROXY输入 ip+端口 的自定义DNS就会报错,无法保存,甚至输入tcp://8.8.8.8 都不行。Sing-box 内置了dns解析服务,Homeproxy 也沿用的sing-box的设计,但是对上游带端口的自定义DNS服务不是很友好,对使用Smartdns等专业DNS服务程序有一定的歧视。但sing-box不是专业的dns服务程序,一些高级需求无法很好的解决。比如某站的emby服务,他们采用的是dns轮询解析,为了均衡服务器使用,ttl设置的较短,一会解析到美国,一会儿解析到韩国,一会解析到新加坡,导致挂梯也不能完美的看完一集,老是不断中断后重连。Smartdns就可以将域名解析为固定IP。还有通过nftset实施域名黑白名单等,sing-box内置的DNS服务也无法处理,因此自定义DNS服务还是很有必要的。

解决HOMEPROXY不支持带端口的本地DNS服务器的问题

解决不能输入 ip+端口 方式自定义上游DNS服务方法有多种,一是直接修改配置文件,输入自定义的本地dns服务器,绕开 client.js 对格式的检查。方法如下:打开/etc/config/homeproxy 里面直接修改。 也就是 DNS服务里输入正常的IP,如8.8.8.8,再到/etc/config/homeproxy 将它改为 127.0.0.1:5553

如果你和我一样使用Smartdns,我们可以修改程序,让Smartdns监听127.0.0.2:53 环回本地端口,让Dnsmasq还是监听127.0.0.1:53从而避免冲突。这样处理就可以在Homeproxy直接输入上游本地服务器127.0.0.2而无需输入端口号。不影响Smartdns对国内外域名分流解析,国内域名可以返回ipv6,本站前期文章有介绍。修改方法也很简单:

修改 /etc/init.d/smartdns 文件,让其将监听127.0.0.2,在约490行conf_append_bind() 函数里,将ADDR="[::]"改为ADDR="127.0.0.2"。503 行的 ADDR=""也可以修改为 ADDR="127.0.0.2",如果不修改这行的话需要设置在Smartdns的 高级设置里启用 IPV6服务器 。为简化代码修改,我已启用本地IPV6 DNS服务,所以可以在shell里输入下列代码就实现。

sed -i 's/ADDR="\[::\]"/ADDR="127.0.0.2"/' /etc/init.d/smartdns

再到约826 行,注释掉 [ "$port" = "53" ] && set_main_dns ,也就是在前面加个 # 即可。目的是不让Smartdns自动设为路由器主DNS服务器。可以在shell里面输入

sed -i '/\[ "\$port" = "53" \] && set_main_dns/s/^/\t#/' /etc/init.d/smartdns

做完这些操作后,在Smartdns 设置-常规设置-本地端口 输入53, 重启下Smartdns,Smartdns就监听127.0.0.2:53端口了。可以到/var/etc/smartdns/smartdns.conf里检查下是否配置正确。
解决HOMEPROXY不支持带端口的本地DNS服务器的问题

Smartdns监听53端口,避免在Homeproxy里输入端口

解决HOMEPROXY不支持带端口的本地DNS服务器的问题

可以用 dig www.google.com @127.0.0.2 检查有没有问题。没有问题后,到Homeproxy 客户端设置-DNS服务器里设置本地DNS服务器127.0.0.2,再设为默认DNS服务器。这样Smartdns 就成为了Homeproxy 的上游主服务器了,可以愉快的在SmartDNS进行各种个性化设置了。解决HOMEPROXY不支持带端口的本地DNS服务器的问题

技术不断升级,请注意文章时效性。
本站文章,欢迎转发。转载请注明出处:https://www.bandwh.com/net/2307.html

(0)

BandWh.com 折腾之路●一起折腾

上一篇 2025年1月8日 13:54
下一篇 2023年4月25日 15:53
瓦工BIGGERBOX-20-1024

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

请文明评论!