V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
ZE3kr
V2EX  ›  DNS

自建 PowerDNS 智能解析服务器,优雅 YAML 写法, GEODNS 支持

  •  5
     
  •   ZE3kr · 2016-08-03 09:28:12 +08:00 · 10663 次点击
    这是一个创建于 3038 天前的主题,其中的信息可能已经有所发展或是发生改变。

    https://ze3kr.com/2016/08/self-host-dns/ 讲了如何配置

    支持的一些特性: EDNS Client Subnet 、 DNSSEC 、 GEODNS 、 IPv6 等等,以上只是我想到的。同时 PowerDNS 支持超多的解析记录种类(至少是我目前见过最多的): A 、 AAAA 、 AFSDB 、 ALIAS (也是 ANAME )、 CAA 、 CERT 、 CDNSKEY 、 CDS 、 CNAME 、 DNSKEY 、 DNAME 、 DS 、 HINFO 、 KEY 、 LOC 、 MX 、 NAPTR 、 NS 、 NSEC 、 NSEC3 、 NSEC3PARAM 、 OPENPGPKEY 、 PTR 、 RP 、 RRSIG 、 SOA 、 SPF 、 SSHFP 、 SRV 、 TKEY 、 TSIG 、 TLSA 、 TXT 、 URI 等

    YAML 写法事例,从来没有这么爽的配置过 DNS :

    # @see: https://doc.powerdns.com/md/authoritative/backend-geoip/
    domains:
    - domain: example.com
      ttl: 300 # 默认 TTL 时长
      records:
    
    
    ##### Default NS
        ns1.example.com:
          - a: # 你的服务器的第一个 IPv4 地址
              content: 10.0.0.1
              ttl: 86400
          - aaaa: # 你的服务器的第一个 IPv6 地址
              content: ::1
              ttl: 86400
        ns1.example.com: # 你的服务器的第二个 IPv4 地址(如果没有就和上面一样)
          - a:
              content: 10.0.0.2
              ttl: 86400
          - aaaa: # 你的服务器的第二个 IPv6 地址(如果没有就和上面一样)
              content: ::2
              ttl: 86400
    
    
    ##### Root domain
        example.com: # 根域名下的记录
          - soa:
              content: ns1.example.com. admin.example.com. 1 86400 3600 604800 10800
              ttl: 7200
          - ns:
              content: ns1.example.com.
              ttl: 86400
          - ns:
              content: ns2.example.com.
              ttl: 86400
          - mx:
              content: 100 mx1.example.com. # 权重 [空格] 主机名
              ttl: 7200
          - mx:
              content: 100 mx2.example.com.
              ttl: 7200
          - mx:
              content: 100 mx3.example.com.
              ttl: 7200
          - a: 103.41.133.70 # 如果想使用默认 TTL ,那就不用区分 content 和 ttl 字段
          - aaaa: 2001:470:fa6b::1
    
    ##### Servers list 你的服务器列表
        beijing-server.example.com: &beijing
          - a: 10.0.1.1
          - aaaa: ::1:1
        newyork-server.example.com: &newyork
          - a: 10.0.2.1
          - aaaa: ::2:1
        japan-server.example.com: &japan
          - a: 10.0.3.1
          - aaaa: ::3:1
        london-server.example.com: &uk
          - a: 10.0.4.1
          - aaaa: ::4:1
        france-server.example.com: &france
          - a: 10.0.5.1
          - aaaa: ::5:1
    
    
    ##### GEODNS 分区解析
        # @see: https://php.net/manual/en/function.geoip-continent-code-by-name.php
        # @see: https://en.wikipedia.org/wiki/ISO_3166-1_alpha-3
        # unknown also is default
        # %co.%cn.geo.example.com
        # 默认
        unknown.unknown.geo.example.com: *newyork # 默认解析到美国
        # 洲
        unknown.as.geo.example.com: *japan # 亚洲解析到日本
        unknown.oc.geo.example.com: *japan # 大洋洲解析到日本
        unknown.eu.geo.example.com: *france # 欧洲解析到法国
        unknown.af.geo.example.com: *france # 非洲解析到法国
        # 国家
        chn.as.geo.example.com: *beijing # 中国解析北京
        gbr.eu.geo.example.com: *uk # 英国解析到英国
    
    
      services:
        # GEODNS
        www.example.com: [ '%co.%cn.geo.example.com', 'unknown.%cn.geo.example.com', 'unknown.unknown.geo.example.com']
    
    第 1 条附言  ·  2017-11-18 12:12:58 +08:00
    13 条回复    2017-03-12 09:16:02 +08:00
    Showfom
        1
    Showfom  
       2016-08-03 09:29:37 +08:00 via iPhone
    嗯很不错的
    qcloud
        2
    qcloud  
       2016-08-03 09:33:02 +08:00
    感谢!收藏先!
    jackysc
        3
    jackysc  
       2016-08-03 09:47:35 +08:00
    楼主的文章都写的很不错,收藏了
    anjunecha
        4
    anjunecha  
       2016-08-03 10:47:36 +08:00
    这个方案裸域 CNAME 可否有办法解决?
    ZE3kr
        5
    ZE3kr  
    OP
       2016-08-03 10:58:07 +08:00 via iPhone
    @anjunecha 不建议主域名下设置 CNAME ,可以开 ALIAS 记录解决,见 https://doc.powerdns.com/md/authoritative/howtos/#using-alias-records
    anjunecha
        6
    anjunecha  
       2016-08-03 11:05:57 +08:00
    @ZE3kr 如果用 ALIAS 的话,上 CDN 之后使用 GEODNS 就成问题啦
    ashchen
        7
    ashchen  
       2016-08-03 11:13:17 +08:00
    支不支持数据库?
    ZE3kr
        8
    ZE3kr  
    OP
       2016-08-03 11:35:37 +08:00 via iPhone
    @ashchen 支持 MySQL 等, https://doc.powerdns.com/md/authoritative/ 。个人还是喜欢文件形式的编辑,这个 GEOIP 版本应该只能 YAML 。
    ZE3kr
        9
    ZE3kr  
    OP
       2016-08-03 11:39:35 +08:00 via iPhone
    @anjunecha 现在在裸域名配置 GEODNS 是个问题,要不就是只在裸域下配置,要不就在二级域名下配置 GEODNS ,两者都弄会出 bug 。裸域名弄要麻烦一些,见 https://github.com/PowerDNS/pdns/issues/4276
    ylx
        10
    ylx  
       2017-01-02 19:22:44 +08:00
    就不能通过面板设置吗。。好复杂
    Antidictator
        11
    Antidictator  
       2017-03-12 00:24:22 +08:00
    @qcloud 小白问个问题呗,自建 DNS 有没有好处。 Google 一圈没找到?我姿势不对?
    qcloud
        12
    qcloud  
       2017-03-12 04:46:12 +08:00 via iPhone   ❤️ 1
    @Antidictator 个人我感觉没什么优点,可以自定义 ns ,稳定性啥的倒不如用第三方的
    Antidictator
        13
    Antidictator  
       2017-03-12 09:16:02 +08:00
    @qcloud 这样子,感谢答疑:}
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   3185 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:36 · PVG 08:36 · LAX 16:36 · JFK 19:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.