分類
Gandi.net 最新文章 網域名稱

[DNSSEC] 自動更新金鑰 – CDS 與 CDNSKEY 紀錄

CDS 與 CDNSKEY 是 DNSSEC 的新 DNS 紀錄,目的在於讓 DNS 代管業者能自動管理 DNSSEC 的金鑰更新。

分類
最新文章 網域名稱

TMCH (Trademark cleaning house) 網域名稱商標服務

TMCH (官方網址) 是一個目前僅適用於網域名稱的商標宣告服務。

分類
教學

[基礎] 網址、網域、DNS 代管與主機是什麼?

許多人會都希望能架設自己的網站,但對於很多初學者來說,需要了解的部份大致尚有網址、網域、DNS 紀錄設定與主機。

分類
技術文章 教學 網域名稱

DNS 除錯教學系列文章(4) – dig 指令教學

DNS 系列文章目錄

DNS 除錯教學系列文章(1) – DNS 入門
DNS 除錯教學系列文章(2) – DNS 架構
DNS 除錯教學系列文章(3) – DNS 紀錄
DNS 除錯教學系列文章(4) – dig 指令
DNS 除錯教學系列文章(5) – 常見 DNS 問題與 dig 除錯方法

為什麼要用 dig,不能用 ping 嗎?

dig 能顯示 DNS 封包中大部份的資料,包括每一個 bit 的值,對於你要快速進行 DNS 除錯的人來說,比較能有一目了然的效果。ping 是網路測試工具,他不會經由正確的 DNS 解析來查詢 DNS,他會借助系統的設定透過 Public DNS 來解析,很有可能會拿到暫存的資料。

dig 教學

基本指令與格式

dig 是一個非常好用的 DNS 除錯工具,他能夠模擬一般電腦查詢、遞迴查詢、非遞迴查詢、DNS 快去伺服器查詢、DNSSEC 查詢、TCP 查詢等等。只要你知道該下哪些參數,你就能查看所有的 DNS 資料喔,基本的指令如下:

dig [options] example.com [type]

由於 options 的部份實在太多,我只列出幾個我常用的,type 的部份就是前面章節所提到的 DNS 紀錄類型。

回應區段

dig 回應的資料有四大區段,分別是標頭 (HEADER)、問題 (QUESTION)、解答 (ANSWER) 與權威伺服器 (Authority) 其他資訊 (ADDITIONAL) 五大區塊。

DNS Sections – RFC 1035

Header 中有比較需要注意的幾個欄位,所以我們列出來看一下:

DNS Header – RFC 1035

Header 中有很多欄位:

  • ID:DNS 查詢的亂數辨識碼,數字。
  • QR:0 查詢,1 回應。
  • Opcode:0 QUERY,1 IQUERY,2 STATUS,3-15 保留,同常都是 0。
  • AA:權威伺服器回答。
  • TC:截斷,表示封包是否因為過長而被截斷。
  • RD:用戶端是否要求遞迴查詢。
  • RA:伺服器回應是支援遞迴查詢。
  • Z:保留。
  • RCODE:0 沒有錯誤,1-5 錯誤代碼。
  • QDCOUNT:Question 區段的資料數量。
  • ANCOUNT:Answer 區段的資料數量。
  • NSCOUNT:Authority 區段的資料數量。
  • ARCOUNT:Additional 區段的資料數量。

如果你有興趣詳細了解,請參考 RFC 1035

參數 (Options)

@server,指定伺服器。你可以指定要對那一台伺服器送出 DNS 查詢,不指定時則使用系統的設定。範例:

$ dig +short @8.8.8.8 rsync.tw a
217.70.184.38
$ dig +short @168.95.1.1 rsync.tw a
217.70.184.38
$ dig +short @1.1.1.1 rsync.tw a
217.70.184.38

+short,簡略輸出。只顯示 ANSWER 區塊的部份,如果 ANSWER 沒有回應,就會顯示空白,上方的範例中也使用了 +short 參數。如果你沒有使用 +short 參數,就會看到五個區塊的詳細資料,範例(輸出的資料有點多,我刪除的部份資訊:

$ dig blog.rsync.tw 

; <<>> DiG 9.10.3-P4-Ubuntu <<>> blog.rsync.tw
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16954
;; flags: qr rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 6, ADDITIONAL: 15

;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;blog.rsync.tw.			IN	A

;; ANSWER SECTION:
blog.rsync.tw.		3049	IN	CNAME	gpaas15.dc2.gandi.net.
gpaas15.dc2.gandi.net.	3	IN	A	217.70.186.115

;; AUTHORITY SECTION:
dc2.gandi.net.		949	IN	NS	dns2.gandi.net.
[略]
dc2.gandi.net.		949	IN	NS	dns1.gandi.net.

;; ADDITIONAL SECTION:
dns0.gandi.net.		44990	IN	A	217.70.177.39
dns0.gandi.net.		44990	IN	AAAA	2001:4b98:d:1::39
[略]
dns6.gandi.net.		44990	IN	AAAA	2400:cb00:2049:1::a29f:186f

;; Query time: 240 msec
;; SERVER: 217.70.181.80#53(217.70.181.80)
;; WHEN: Wed Apr 17 12:43:11 CST 2019
;; MSG SIZE  rcvd: 515

-4只使用 IPv4 位址進行與伺服器的連線。

-6只使用 IPv6 位址進行與伺服器的連線。

+tcp 使用 TCP 的方式與 DNS 伺服器連線。這個設定有時候我會用到,當幫一些客戶進行 DNS 測試的時候,因為 DNS 原生是使用 UDP/53 的協定,而有些人會忘記開啟主機或是 IP 分享器的防火牆,忘了讓 UDP 封包通過,我就會透過 +tcp 的方式將 DNS 查詢改為 TCP 連線,如果一般查詢沒有回應,而 +tcp 會過,就表示防火牆沒有開啟,指令範例:

$ dig +tcp +short blog.rsync.tw a
gpaas15.dc2.gandi.net.
217.70.186.115

+cdflag 這個是在設定 cdflag 旗標,作用是在關閉 DNSSEC 查詢。DNSSEC 是一種 DNS 延生安全協議,它能確保你的 DNS 紀錄無法偽造。但有些時候 DNSSEC 管理不當的話就會造成 DNSSEC 驗證失敗,你會發生不穩定的 DNS 解析,這時候你就可以試者用 +cdflag 旗標來測試將此查詢關閉 DNSSEC,如果一般查詢沒有回應,但 +cdflag 能有正確回應,表示你的 DNSSEC 壞掉摟:

(8.8.8.8 沒有回應)
{13:26}:@~]$ dig @8.8.8.8 haway.xyz a +short

(用 CD Flag 來讓 8.8.8.8 關閉 DNSSEC 驗證)
{13:26}:@~]$ dig +cdflag @8.8.8.8 haway.xyz a +short
146.66.105.148

查詢類型(type)

dig 指令的最後就是你要查詢的 DNS 類型,預設不輸入的話會查詢 A 紀錄。在做 dig 除錯的時候一定要指定類型,因為你必須確認你正在查詢的 DNS 資料是什麼。

範例

# 查詢 Cache Server 的 A 紀錄
$ dig @8.8.8.8 blog.rsync.tw a

# 查詢網域名稱的 MX
$ dig rsync.tw mx

# 查詢域名負責人
$ dig rsync.tw soa

# 追蹤模式
$ dig +trace blog.rsync.tw a

# tcp 查詢模式
$ dig +tcp blog.rsync.tw a

# 查詢 IP 反解
$ dig -x 8.8.8.8 ptr

# 關閉 DNSSEC 查詢
$ dig +cdflag @8.8.8.8 blog.rsync.tw a

分類
技術文章 教學 網域名稱

DNS 除錯教學系列文章(3) – DNS 紀錄

DNS 紀錄常見的有 A、MX、CNAME、NS 等,你知道怎麼正確設定嗎?

DNS 系列文章目錄

DNS 除錯教學系列文章(1) – DNS 入門
DNS 除錯教學系列文章(2) – DNS 架構
DNS 除錯教學系列文章(3) – DNS 紀錄
DNS 除錯教學系列文章(4) – dig 指令
DNS 除錯教學系列文章(5) – 常見 DNS 問題與 dig 除錯方法

DNS 紀錄是什麼?

在了解基礎與 DNS 架構之後,我們來了解一些 DNS 紀錄的類型,在不同的目的時,我們會需要用到不同的紀錄。DNS 基本上就是做一件事情,”對應“,白話一點說就是把網域名稱對應到一個 IP 位址,像這樣:

blog.rsync.tw => 1.2.3.4

基本上左邊是來源,右邊是目的,當你的來源與目的有不同需求的時候,就需使用不同的紀錄,上述的範例,來源是網域名稱,目的是 IP 位址,就要使用 A 紀錄,下表示不同的來源與目的時,該使用的紀錄:

來源位址目的位址DNS 類型
網域名稱名稱伺服器NS
網域名稱管理資料SOA
網域名稱郵件主機MX
網域名稱SSL 憑證CAA
主機名稱IPv4 位址A
主機名稱主機名稱CNAME
主機名稱文字TXT
主機名稱IPv6 位址AAAA
IP 位址主機名稱PTR

實際在設定的畫面長這樣,名稱指的就是來源,值就是目的位址,而類型就是對應的方式:

DNS 紀錄
DNS 紀錄

常見類型

NS 紀錄

NS 紀錄的用途有兩個,一個是向下授權,一個是平行授權。

向下授權就是建立一個子網域,譬如跟伺服器建立個一個 .tw 的子網域,並授權給 TWNIC 的主機:

$ dig +short rsync.tw ns
ns2.gandi.net.
ns1.gandi.net.
ns3.gandi.net.

平行授權指的是同一個網域名稱的所有名稱伺服器,都必須擁有相同的 NS 紀錄。以上數的例子來說,rsync.tw 已經授權給三台名稱伺服器,而這三台的 rsync.tw ns 紀錄必須完全一模一樣。

$ dig +short @ns1.gandi.net rsync.tw ns
ns1.gandi.net.
ns2.gandi.net.
ns3.gandi.net.
$ dig +short @ns2.gandi.net rsync.tw ns
ns3.gandi.net.
ns1.gandi.net.
ns2.gandi.net.
$ dig +short @ns3.gandi.net rsync.tw ns
ns2.gandi.net.
ns3.gandi.net.
ns1.gandi.net.

不一樣會怎樣?不會怎樣!真的~一開始都不會怎樣,你會發現網頁還是連的到,郵件還是會通,但是時間久了之後,你會覺得怪怪的,有時候會通,有時候不會通,有人跟你反應網頁連不到,但你自己測試又可以,這個 NS 名稱不一致的錯誤叫做 LAME Server。

SOA 紀錄

SOA 紀錄是網域名稱的系統管理紀錄,不過若你是使用一些代管 (像是 CloudFlare、Gandi LiveDNS) 這個紀錄你完全不需要處理。這個紀錄是在一起自架 DNS 主機的人會需要設定。他主要代表者這個網域名稱的管理者、管理主機、區域檔序號與全域性的 TTL 資料。

A/AAAA 紀錄

當你要將網域名稱對應到伺服器的 IP 位址的時後,就需要使用 A 紀錄,A 紀錄是 指向 IPv4位址,AAAA 紀錄是指向 IPv6 位址。

$ dig +short blog.rsync.tw a
gpaas15.dc2.gandi.net.
217.70.186.115
$ dig +short blog.rsync.tw aaaa
gpaas15.dc2.gandi.net.
2001:4b98:dc2:950::115

MX 紀錄

Mail Exchange(MX) 紀錄是指這個網域名稱的郵件主機紀錄,如果有人寄信給你,郵件主機會優先查詢這個網域名稱有沒有 MX 紀錄,如果有,就會連線到郵件主機,如果沒有特別設定 MX 紀錄,寄送郵件的主機會嘗試解析網域名稱的 A 紀錄,如果有 A 紀錄,就會嘗試連線主機的郵件伺服器。

{11:43}:@~]$ dig +short rsync.tw mx
10 spool.mail.gandi.net.
50 fb.mail.gandi.net.

當網域名稱有設定 MX 紀錄的時候,郵件主機就會嘗試去連線 spool.mail.gandi.net. (注意看是 FQDN)。MX 紀錄有一個特殊欄位就是 優先順序 因為通常郵件系統會做備援功能,就是一台壞掉的時候,另一台會接手接收郵件,然後等主郵件伺服器回復後,再把郵件寄回給主伺服器,所以在 MX 紀錄內,可以設定郵件主機的優先順序,數值越小的優先。寄給 rsync.tw 的信,會先送給 spool.mail.gandi.net. ,如果投遞不成功,就會轉連線到 fb.mail.gandi.net. 。

如果 rsync.tw 沒有 MX 紀錄,寄送的郵件主機會直接解析網域名稱的 A 紀錄,並嘗試連線到 217.70.184.38。

$ dig +short rsync.tw a
217.70.184.38

TXT/SPF 紀錄

TXT 類型就是文字的意思。你可以在任何紀錄中設定 TXT 紀錄,可以自訂文字的內容。

$ dig +short helloworld.rsync.tw txt
"This is my world."

你可以設定任何文字。那 SPF(Sender Policy Framework) 又是什麼呢?SPF 是用來設定認證你的郵件主機,你是否有看過那種冒用你的網域名稱來寄送垃圾郵件的?因為郵件協定當初並沒有很好的安全機制設計,後來就有人想到若我可以在網域名稱內宣告我自己的郵件主機,若不是列表中的主機寄出的信件,就是冒用的。就像是你在自己的網域名稱中宣告郵件主機的白名單。SPF 的宣告很簡單,也是文字格式,所以 SPF 就直接使用了 TXT 類型。SPF 的設定,請參考 WIKI

$ dig +short rsync.tw txt
"v=spf1 include:_mailcust.gandi.net ?all"

CNAME 紀錄

CNAME 紀錄也算是主機名稱的別名的一種,主要是當你的目的位址是主機名稱時,而不是常見的 IP 位址,你就需要使用 CNAME 來進行對應,查看 CNAME 時,需要把 +short 取消掉,比較看的清楚,我也先刪除了一些過多的資訊:

{12:25}:@~]$ dig  blog.rsync.tw 

;; ANSWER SECTION:
blog.rsync.tw.		433	IN	CNAME	gpaas15.dc2.gandi.net.
gpaas15.dc2.gandi.net.	40	IN	A	217.70.186.115

你可看到 blog.rsync.tw. 先 CNAME 到了 gpass15.dc2.gandi.net. 然後才再次對應到 217.70.186.115。使用 CNAME 有一個限制,就是同一筆紀錄之下,如果有設定 CNAME 紀錄,就不能在設定其他紀錄,例如你設定了 blog.rsync.tw. 的 CNAME,就不能設定 blog.rsync.tw. 的 A、MX、TXT 等等的紀錄。

所以常見問題是有些人會設定裸域名的 CNAME,例如我註冊了 rsync.tw ,而我想要把 rsync.tw 的網頁瀏覽者連到跟 blog.rsync.tw. 同樣的網站,所以設定了 rsync.tw CNAME blog.rsync.tw.

這時因為 rsync.tw 網域名稱本身就一定會帶有 SOA 與 NS 紀錄,會造成跟 CNAME 的衝突,這時後會造成網域名稱運作不穩定。所以如果你要設定裸域名的 CNAME,你可以用網頁轉址的方式。

PTR 紀錄

PTR 紀錄是將 IP 位址對應到主機名稱,譬如:

{12:38}:@~]$ dig -x 8.8.8.8 ptr 

;; ANSWER SECTION:
8.8.8.8.in-addr.arpa.	86371	IN	PTR	google-public-dns-a.google.com.

就會將 8.8.8.8 對應到主機名稱 google-public-dns-a.google.com.,通常你必須有 IP 位址的管理權,才會需要設定 PTR 紀錄。一般來說都是自架 DNS 並且有一段 IP 位址是歸你管的情況下,才會需要設定。

DNS 系列文章目錄

DNS 除錯教學系列文章(1) – DNS 入門
DNS 除錯教學系列文章(2) – DNS 架構
DNS 除錯教學系列文章(3) – DNS 紀錄
DNS 除錯教學系列文章(4) – dig 指令
DNS 除錯教學系列文章(5) – 常見 DNS 問題與 dig 除錯方法



分類
技術文章 教學 網域名稱

DNS 除錯教學系列文章(1) – DNS 入門

DNS 是一門很容易卻又很容易弄錯的領域,筆者想分享多年來協助客戶處理 DNS 的一些經驗,所以撰寫了這個系列文章。

分類
網域名稱

談 31t.tw DNS 阻斷 – 網域名稱狀態

最近最紅的新聞就是 www.31t.tw 這個網站,因為內容的關係,造成大家熱烈討論,最後因為網站太敏感的關係,被國安局正式要求封鎖。

分類
最新文章 網域名稱

中文域名怎麼測試 DNS Flag Day?

中文域名怎麼測試 DNS Flag Day 呢?

分類
教學 最新文章 網域名稱

TTL 是什麼?該設定多久?

TTL 的全名叫做 Time to Live,是 DNS 解析的時候在使用的,主要的作用是設定每一筆紀錄在 DNS 快取伺服器所保留的時間我們常常在設定 DNS 紀錄的時候會有一個欄位叫做 TTL,到底要設定多少呢?這個值,如果你常常在變動 DNS 紀錄的話,有多小就調多小 (要看你的代管商最小能設定多少),反之,如果你沒有常常變動,可以調大一點,單位是秒,若你設定 1800,表示 1800 秒。所以當你變更這筆 DNS 紀錄的時候,要 1800 秒後才會全球生效!

分類
技術文章 最新文章

DNSSEC 壞掉會發生什麼情況?該怎麼修復?

客戶發生實際案例。他在安裝 SiteGround 的 SSL 憑證的時候,裝不進去,SiteGround 的客服回應說域名解析有問題,所以自動安裝的程式無法正常運作。