可能很多人平時作業中不會遇到DNS配置相關的問題, 但如果偶爾遇到不同型別DNS記錄的配置, 在沒有搞清楚它們都是干啥的情況下, 會眼花繚亂, 還記得很多年前實驗室配置DNS不太對導致只能訪問www.instlink.com, 而無法決議subdomain.instlink.com,
現在回頭想起來,可能是將A類記錄配置成了www.instlink.com 導致的, 所以無法再CNAME到subdomain.instlink.com,而只能整成subdomain.www.instlink.com,由于網站需要備案,修改起來麻煩,所以只能將二級頁面通過/subdomain的形式來展現,
剛好最近所做的作業中涉及到了一些郵箱方面的DNS的配置,使用Amazon Route53托管,這里簡單的將不同種DNS記錄型別做一些介紹,
A/AAAA
這兩種是最基本的DNS記錄, 它負責系結域名與對應的IP地址, 只不過A系結的IPv4, 而AAAA系結的IPv6,
例子:
foo.example.com. A 192.0.2.23
其中86400是TTL
CNAME
CNAME(canonical name)是A記錄的alias或者叫做lieu, 一般用作系結subdomain,或者其他domain與主domain的關系, 而且它只能指向一個domain,
例子:
bar.example.com. CNAME example.net.
CNAME的查找是單條的, 也就是如果xyz.bar.example.com來了就無法命中這條CNAME記錄, 但是還有另外一個叫DNAME的可以映射整個subtree,且DNS服務器在處理DNAME時,其實也是產生對應的CNAME來決議,
所以如果存在一條DNAME,如:
bar.example.com. DNAME example.net.
那么決議的程序是通過如下的CNAME來完成的:
xyz.bar.example.com. CNAME xyz.example.net
MX
Mail Exchange, 這個是專門給郵件用的,依據SMTP協議,通過這個DNS地址找到對應的郵件服務器host,所以這個型別的記錄也只能指向一個域名,而不能是IP地址,
例子:
| Domain | TTL | Class | Type | Priority | Host |
|---|---|---|---|---|---|
| example.com. | 1936 | IN | MX | 10 | onemail.example.com. |
TXT
TXT就跟他的名字一樣, 會回傳一段文本, 本來的設計是用來回傳人可以閱讀的資訊, 現在主要用于郵件防Spam, 以及域名所有者宣告,
例子:
| Domain | Type | Value | TTL |
|---|---|---|---|
| example.com. | TXT | This is an awesome domain! Definitely not spammy. | 32600 |
關于如何防止Spam, 有三個基于TXT的DNS記錄(SPF,DKIM,DMARC)后面會提到,
基于IETF在1993年的規范,如果想在TXT里保存Key/Value值,需要雙引號(“”)包裹K=V值,但是這個規范往往沒有被采納,所以如果我們去看防Spam的幾種DNS記錄,是沒有加引號的,
NS
NameServer用來指定DNS決議服務器的域名,它是用來告訴去哪里來找到對應域名的IP地址的,
例子:
example.com. 172800 IN NS ns1.example.com.
不同的subdomain可以通過NS來指向不同的DNS決議服務器,私有的DNS服務器也可以通過NS指向第三方云服務商提供的地址,這個地址可以是一個IP地址,但是這是一個不好的實踐,因為IP地址可能會發生變化,導致DNS無法決議,
SOA
SOA(start of authority)主要用來保存這個域名的一些重要的資訊,包括管理員的email地址,
例子:
| Domain | Type | MNAME | RNAME | SERIAL | REFRESH | RETRY | EXPIRE | TTL |
|---|---|---|---|---|---|---|---|---|
| example.com. | SOA | ns.example.com | admin.example.com | 1 | 7200 | 900 | 120960 | 86400 |
這里面的RNAME是管理員的Email,只是沒有帶@,看起來不像而已,
SRV
這個代表Service記錄,一般是為一些特殊的服務提供host與埠的,如VoIP,即時訊息,并且只能指向A或者AAAA類地址,不能是一個CNAME,
例子:
_xmpp._tcp.example.com. 86400 IN SRV 10 5 5223 server.example.com.
如果使用表格來描述,即:
| Service | Protocal | Name | Type | Class | Priority | Weight | Port | Target |
|---|---|---|---|---|---|---|---|---|
| XMPP | TCP | example.com | SRV | IN | 10 | 5 | 5223 | service.example.com |
PTR
PTR是Pointer Record的縮寫, 它可以被理解成A/AAAA記錄的反向,一般被用于做防Spam,解決郵件發送問題,系統Log IP <-> 域名轉換等,
例子:
| Host | Type | Points to | TTL |
|---|---|---|---|
| 1.0.168.192.in-addr.arpa | PTR | host1.example.com | 86400 |
這里面之所以要給IP地址加上in-addr.arpa,是因為IP地址存在.apra頂級域名下,如果是IPv6的地址,需要使用.ip6.arpa,
DNSKEY
這條記錄內保存了一個公鑰,主要是為了用來驗證DNSSEC(Domain Name System Security Extensions)的數字簽名,保證DNS資訊來源于一個真實可靠的DNS服務器,
例子:
| Host | TTL | Class | Type | Flags | Protocal | Algorithm | Public Key |
|---|---|---|---|---|---|---|---|
| example.com | 3600 | IN | DNSKEY | 257 | 3 | 13 | ZhCa3rGLofZcndFN2aVd== |
這里Protocal只能填3,代表DNSSEC, 而演算法可以選多種:
- 1 = RSA/MD5
- 2 = Diffie-Hellman (This is not supported by BIND and Infoblox appliances.)
- 3 = DSA
- 4 = Reserved
- 5 = RSA/SHA1
- 6 = DSA/SHA1/NSEC3
- 7 = RSA/SHA1/NSEC3
- 8 = RSA/SHA-256
- 10 = RSA/SHA-512
Flags相對復雜一些,它是一個2位的長度,并且0-6,8-14都是反向的,bit7表明是否包含DNS Zone Key (ZSK),bit 15表明是否包含KSK(Key signing key),所以只會有兩個值,即256說明里面是ZSK,257是KSK,
SPF
這個是郵件防Spam里重要的一員,全稱Sender Policy Framework,用來認證發送者,
例子:
mail.example.com TXT v=spf1 ip4=192.0.2.0 ip4=192.0.2.1 include:examplesender.net -all
其中v=spf1表明這是一條SPF記錄,ip4說明了可以使用這個host發送郵件的主機IP地址,include:examplesender.net表明可以允許第三方可以以你的域名來發送郵件,-all 表明不在list上的都沒有被授權,應當拒收,如果是+all則表示任何人都可以使用該域名來發送,
DKIM
全稱為DomainKeys Identified Mail,實際上是也是保存了一個公鑰,用來驗證郵件的數字簽名,保證郵件來路正確,
發送者在發送郵件的時候帶上簽名與DKIM的selector以及其他的一些欄位在郵件頭,接收者通過selector來請求DKIM公鑰對簽名進行驗證,
例子:
| Name | Type | Content | TTL |
|---|---|---|---|
| selector._domainkey.example.com | TXT | v=DKIM1 p=76E629F05F70... | 6000 |
其中v=DKIM1表明這是一套DKIM記錄,同時也可以看到,通過selector就可以組成DKIM host來請求公鑰,
DMARC
全稱為Domain-based Message Authentication Reporting and Conformance, 這個記錄會告訴郵件服務器在通過SPF,DKIM檢測后,還需要做些什么,
例子:
v=DMARC1; p=quarantine; adkim=s; aspf=s;
v表明這條TXT記錄是一條DMARC記錄,
p表明在SPF與DKIM失敗后,應該怎么做,選項有none,reject,以及quarantine,
adkim表明DKIM檢測是strict(s),還是relax(r),
aspf跟adkim一樣,只不過是給spf設定,
其中adkim,aspf都是可選的,
Reference:
https://www.cloudflare.com/learning/dns/dns-records/
作者: 圣騎士Wind出處: 博客園: 圣騎士Wind
Github: https://github.com/mengdd
微信公眾號: 圣騎士Wind
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/423946.html
標籤:其他
上一篇:聯邦學習:按Dirichlet分布劃分Non-IID樣本
下一篇:3D小紅花的繪制原理
