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

2016-08-03 09:28:12 +08:00
 ZE3kr

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']
10618 次点击
所在节点    DNS
13 条回复
Showfom
2016-08-03 09:29:37 +08:00
嗯很不错的
qcloud
2016-08-03 09:33:02 +08:00
感谢!收藏先!
jackysc
2016-08-03 09:47:35 +08:00
楼主的文章都写的很不错,收藏了
anjunecha
2016-08-03 10:47:36 +08:00
这个方案裸域 CNAME 可否有办法解决?
ZE3kr
2016-08-03 10:58:07 +08:00
@anjunecha 不建议主域名下设置 CNAME ,可以开 ALIAS 记录解决,见 https://doc.powerdns.com/md/authoritative/howtos/#using-alias-records
anjunecha
2016-08-03 11:05:57 +08:00
@ZE3kr 如果用 ALIAS 的话,上 CDN 之后使用 GEODNS 就成问题啦
ashchen
2016-08-03 11:13:17 +08:00
支不支持数据库?
ZE3kr
2016-08-03 11:35:37 +08:00
@ashchen 支持 MySQL 等, https://doc.powerdns.com/md/authoritative/ 。个人还是喜欢文件形式的编辑,这个 GEOIP 版本应该只能 YAML 。
ZE3kr
2016-08-03 11:39:35 +08:00
@anjunecha 现在在裸域名配置 GEODNS 是个问题,要不就是只在裸域下配置,要不就在二级域名下配置 GEODNS ,两者都弄会出 bug 。裸域名弄要麻烦一些,见 https://github.com/PowerDNS/pdns/issues/4276
ylx
2017-01-02 19:22:44 +08:00
就不能通过面板设置吗。。好复杂
Antidictator
2017-03-12 00:24:22 +08:00
@qcloud 小白问个问题呗,自建 DNS 有没有好处。 Google 一圈没找到?我姿势不对?
qcloud
2017-03-12 04:46:12 +08:00
@Antidictator 个人我感觉没什么优点,可以自定义 ns ,稳定性啥的倒不如用第三方的
Antidictator
2017-03-12 09:16:02 +08:00
@qcloud 这样子,感谢答疑:}

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/296725

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX