OpenWRT 分流DNS的设置

  • 文章出处:

    OpenWRT 分流DNS的设置 · Issue #57 · luckyyyyy/blog

    我自己根据实际需要基于上方的链接内容进行了相关补充

OpenWRT配置IPv6的方法参考如下文章:

OpenWRT IPv6 NAT配置

目前还是有许多人喜欢设置DNS,虽然会浪费一些转发性能,但如果明白其中的链路关系,合理设置后,还是能起到不错的效果的。同时也把正确的设置方式告诉大家。

同时请注意,删除你电脑,手机上的DNS(不要设置任何DNS)

`建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户
建议小白用户使用 Clash 更稳定且方便 此教程仅针对有特殊需求的用户

不是非常了解DNS,请不要设置,避免各种问题,作者本人已更换Clash,非常稳定。
同时作者建议使用 shellclash 如需要x86稳定固件 不喜欢折腾的 可以联系我
telegram: eval0xFFFD20`

涉及到的组件

  • Passwall
  • AdGuard Home(可选)
  • Dnsmasq (无需进行任何设置)
  • SmartDNS (分流+主DNS服务器)

AdGuard Home(可选)

主要是起到记录的作用,对需要查看记录的同学有帮助,至于DNS广告屏蔽,虽然有用但会误伤,慎重选择。同时由于记录文件较大,请一定要注意把记录时间改小,或者设置到有足够空间的目录中,否则会导致时间久了将磁盘撑满

  • 配置上游DNS为如下部分:

    127.0.0.1:6053
    [::1]:6053

  • 设置重定向53端口到AdGuardHome,如果使用了lean大佬的固件,请在防火墙,自定义规则中注释掉已添加的53端口重定向规则(大部分人都使用了lean的固件)

防火墙规则备份:

iptables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p udp --dport 53 -j REDIRECT --to-ports 53
[ -n "$(command -v ip6tables)" ] && ip6tables -t nat -A PREROUTING -p tcp --dport 53 -j REDIRECT --to-ports 53
iptables -t nat -I POSTROUTING -o eth0 -j MASQUERADE

注意:

  • 设置了重定向后,所有DNS结果都将应答非权威记录,如果不了解DNS协议请无视,这条并不会影响什么。
  • 在接口LAN → 自定义DNS服务器地址处,填写127.0.0.1。
  • 在接口LAN → 修改 → 下方的高级设置中,设定DHCP附加选项 6,192.168.2.1,保存并应用即可。

SmartDNS

主要用于分流和DNS查询,国外走 Cloudflare DNS ove TLS/HTTPS ,国内延迟优先(但可能影响P2P下载,实测实际还好)。

  • 启用第一组服务器,选择作为dnsmasq上游,IPV6服务器√(需要先看下DHCP/DNS → 高级设置中禁止解析 IPv6 DNS 记录这一项一定要取消勾选,否则无效),双栈IP优选√,域名预加载√,过期缓存服务√。缓存大小尽量设置大一些(我这里设置的是1024)
  • 启用第二组服务器,端口6553,跳过测速√,跳过address规则√,跳过Nameserver规则√(非常重要,否则会死循环),跳过ipset规则√,跳过address SOA(#)规则√,跳过双栈优选√,跳过cache√,其余设置保持默认。
  • 配置上游服务器,部分设置要填写后点编辑才能看到
    • 国内上游填写你的运营商,额外填写一些国内常用的,例如阿里云,DNSPod等等,可以参考文末的配置,分组信息填写cn。
    • 国外上游填写1.1.1.1端口853,协议填写tls,分组信息填写passwall,额外的服务参数填写 -exclude-default-group
  • 不指定端口的default端口:udp 53 tcp 53 tls 853 https 443

Passwall

  • DNS分流 smartdns
  • 国内分组名 cn
  • 过滤模式 通过UDP请求DNS
  • 远程DNS 127.0.0.1:6553(填写smartdns的第二DNS端口)

Dnsmasq(DHCP/DNS)

  • DHCP/DNS设置中添加DNS转发127.0.0.1:6053(端口为smartdns监听的端口)
  • 高级设置中将DNS查询缓存的大小设置为0(因为DNS转发已经使用了)
  • 如果需要使用域名访问内网服务的话,将重绑定保护关闭(这是一个dnsmasq的保护策略,但是会阻止部分域名访问内网服务,详见链接:https://blog.csdn.net/qq_36348899/article/details/119297854)

重点疑难解答

  1. (不推荐)你到底需要不需要openwrt自带的dnsmasq,如果不需要,请更改dnsmasq的端口
  2. (推荐)如果需要使用dnsmasq,那么注意Lean固件里防火墙53端口优先的指令,注销防火墙的53端口优先指令(ipv4的和ipv6的都注释),然后配置AdGuardHome里的重定向服务,参考上部分Adguard Home配置

一些配置

smartdns 部分直接 vim 编辑 /etc/config/smartdns 照抄即可,无需手动设置,配置完记得界面上点击保存应用,或者uci命令刷新配置,我里面有杭州电信的DNS服务器,不是杭州的记得自己改掉,否则可能有负面效果。

config smartdns
	option server_name 'smartdns'
	option port '6053'
	option tcp_server '1'
	option seconddns_tcp_server '1'
	option coredump '0'
	option seconddns_server_group 'passwall'
	option seconddns_no_speed_check '1'
	option seconddns_no_dualstack_selection '1'
	option prefetch_domain '1'
	option ipv6_server '0'
	option force_aaaa_soa '1'
	option dualstack_ip_selection '1'
	option serve_expired '1'
	option redirect 'dnsmasq-upstream'
	option rr_ttl_min '300'
	option seconddns_port '6553'
	option seconddns_enabled '1'
	option seconddns_no_rule_nameserver '1'
	option seconddns_no_rule_addr '0'
	option seconddns_no_rule_soa '0'
	option seconddns_no_rule_ipset '0'
	option cache_size '300'
	option seconddns_no_cache '1'
	option enabled '1'
	list old_redirect 'dnsmasq-upstream'
	list old_port '6053'
	list old_enabled '1'

config server
	option name 'aliyun'
	option ip '223.5.5.5'
	option port '53'
	option type 'udp'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option name '114'
	option ip '114.114.114.114'
	option port '53'
	option type 'udp'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option enabled '1'
	option type 'udp'
	option name 'Mobile'
	option ip '211.137.241.34'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

config server
	option enabled '1'
	option type 'udp'
	option name 'Mobile2'
	option ip '211.137.241.35'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

config server
	option name 'baidu'
	option ip '180.76.76.76'
	option port '53'
	option type 'udp'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option type 'udp'
	option port '53'
	option name 'DNSPod'
	option ip '119.29.29.29'
	option blacklist_ip '0'
	option server_group 'cn'
	option enabled '1'

config server
	option enabled '1'
	option name 'cloud'
	option ip '1.1.1.1'
	option port '853'
	option type 'tls'
	option server_group 'passwall'
	option blacklist_ip '0'
	option addition_arg ' -exclude-default-group'

config server
	option enabled '1'
	option type 'udp'
	option name 'CNNIC SDNS'
	option ip '1.2.4.8'
	option port '53'
	option server_group 'cn'
	option blacklist_ip '0'

如何验证?

登录路由器 使用 dig 或者 nslookup 检查下各端口的DNS以及分流情况

nslookup www.taobao.com 127.0.0.1:7913 返回的是节点对应淘宝最快的IP
nslookup www.taobao.com 127.0.0.1:6053 返回的是国内最快的IP
nslookup www.taobao.com 应该是国内

注:如果手动查询规则列表内的域名,使用端口6053,然后匹配规则,转发给7913,然后被缓存住。(国外因为跳过测速,所以多个域名是正确的)

你可能感兴趣的:(程序设计,网络配置,OpenWRT,网络,服务器,运维)