NDS domain name server (域名服務)
協議: DNS
UDP :53
TCP :53
實現軟件 : bind(Berkeley Internet Name Domain) PowerDNS , dnsmasq
名稱解析:將一種格式的信息轉化為另外一種格式,以某關鍵字為標准查找某一數據庫的過程
passwd <--> nsswitch轉換 login:nsswitch為login提供服務 nsswitch配置文件在/etc/nsswitch
hosts:files dns
files /ect/hosts (存放主機名或者別名和IP) dns 不用host文件 集中向一個服務器提出申請
根域(.)-->一級域(ICCNA)-->二級域(組織域) namespace:名稱空間 容納名稱的整體范圍 一級域: 組織域:.com , .org , .mil , .gov , .edu , .net,.jp,.ir(伊朗),.iq(伊拉克),.us,.uk 國家域: .cn , .hk , .tw 反向域: .in-addr.arpa
FQDN:Full Qualified Domain Name 完全域名解析
FQDN –> IP 正向解析
IP –> FQDN 反向解析
遞歸查詢 :只發出一次請求對方給出最終答案
迭代查詢 :發起一次請求,不一定得到答案
課戶端指向的DNS服務器,一定是允許給本地主機做遞歸的
數據庫每一個條叫一個資源記錄(Resource Record),資源記錄有類型 ,用於表示資源的功能 SOA : start of authority 起始授權 NS : Name Server, 域名服務器 MX : Mail eXchanger 郵件交換器 A:Address,(FQDN-->IP) 地址記錄 正解 PTR: PoiTeR,(IP-->FQDN) 指針記錄 反解 AAAA: Address,FQDN-->IPv6 CNAME:Canonical Name,正式名稱(別名記錄) <!-- 早期的DNS 只支持 FODN-->iP ,正方向解析數據不同,不能存放於同一個數據庫進行 --> 域: Domain ,邏輯概念 區域: zone ,物理概念 也就是數據文件
DNS服務器類型:
主DNS服務器
輔助DNS服務器
緩沖名稱服務器
轉發服務器
DNS的數據庫文件(區域數據文件,區域自身有名字):文本文件,只能包含資源記錄或宏定義,每行一個
資源記錄的格式
name [ ttl 緩存紀錄] IN RRtype(資源記錄類型) Value 列子: www 600 IN A 1.2.3.4 www.magedu.com. 600 IN A 1.2.3.4 SOA: 只能一個 name : 只能是區域名稱,通常可以簡寫為@,例如:magedu.com. value: 有n個數值,最主要的是主DNS服務器的FQDN,點不可省略 <!-- 注意:SOA 必須是區域數據庫文件第一條記錄--> 例子: @ 600 IN SOA na.magedu.com. 郵箱地址(dnsadmin.magedu.com. ;把@變為.了 )( 序列號(serial number) ; 注釋內容,十進制數據,不能超過10位,通常使用日期,例如2014031001 刷新時間(refresh time) ;即每隔多久到主服務器檢查一次 重試時間(retry time) ;應該小於refresh time 過期時間(expire time) netgative answer ttl ;否定答案的ttl 客戶端可以緩存多久的 ) <!-- ;是注釋--> NS: 可以有多條 name: 區域名稱,通常可以簡寫為@ value : DNS 服務器的FQDN(可以使用相對名稱) 例如: @ 600 IN NS ns A: name : FQDN ( 可以使用相對名稱) value: IP 列子: www 600 IN A 1.2.3.4 www 600 IN A 1.2.3.5 ftp 600 IN A 1.2.3.5 AAAA : ipv6 MX :可以有多個 name : 區域名稱,用於標示 smtp 服務器 value :包含優先級和FQDN 優先級的: 0-99 數字越小,級別越高 列子: @ 600 IN MX 10 mail @ 600 IN MX 20 mail2 CNAME : 別名 name : FQDN value :FQDN 列子: ftp IN CNAME www PTR: 指針紀錄 IP-->FQDN 只能記錄在方向區域數據文件中,反向區域名稱為逆向網絡地址加 .in-addr.arpa. 後綴組成 name: IP ,主機地址反過來寫 例如: 172.16.100.7 的name 為7.100,完全格式為:7.100.16.172 value : FQDN 列子: 4.3.2 600 IN PTR www.maged.com.
定義: 輔助DNS服務器從主DNS服務器或其他的輔助DNS服務器請求數據傳輸過程 完全區域傳送:傳送區域的所有數據,AXFR 增量區域傳送:傳送區域中改變的數據部分,IXFR
acl telecom{ 1.2.0.0/16 4.5.8.0 } acl unicom{ 6.4.0.0/16 4.5.3.0 } view { //一個邏輯的dns服務器 recursion no; 不給遞歸 match-clients {telecom}; //telecom 是一個acl 范圍 zone "magelinux.com" IN { type master ; file "magelinux.com.internal"; //文件可以是同一個 }; }; view { match-clients{ unicom }; //unicom 是一個 acl 范圍 zone "magelinux.com" IN { type master; file "magelinux.com.external"; }; }; 缺陷: 如果IP地址沒有收集齊全,就悲劇了, 所以最好還是定義一個Other (默認) view { match -clients {any ;} zone "magelinux.com" IN { type master; file "magelinux.com.other"; }; }; 只要寫入view,所有的都應該寫在view中 自上而下匹配
主配置文件: :定義區域 /etc/named.conf 案例: magelinux.com
主配置文件 定義區域 /etc/named.conf
至少有三個區域: 根,localhost ,127.0.0.1 options { listen -on port 53 { any;}; //全局選項 directory "/var/named" ; allow-query { any; }; 允許所有客戶端查詢 recursion yes | on ; 是否運行遞歸 } ; zone "zone name" IN { //定義區域的 type{hint(根)|master(主)|slave(從)|forward(轉發)} file “named.ca” } ; loggin { //定義日志的 }; include "文件位置" 加載別的文件 <!-- named-checkconf 檢查主配置文件 service named configtest named -u named 手動啟動 name-checkzone "區域" “區域文件位置” 檢查配置文件 --> 定義監聽的地址 recursion 是否允許遞歸查詢
dig 命令
dig [-t type] [-x a ddr] name @DNS服務器 +[no]trace [不]適用迭代 +[no]tcp 是否使用tcp +[no]recurse:是否使用遞歸
host
host[-t type] {name} [server]
nslookup
nslookup> server DNS_SERVER_IP set q=TYPE {name}
區域數據文件 /var/named/
用戶: named 組: named
第一條必須SOA 應該具有NS記錄,但不能出現MX和A 記錄 較常見的即為PTR紀錄 名稱為逆向的主機地址
反解:
zone "100.16.172.in-addr.arpa " IN { type master ; file "172.16.100.zone"; } 在 /var/named/下創建172.16.100.zone ![](media/14595736364157/14601888712923.jpg) tail /var/log/messages 檢查日志 dig -x 172.16.100.7 檢查區域 named-checkzone "100.16.172.in-addr.arpa" 172.16.100.zone
用dig 模擬完全區域傳送 #dig -t axfr 區域名稱 @server 主從同步: /etc/resolv.conf nameserver Master_DNS_IP nameserver SLAVE_DNS _IP 主從版本: 主: bind版本可以低於從的版本 從: 主的版本不能高於從的版本 兼容問題 向區域中添加從服務器的關鍵兩步 : 1. 在上級獲得授權) 2. 在區域數據文件中為從服務器添加一天ns記錄和對應的A記錄 或PTR紀錄 在/etc/named.rfc1912.zones下 zone "magelinux.com" IN { type slave; masters { 172.16.100.7 ; }; file "slaves/magelinux.com.zone"; } 區域傳送安全控制: allow-transfer { IP ; }; 指定IP做區域傳送
遠程管理bind的工具 Rndc : 密鑰 rndc :保存於rndc 的配置文件中 bind: 持有一半點的密鑰,保存於主配置文件中 rndc 的配置文件 /etc/rndc.conf CentOS ,RHEL : /etc/rndc.key reconfig 只重新讀取配置文件並且加載新增加的區域 querylog: 關閉或開啟查詢日志 stop 關閉服務 flush 清空服務器的緩存 flushname name:只清空指定名稱相關的緩存 trace:打開debug,調試模式,debug有級別的概念,每執行一次提升一個等級 trace LEVEL:指定debug的級別 如果rndc無法正常工作,可嘗試使用rndc-confgen生成/etc/rndc。conf配置文件,並將配置文件中的後半部分復制到BIND的主配置文件中按指示啟用即可 rndc-confgen > /etc/rndc.conf
定義: 在父域的配置文件中添加如下項: 授權的子區域名稱 子區域的名稱服務器 子區域的名稱服務器的IP地址 名稱 IN NS IP dns.tech 子域名 glue record 膠水效果
定義: 解析某本機不負責的區域內的名稱時不轉發給根,而是轉給制定的主機 轉發非本機負責解析的所有區域 options{ forward only|frist forwarders{ ip; } } 轉發某特定區域 zone"特定區域" IN{ type forward; forwarders{ ip; } forward only | frist <!-- only:服務器將只會請求 forwarders中的DNS主機 frist: 服務器首先請求 forwarders list ,如果 forwarders list 中的DNS主機不應答,該主機將自己去找應答--> } 運行使用轉發的前提: 本機要在對方的允許的遞歸主機列表中
allow-transfer{};通常都需要啟用,從服務器 allow-query{};此項僅用於服務器是緩存名稱服務器時,只開放查詢功能給本地客戶端 allow-recursion{可以使用網段};允許遞歸的白名單 allow-update{ none; }:允許動態更新數據文件的主機白名單
acl ACL_NAME{ 172.16.0.0/16 192.168.0.0/24 127.0.0.0/8 } 訪問控制列表只有定義後才能使用,通常acl要定義在named.conf的最上方 BIND有四個內置的acl any:任何主機 none:無一主機 local:本機 localnet:本機所在的網絡 view,編譯安裝named,如何實現對named做壓力測試,BIND dlz
1.修改/etc/named.conf listen-on port 53 {any;}; allow-query {any;}; 2.修改/etc/named.rfc1912.zones 添加要解析的域 zone "xxx.com" IN { type master; file "xxx.com.zone"; allow-update {none;}; } ; 3. 添加數據庫文件/var/named/xxx.com.zone xxx.com. IN SOA ns1.xxx.com. root.xxx.com. (20160402 1d 1h 1w 1h) xxx.com. IN NS ns1.xxx.com. ns1.xxx.com. IN A 192.168.30.98 www.xxx.com IN A 192.168.30.98 4.重啟服務 service named restart 5. 修改/var/named/xxx.com.zone 文件的用戶和用戶組 chown named.named /var/named/ —R 6.檢查nameserver 是否為本機IP nameserver 192.168.30.98 7.重啟服務 service named restart 8. nslookup 測試 nslookup IP
$TTL 600 @ IN SOA dns.magelinux.com. dnsadmin.magelinux.com. ( 20160410 1H 5M 3D 12H) IN NS dns IN MX 10 dns www IN A 192.168.1.11 dns IN A 192.168.1.10 mail IN A 192.168.1.12 pop IN CNAME mail ftp IN CNAME www //加入信息 tech IN NS dns.tech.magelinux.com. dns.tech.magelinux.com. IN A 192.168.10 要在另外一台服務器中增加 vim /etc/named.rfc1912.zones zone "tech.magelinux.com" IN { type master; file "tech.magelinxu.com.zone"; } 創建一個 techo.magelinux.com.zone $TTL 600 @ IN SOA dns.tech.mageliunx.com (20160410 1H 5M 3D 1D) IN NS dns IN MX 10 mail dns IN A 192.168.2.10 www IN A 192.168.2.11 ftp IN A 192.168.2.12 更改屬組 和權限