smartdns
smartdns copied to clipboard
如何使用edns ecs -check-edns edns-client-subnet
需求应用场景 想尝试一下edns,-check-edns参数和edns-client-subnet参数都是必须指定的吗?edns-client-subnet如何指定?
建议的方案 无
设备信息 koolshare openwrt 2.37
server 114.114.114.114 -check-edns
edns-client-subnet 119.28.35.0/24
119.28.35.0/24
subnet是必须指定的吗?需要根据自己本地的或者代理的环境调整吗?国内国外需要分别指定吗?如果是套娃的话,有什么需要注意的。
不指定subnet时,smartdns会透传收到的dns查询中的edns信息。 原则上当直连的国外dns服务器和代理服务器不在同一地区时才需要增加edns信息。如果国外dns服务器也经代理访问,不需要增加edns信息。 国内一般不需要增加edns信息,除非是多运营商wan线路
不指定subnet时,smartdns会透传收到的dns查询中的edns信息。 原则上当直连的国外dns服务器和代理服务器不在同一地区时才需要增加edns信息。如果国外dns服务器也经代理访问,不需要增加edns信息。 国内一般不需要增加edns信息,除非是多运营商wan线路
那就是说,在国内的科学方案中,无论国内国外,大部分人是没有edns的需求的。我在套娃的最上游环节添加了edns,应该也没有坏处吧。
是的。。。大多数情况下不需要edns。可以看看其他issue下的相关场景是什么样的
我在套娃的最上游环节添加了edns,应该也没有坏处吧。
可能有负面作用:1. 对于不支持edns的上游,会导致查询无结果。2. 如果区域配置不正确,可能会获得负面优化的结果
-check-edns 似乎不起作用?试了下无论加不加这个参数都会把 edns-client-subnet 传到上游服务器 @pymumu
check-edns要加编译宏启用
check-edns要加编译宏启用
不太懂,是编译的时候需要做特殊设置还是在使用的时候需要用特殊的命令开启呢?
不太懂,是编译的时候需要做特殊设置还是在使用的时候需要用特殊的命令开启呢?
就是说这个功能默认是不开启的,要开启需要改代码然后编译或修改编译时脚本。昨天叫action干了一份,可以试试(https://github.com/PikuZheng/smartdns/actions/runs/3121094544 页面右下方 Artifacts,下载后解压zip得到ipk
不太懂,是编译的时候需要做特殊设置还是在使用的时候需要用特殊的命令开启呢?
就是说这个功能默认是不开启的,要开启需要改代码然后编译或修改编译时脚本。昨天叫action干了一份,可以试试(https://github.com/PikuZheng/smartdns/actions/runs/3121094544 页面右下方 Artifacts,下载后解压zip得到ipk
我原来在选项里面加 -check-edns加了个寂寞呀。
不太懂,是编译的时候需要做特殊设置还是在使用的时候需要用特殊的命令开启呢?
就是说这个功能默认是不开启的,要开启需要改代码然后编译或修改编译时脚本。昨天叫action干了一份,可以试试(https://github.com/PikuZheng/smartdns/actions/runs/3121094544 页面右下方 Artifacts,下载后解压zip得到ipk
具体怎么修改使用啊
check-edns要加编译宏启用
如何启用 能讲的具体点吗
如何启用 能讲的具体点吗
我是这么改的 https://github.com/PikuZheng/smartdns/commit/effdd66c4e3b23caca1c7687bbac10827f40fd3b
怎么能验证edns生效了呢?
我用的kdig,会显示上游返回的edns消息
root@OpenWrt:/etc/smartdns# kdig message.bilibili.com @127.0.0.1:53
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 8525
;; Flags: qr rd ra; QUERY: 1; ANSWER: 7; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR
;; CLIENT-SUBNET: 119.........../32/24 <------------此处是我公网ip,说明没有附加edns
;; QUESTION SECTION:
;; message.bilibili.com. IN A
;; ANSWER SECTION:
message.bilibili.com. 8 IN CNAME a.w.bilicdn1.com.
a.w.bilicdn1.com. 8 IN A 218.60.18.16
a.w.bilicdn1.com. 8 IN A 218.60.18.17
a.w.bilicdn1.com. 8 IN A 218.60.18.13
a.w.bilicdn1.com. 8 IN A 218.60.18.18
a.w.bilicdn1.com. 8 IN A 218.60.18.14
a.w.bilicdn1.com. 8 IN A 218.60.18.15
;; Received 303 B
;; Time 2022-09-26 16:13:50 +08
;; From 127.0.0.1@53(UDP) in 0.2 ms
root@OpenWrt:/etc/smartdns# kdig www.google.co.jp
;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58787
;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION:
;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR
;; CLIENT-SUBNET: 103........../24/0 <------------此处是配置文件中的 edns-client-subnet,说明附加了edns且上游正确识别并回复了
;; QUESTION SECTION:
;; www.google.co.jp. IN A
;; ANSWER SECTION:
www.google.co.jp. 10 IN A 216.58.220.131
;; Received 72 B
;; Time 2022-09-26 18:48:37 +08
;; From 127.0.0.1@53(UDP) in 128.3 ms
怎么能验证edns生效了呢?
我用的kdig,会显示上游返回的edns消息
root@OpenWrt:/etc/smartdns# kdig message.bilibili.com @127.0.0.1:53 ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 8525 ;; Flags: qr rd ra; QUERY: 1; ANSWER: 7; AUTHORITY: 0; ADDITIONAL: 1 ;; EDNS PSEUDOSECTION: ;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR ;; CLIENT-SUBNET: 119.........../32/24 <------------此处是我公网ip,说明没有附加edns ;; QUESTION SECTION: ;; message.bilibili.com. IN A ;; ANSWER SECTION: message.bilibili.com. 8 IN CNAME a.w.bilicdn1.com. a.w.bilicdn1.com. 8 IN A 218.60.18.16 a.w.bilicdn1.com. 8 IN A 218.60.18.17 a.w.bilicdn1.com. 8 IN A 218.60.18.13 a.w.bilicdn1.com. 8 IN A 218.60.18.18 a.w.bilicdn1.com. 8 IN A 218.60.18.14 a.w.bilicdn1.com. 8 IN A 218.60.18.15 ;; Received 303 B ;; Time 2022-09-26 16:13:50 +08 ;; From 127.0.0.1@53(UDP) in 0.2 ms root@OpenWrt:/etc/smartdns# kdig www.google.co.jp ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 58787 ;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1 ;; EDNS PSEUDOSECTION: ;; Version: 0; flags: ; UDP size: 4096 B; ext-rcode: NOERROR ;; CLIENT-SUBNET: 103........../24/0 <------------此处是配置文件中的 edns-client-subnet,说明附加了edns且上游正确识别并回复了 ;; QUESTION SECTION: ;; www.google.co.jp. IN A ;; ANSWER SECTION: www.google.co.jp. 10 IN A 216.58.220.131 ;; Received 72 B ;; Time 2022-09-26 18:48:37 +08 ;; From 127.0.0.1@53(UDP) in 128.3 ms
我这也算成功了吧?
root@Openwrt:~# kdig -ash: kdig: not found root@Openwrt:~# dig baidu.com
; <<>> DiG 9.17.11 <<>> baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 50984 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;baidu.com. IN A
;; ANSWER SECTION: baidu.com. 3 IN A 110.242.68.66 baidu.com. 3 IN A 39.156.66.10
;; Query time: 20 msec ;; SERVER: 10.10.10.1#53(10.10.10.1) (UDP) ;; WHEN: Mon Sep 26 22:14:05 CST 2022 ;; MSG SIZE rcvd: 70
root@Openwrt:~# dig message.bilibili.com
; <<>> DiG 9.17.11 <<>> message.bilibili.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 64165 ;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;message.bilibili.com. IN A
;; ANSWER SECTION: message.bilibili.com. 3 IN CNAME a.w.bilicdn1.com. a.w.bilicdn1.com. 3 IN A 61.156.196.2 a.w.bilicdn1.com. 3 IN A 61.156.196.3 a.w.bilicdn1.com. 3 IN A 61.156.196.4 a.w.bilicdn1.com. 3 IN A 61.156.196.5 a.w.bilicdn1.com. 3 IN A 61.156.196.6 a.w.bilicdn1.com. 3 IN A 61.156.196.7 a.w.bilicdn1.com. 3 IN A 61.156.196.151 a.w.bilicdn1.com. 3 IN A 61.156.196.152 a.w.bilicdn1.com. 3 IN A 61.156.196.153 a.w.bilicdn1.com. 3 IN A 61.156.196.154 a.w.bilicdn1.com. 3 IN A 61.156.196.155
;; Query time: 4 msec ;; SERVER: 10.10.10.1#53(10.10.10.1) (UDP) ;; WHEN: Mon Sep 26 22:16:28 CST 2022 ;; MSG SIZE rcvd: 252
我这也算成功了吧?
缺乏预期推理,看不出来。另外dig似乎不提供edns消息详情
openwrt可以opkg install knot-dig然后就有kdig了
我这也算成功了吧?
缺乏预期推理,看不出来。另外dig似乎不提供edns消息详情 openwrt可以
opkg install knot-dig然后就有kdig了
大佬再帮忙看看呢?我上游dns国内加了check edns参数,国外没加。
root@Openwrt:~# dig baidu.com
; <<>> DiG 9.17.11 <<>> baidu.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 42273 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 1232 ;; QUESTION SECTION: ;baidu.com. IN A
;; ANSWER SECTION: baidu.com. 10 IN A 110.242.68.66 baidu.com. 10 IN A 39.156.66.10
;; Query time: 0 msec ;; SERVER: 10.10.10.1#53(10.10.10.1) (UDP) ;; WHEN: Tue Sep 27 10:30:06 CST 2022 ;; MSG SIZE rcvd: 70
root@Openwrt:~# docker run --rm cznic/knot kdig @10.10.10.1 baidu.com SOA +dnssec ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 26563 ;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION: ;; Version: 0; flags: do; UDP size: 4096 B; ext-rcode: NOERROR
;; QUESTION SECTION: ;; baidu.com. IN SOA
;; ANSWER SECTION: baidu.com. 10 IN SOA dns.baidu.com. sa.baidu.com. 2012145814 300 300 2592000 7200
;; Received 81 B ;; Time 2022-09-27 02:30:16 UTC ;; From 10.10.10.1@53(UDP) in 0.7 ms root@Openwrt:~# docker run --rm cznic/knot kdig @10.10.10.1 google.com SOA +dnssec ;; ->>HEADER<<- opcode: QUERY; status: NOERROR; id: 17010 ;; Flags: qr rd ra; QUERY: 1; ANSWER: 1; AUTHORITY: 0; ADDITIONAL: 1
;; EDNS PSEUDOSECTION: ;; Version: 0; flags: do; UDP size: 4096 B; ext-rcode: NOERROR
;; QUESTION SECTION: ;; google.com. IN SOA
;; ANSWER SECTION: google.com. 3 IN SOA ns1.google.com. dns-admin.google.com. 476847761 900 900 1800 60
;; Received 89 B ;; Time 2022-09-27 02:30:32 UTC ;; From 10.10.10.1@53(UDP) in 57.7 ms root@Openwrt:~#
-check-edns只适用国外dns,无需配合ecs_edns使用。
-check-edns只适用国外dns,无需配合ecs_edns使用。
大佬,能详细说说吗,是不是目前smartdns不做任何特殊设置,就可以透传edns的dns请求?那么国外的dns加了-check-edns,有什么用处呢,是不是必须要配置subnet?毕竟dns肯定是通过代理服务器查询的。
那就不要用-check-edns参数,smartdns对于带edns的查询默认是透传到上游的,不用特殊配置。
大佬,能详细说说吗,是不是目前smartdns不做任何特殊设置,就可以透传edns的dns请求?那么国外的dns加了-check-edns,有什么用处呢,是不是必须要配置subnet?毕竟dns肯定是通过代理服务器查询的。
这正是我启用这个参数的原因。之前我一直用自建上游,上游的上游(谷歌)获取到请求的ip即是vps的ip,会据此做出优化。到这里一切都好好的,直到前几天我跑了一下apk upgrade,然后发现上游开始透传edns,上游的上游(谷歌)获取到请求的ip是联通的。这就不妙了。 于是在smartdns上加了 edns-client-subnet 指向vps所在ip段,并用 -check-edns 指派给这个vps的上游。然后就更不妙了,国内的dns上游也开始给我国外的结果了。这时我才意识到可能是 -check-edns 不起作用。
但实际体验下来对于国外的网站加不加 edns-client-subnet 区别不大。比如谷歌无论edns是联通还是vps,给我的解析都是谷歌印度数据中心。但是加了国外地址的 edns-client-subnet 对国内网站影响很大,比如微信会解析到马来西亚,苹果会解析到日本。
我加这个参数是因为要实现个微信的特殊设置。所以如果不清楚原理或不明确需求,建议不要启用 edns-client-subnet。
不指定subnet时,smartdns会透传收到的dns查询中的edns信息。 原则上当直连的国外dns服务器和代理服务器不在同一地区时才需要增加edns信息。如果国外dns服务器也经代理访问,不需要增加edns信息。 国内一般不需要增加edns信息,除非是多运营商wan线路
多运营商线路的情况 每条线路配置运营商的dns不就可以了 配合ipset和mwan分流 个人感觉多wan情况下测速更靠谱点
每条线路配置运营商的dns
污染警告 :stuck_out_tongue_closed_eyes:
每条线路配置运营商的dns
污染警告 😝
回复的太快了 我还没编辑完 感觉edns更偏向公网应用 smartdns是偏向内网应用
回复的太快了 我还没编辑完 感觉edns更偏向公网应用 smartdns是偏向内网应用
您那启用这个开关吗?在考虑要不要给 github action 全加上。我自己的环境,上游自架可以完全无视edns
回复的太快了 我还没编辑完 感觉edns更偏向公网应用 smartdns是偏向内网应用
您那启用这个开关吗?在考虑要不要给 github action 全加上。我自己的环境,上游自架可以完全无视edns
已经根据您的patch修改源码 等会编译一下试试
那就不要用-check-edns参数,smartdns对于带edns的查询默认是透传到上游的,不用特殊配置。
花了亿点时间才理解 check-edns 和 edns-client-subnet,我的需求是针对不同的上游服务器配置不同的 edns-client-subnet,或不附加 @pymumu