早先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服务还是很有必要的。
解决不能输入 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
里检查下是否配置正确。
Smartdns监听53端口,避免在Homeproxy里输入端口
可以用 dig www.google.com @127.0.0.2
检查有没有问题。没有问题后,到Homeproxy 客户端设置-DNS服务器
里设置本地DNS服务器127.0.0.2,再设为默认DNS服务器。这样Smartdns 就成为了Homeproxy 的上游主服务器了,可以愉快的在SmartDNS进行各种个性化设置了。
技术不断升级,请注意文章时效性。
本站文章,欢迎转发。转载请注明出处:https://www.bandwh.com/net/2307.html