5.1 劳动成果 - 给 unbound 增加 ipset 支持 - V2EX
爱意满满的作品展示区。
k9982874

5.1 劳动成果 - 给 unbound 增加 ipset 支持

  •  
  •   k9982874 May 6, 2019 4846 views
    This topic created in 2572 days ago, the information mentioned may be changed or developed.

    出于某些众所周知的原因,dns 服务器需要使用 ipset 支持域名分流,然鹅性能更好更强大的 unbound 不支持 ipset,一直只能忍受老旧的 dnsmasq。

    当然也可以使用 unbound 做上游 dns 服务器,dnsmasq 做主 dns 负责 ipset 分流,但是那也太不简约了。 故,利用 5.1 假期给 unbound 增加了 ipset 支持。

    已经向 unbound 提交了 PR,但是还没有合并入主分支,想尝鲜的同学可以先自行编译体验。 https://github.com/k9982874/unbound

    13 replies    2021-06-14 16:21:16 +08:00
    li3p
        1
    li3p  
       May 8, 2019
    赞一个,期待早日合入 master !
    k9982874
        2
    k9982874  
    OP
       May 9, 2019 via iPhone
    @li3p unbound 的人已经 review 过了,他还要了解一下使用场景,至于什么时候合并入 master 还得看大佬什么时候有时间,国外的工作效率你懂的。
    zhaibin18
        3
    zhaibin18  
       Sep 15, 2019
    不能匹配二级域名,比如配置文件里写
    local-zone: "wikipedia.org" ipset
    但是无法匹配 zh.wikipedia.org
    k9982874
        4
    k9982874  
    OP
       Sep 16, 2019
    @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
    ```
    zhaibin18
        5
    zhaibin18  
       Oct 1, 2019
    找到问题的所在了,不是匹配的问题,而是 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

    但是 dnsmasq 貌似可以,因为我最近将 ipset 有 dnsmasq 切换到 unboud 后才发现的以上问题。
    zhaibin18
        6
    zhaibin18  
       Oct 12, 2019
    @k9982874 能否再来个 PR,多谢了哦!
    k9982874
        7
    k9982874  
    OP
       Oct 12, 2019 via iPhone
    @zhaibin18 必须在配置文件中指明才会加入 ipset,这是 feater 哦,不然就全局走代理了,那样也不需要用 dns 分流了。
    k9982874
        8
    k9982874  
    OP
       Oct 12, 2019 via iPhone
    featet -> feature
    zhaibin18
        9
    zhaibin18  
       Oct 12, 2019
    如果是 A 记录的话是没问题的,但是如果是 CNAME 的话还是有点不方便,比如我想通过 ipset 访问 www.reddit.com ,但是因为记录返回的是 CNAME 没有加入的 ipset 里,所以就访问不了了。
    zhaibin18
        10
    zhaibin18  
       Oct 12, 2019
    @k9982874 不知道我说清楚了没有。
    k9982874
        11
    k9982874  
    OP
       Oct 13, 2019 via iPhone
    @zhaibin18 理解你的意思了。不过这个问题还是要通过手动添加配置解决。
    毕竟无法追踪 fastly.net 的源头是哪,而且也可能与用户的本意出现差异(可能用户就是不想分流 fastly.net )。
    wwbfred
        12
    wwbfred  
       Jan 2, 2020
    @k9982874 当一个域名同时含有 CNAME 和 A 记录的时候,与 dnsmasq 不同,unbound 会向 forward 服务器重新查询 CNAME 的 A 记录,并舍弃初始域名的 A 记录.这就导致了若初始域名与 CNAME 的 A 记录不同,则会向客户端返回 CNAME 的 A 记录,并将初始域名的 A 记录添加进 ipset.这个确实是 feature 而不是 bug 么?
    adoal
        13
    adoal  
       Jun 14, 2021
    一年半过去了,没有下文了。为啥 dnsmasq 可以跟踪到源头而 unbound 不行呢?
    About     Help     Advertise     Blog     API     FAQ     Solana     2572 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 15:48 PVG 23:48 LAX 08:48 JFK 11:48
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86