出于某些众所周知的原因,dns 服务器需要使用 ipset 支持域名分流,然鹅性能更好更强大的 unbound 不支持 ipset,一直只能忍受老旧的 dnsmasq。
当然也可以使用 unbound 做上游 dns 服务器,dnsmasq 做主 dns 负责 ipset 分流,但是那也太不简约了。 故,利用 5.1 假期给 unbound 增加了 ipset 支持。
已经向 unbound 提交了 PR,但是还没有合并入主分支,想尝鲜的同学可以先自行编译体验。 https://github.com/k9982874/unbound
1
li3p 2019-05-08 14:48:12 +08:00
赞一个,期待早日合入 master !
|
2
k9982874 OP @li3p unbound 的人已经 review 过了,他还要了解一下使用场景,至于什么时候合并入 master 还得看大佬什么时候有时间,国外的工作效率你懂的。
|
3
zhaibin18 2019-09-15 08:44:44 +08:00
|
4
k9982874 OP @zhaibin18 #3 肯定是可以匹配二级域名的呀
``` [router@router ~]$ dig zh.wikipedia.org ; <<>> DiG 9.14.5 <<>> zh.wikipedia.org ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16257 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 4096 ;; QUESTION SECTION: ;zh.wikipedia.org. IN A ;; ANSWER SECTION: zh.wikipedia.org. 3600 IN CNAME dyna.wikimedia.org. dyna.wikimedia.org. 3600 IN A 198.35.26.96 ;; Query time: 506 msec ;; SERVER: 127.0.0.1#53(127.0.0.1) ;; WHEN: Mon Sep 16 08:59:55 CST 2019 ;; MSG SIZE rcvd: 127 ``` |
5
zhaibin18 2019-10-01 01:40:36 +08:00
找到问题的所在了,不是匹配的问题,而是 CNAME 的问题,比如:
dig www.reddit.com ; <<>> DiG 9.11.3-1ubuntu1.9-Ubuntu <<>> www.reddit.com ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9095 ;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 0, ADDITIONAL: 1 ;; OPT PSEUDOSECTION: ; EDNS: version: 0, flags:; udp: 65494 ;; QUESTION SECTION: ;www.reddit.com. IN A ;; ANSWER SECTION: www.reddit.com. 186 IN CNAME reddit.map.fastly.net. reddit.map.fastly.net. 19 IN A 151.101.77.140 ;; Query time: 0 msec ;; SERVER: 127.0.0.53#53(127.0.0.53) ;; WHEN: Tue Oct 01 01:36:12 CST 2019 ;; MSG SIZE rcvd: 94 如果不在配置文件里写 local-zone: "fastly.net" ipset 151.101.77.140 这条记录是不会写到 ipset 里的 但是 dnsmasq 貌似可以,因为我最近将 ipset 有 dnsmasq 切换到 unboud 后才发现的以上问题。 |
7
k9982874 OP @zhaibin18 必须在配置文件中指明才会加入 ipset,这是 feater 哦,不然就全局走代理了,那样也不需要用 dns 分流了。
|
8
k9982874 OP featet -> feature
|
9
zhaibin18 2019-10-12 22:17:25 +08:00
如果是 A 记录的话是没问题的,但是如果是 CNAME 的话还是有点不方便,比如我想通过 ipset 访问 www.reddit.com ,但是因为记录返回的是 CNAME 没有加入的 ipset 里,所以就访问不了了。
|
11
k9982874 OP @zhaibin18 理解你的意思了。不过这个问题还是要通过手动添加配置解决。
毕竟无法追踪 fastly.net 的源头是哪,而且也可能与用户的本意出现差异(可能用户就是不想分流 fastly.net )。 |
12
wwbfred 2020-01-02 01:29:03 +08:00
@k9982874 当一个域名同时含有 CNAME 和 A 记录的时候,与 dnsmasq 不同,unbound 会向 forward 服务器重新查询 CNAME 的 A 记录,并舍弃初始域名的 A 记录.这就导致了若初始域名与 CNAME 的 A 记录不同,则会向客户端返回 CNAME 的 A 记录,并将初始域名的 A 记录添加进 ipset.这个确实是 feature 而不是 bug 么?
|
13
adoal 2021-06-14 16:21:16 +08:00
一年半过去了,没有下文了。为啥 dnsmasq 可以跟踪到源头而 unbound 不行呢?
|