CoreDNS的簡易使用

CoreDNS 的簡易使用

使用 CoreDNS 做爲局域網 DNS 服務器git

1. 安裝

使用 docker 安裝,或直接下載執行文件,下載頁面github

docker pull coredns

docker start -p 53:53 -v /Corefile:/Corefile -v /zones:/zones -d --name coredns coredns

2. 配置

coredns 會去默認讀取同目錄下的 Corefile 配置文件,你也能夠使用 -conf 參數指定配置文件路徑。樣例以下:docker

.:53 {
  # 使用auto 插件配置rainsay.me域名
  auto rainsay.me {
    # 說明 rainsay.me 的 zone 文件位置,自動回讀取 zones/ 目錄下的全部文件
    directory ./zones
    # 上傳到上級DNS服務器
    transfer to 192.168.31.1
    # 每5m重載zones中的文件內容
    reload 5m
  }
  hosts {
    # hosts 插件能夠如使用 /etc/hosts 文件同樣配置服務名稱
    # 若是不寫大括號及其中的內容,直接hosts指令,默認使用 /etc/hosts 中的服務名稱
    # inline 形式
    127.0.0.1 www.rainsay.me
    fallthrough
  }
  # 對於沒有配置的域名,轉發到114
  forward . 114.114.114.114
  cache 120
  reload 6s
  log
  errors
  }

zone 文件格式shell

$TTL 3600 ; 記錄超時時間
$ORIGIN rainsay.me. ; 指定 origin,下面的@符號能夠做爲他的別名,注意後面的.
; SOA 格式 [domain_name] IN SOA [域主服務器或主DNS服務器名] [管理員email] (時間信息)
@           IN  SOA  ns1.rainsay.me. admin.rainsay.me. (
                     2019071601 ; Serial
                     4H         ; Refresh
                     1H         ; Retry
                     7D         ; Expire
                     4H )       ; Negative Cache TTL

; 配置 DNS 記錄,指向 ns1.rainsay.me
@           IN  NS   ns1
; 配置 ns1.rainsay.me 的 A 記錄, 指向coredns所在的機器
ns1         IN  A    192.168.31.116
; 配置 rainsay.me 的 A 記錄,指向網站或其餘用途的機器
@           IN  A    192.168.31.51
; 配置泛域名,沒有準確的三級子域名的域名所有指向此IPV4地址
*.rainsay.me.         IN  A    192.168.31.51

這裏使用了兩個插件 hostsautoubuntu

  • host插件能夠簡單的指明單條記錄,但因爲不能支持泛域名,咱們這裏使用auto插件
  • autofile插件須要配置 zone [RFC 1035-style ] 文件,能夠明確的指明一個域的全部信息

3. 驗證

使用 dig 命令服務器

dig @localhost rainsay.me
# 輸出
; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @localhost rainsay.me
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 37013
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 13b0ce8798a9af30 (echoed)
;; QUESTION SECTION:
;rainsay.me.            IN    A

;; ANSWER SECTION:
rainsay.me.        5    IN    A    192.168.31.51

;; AUTHORITY SECTION:
rainsay.me.        5    IN    NS    ns1.rainsay.me.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Mar 28 10:46:24 CST 2020
;; MSG SIZE  rcvd: 115
#================================================
dig @localhost ns1.rainsay.me
# 輸出
yu@yu-thinkpad:~$ dig @localhost ns1.rainsay.me

; <<>> DiG 9.11.3-1ubuntu1.11-Ubuntu <<>> @localhost ns1.rainsay.me
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31124
;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1
;; WARNING: recursion requested but not available

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
; COOKIE: 4c486f2075653625 (echoed)
;; QUESTION SECTION:
;ns1.rainsay.me.            IN    A

;; ANSWER SECTION:
ns1.rainsay.me.        5    IN    A    192.168.31.116

;; AUTHORITY SECTION:
rainsay.me.        5    IN    NS    ns1.rainsay.me.

;; Query time: 0 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
;; WHEN: Sat Mar 28 10:49:09 CST 2020
;; MSG SIZE  rcvd: 123
相關文章
相關標籤/搜索