目錄
DNS基本介紹
DNS服務的搭建
主從複製
子域授權
基於bind view實現智能DNS
一、DNS基本介紹
DNS:Domain Name System,域名系統 。DNS作爲域名和IP地址相互映射的一個分佈式數據庫,能夠讓用戶更加方便的訪問互聯網。它的正向映射是把一個主機和IP地址關聯起來,它的反向映射是把IP地址和主機名關聯起來。DNS協議運用在UDP協議上,使用端口號53.
域名:DNS名字空間被組織成一個樹形結構,每個完整的域名是這棵樹的分支上的一個節點。
域名級別:
根域:/
頂級域:
國際頂級域:.com .net .org .edu等
國家地區頂級域:.cn .de .jp .hk .us等
二級域:www.mage.com,其中.magedu就是一個二級域名
DNS查詢類型:
遞歸查詢:客戶機向服務器發送請求,根服務器並不返回真實的答案,而是轉交給下一級域,一次類似,直到查到客戶機請求的域名所對應的IP地址,然後將此IP地址返回給客戶機。
迭代查詢:客戶機向DNS服務器發送請求,DNS服務器不管是否查到對應的IP地址直接返回給客戶機答案。
DNS域名解析:
正向解析:FQDN到IP地址的解析
反向解析:IP地址到FQDN的解析
DNS服務器的類型:
主服務器:維護所負責區域內解析庫的服務器
從服務器:從主服務器中同步複製對應的解析庫文件
緩存服務器:緩存所查詢多的解析條目
轉發服務器:負責非本地區域內的域名,而通過轉發到別的DNS服務器上進行本地查詢
DNS一次完整查詢的過程:
首先客戶機發送一個DNS解析請求,查看host文件中是否有相應的對應解析條目,如果沒有就差本地的緩存,緩存沒有就向根服務器發送請求查詢,根服務器會根據域名來告訴你去哪個對應的域中查詢,以此類推,查到對應的 IP然後返回給客戶機。
DNS的資源記錄:
SOA:定義一個DNS區域
NS:標識域名服務器名稱
A:名字到IPv4地址的轉換
AAAA:名字到ipv6地址的轉換
PTR:地址到名字的轉換
MX:郵件記錄
CNAME:主機的別名記錄
二、DNS服務的搭建
1、安裝DNS服務程序包bind:
yum -y install bind
2、修改/ec/named.conf配置文件
[root@bogon ~]# vim /etc/named.conf options { listen-on port 53 { any; };####DNS監聽的端口號及允許哪些主機監聽此端口號 listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; };###允許哪些主機可以進行查詢請求 recursion yes;###是否允許遞歸解析 dnssec-enable yes; dnssec-validation yes; recursion yes; dnssec-enable yes; dnssec-validation yes; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; pid-file "/run/named/named.pid"; session-keyfile "/run/named/session.key"; }; logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
3、編輯/etc/named.rfc1912.zones文件,建立正向區域文件和反向區域文件
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { ##正向解析 type master; ##類型爲主DNS file "magedu.com.zone";###正向解析庫文件 }; zone "1.168.192.in-addr.arpa" IN { ##反向解析 type master; ##反向解析類型爲主DNS file "192.168.1.zone"; ##反向解析庫文件 };
4、在/var/named目錄下建立正向區域和反向區域文件的解析庫數據
[root@bogon named]# vim magedu.com.zone######建立正向解析庫數據 $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070901 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN MX 10 mx1.magedu.com. ns1 IN A 192.168.1.104 mx1 IN A 192.168.1.10 www IN A 192.168.1.20 web IN CNAME www [root@bogon named]# vim 192.168.1.zone####建立反向解析庫數據 $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com.( 2016070901 1H 2M 3D 1D ) IN NS ns1.magedu.com. 104 IN PTR ns1.magedu.com. 10 IN PTR mx1.magedu.com. 20 IN PTR www.magedu.com. 20 IN PTR web.magedu.com. ~
5、文件限制已經建立好了我們需要來修改下權限所屬組爲named
[root@bogon named]# chown :named magedu.com.zone 192.168.1.zone [root@bogon named]# ll -rw-r--r--. 1 root named 273 Jul 9 16:28 192.168.1.zone -rw-r--r--. 1 root named 268 Jul 9 16:23 magedu.com.zone
6、檢查配置文件和區域文件語法是否正確
[root@bogon named]# named-checkconf [root@bogon named]# named-checkzone magedu.com.zone /var/named/magedu.com.zone zone magedu.com.zone/IN: loaded serial 2016070901 OK [root@bogon named]# named-checkzone 1.168.192.in-addr.arpa /var/named/192.168.1.zone zone 1.168.192.in-addr.arpa/IN: loaded serial 2016070901 OK
7、啓動named服務然後測試是否正常
[root@bogon named]# systemctl restart named.service [root@bogon ~]# dig www.magedu.com @192.168.1.104 ##正向解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 9645 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 192.168.1.20 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 1 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 22:15:50 2016 ;; MSG SIZE rcvd: 82 [root@bogon ~]# dig -x 192.168.1.20 @192.168.1.104 ###反向解析 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 192.168.1.20 @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 60239 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;20.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 20.1.168.192.in-addr.arpa. 86400 IN PTR www.magedu.com. 20.1.168.192.in-addr.arpa. 86400 IN PTR web.magedu.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 0 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 22:17:12 2016 ;; MSG SIZE rcvd: 123
三、主從複製
1、從DNS的/var/named.conf配置文件同主DNS服務器是一樣的,所有此處就不進行展示了。
2、編輯/etc/named.rfc1912.zones文件配置從服務器的正向和反向區域的解析區域
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "magedu.com" IN { type slave; masters {192.168.1.104;}; file "slaves/magedu.com.slave.zone"; }; zone "1.168.192.in-addr.arpa" IN { type slave; masters {192.168.1.104;}; file "slvaes/192.168.1.slave.zone"; };
3、啓動服務查看/var/named/slaves目錄下面會出現
192.168.1.slave.zone magedu.com.slave.zone這兩個文件:
[root@bogon slaves]# ll total 8 -rw-r--r-- 1 named named 413 May 11 23:37 192.168.1.slave.zone -rw-r--r-- 1 named named 396 May 11 23:39 magedu.com.slave.zone
4、測試,此時我們把客戶機的DNS指向到我們的從服務器地址然後看看是否可以使用呢
[root@bogon ~]# dig -x 192.168.1.20 @192.168.1.100(192.168.1.100是從DNS服務器的地址) ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> -x 192.168.1.20 @192.168.1.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 16233 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 2, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;20.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 20.1.168.192.in-addr.arpa. 86400 IN PTR web.magedu.com. 20.1.168.192.in-addr.arpa. 86400 IN PTR www.magedu.com. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 31 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Jun 21 22:39:33 2016 ;; MSG SIZE rcvd: 123 [root@bogon ~]# dig www.magedu.com @192.168.1.100(192.168.1.100是從DNS服務器的地址) ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.100 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 10729 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: www.magedu.com. 86400 IN A 192.168.1.20 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.104 ;; Query time: 0 msec ;; SERVER: 192.168.1.100#53(192.168.1.100) ;; WHEN: Tue Jun 21 22:39:53 2016 ;; MSG SIZE rcvd: 82 ok經過測試時我們的從DNS服務器是沒有問題的。但是如果主DNS中有更新條目那麼我們從服務器此時是 每有辦法同步過來的,那麼我們下一步就是做主從同步啦!
5、主從同步
在主DNS服務器的/var/named/magedu.com.zone中添加一條NS記錄,此記錄指向我們從DNS服務器的IP地址
在主DNS服務器/var/named/192.168.1.zone中添加一個NS記錄同時做相應的反向IP解析
$TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902###版本號需要更改 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN NS ns2.magedu.com.###此條爲添加的ns記錄 IN MX 10 mx1.magedu.com. ns1 IN A 192.168.1.104 ns2 IN A 192.168.1.100####對應的ns解析地址,此地址爲從DNS服務器的地址 mx1 IN A 192.168.1.10 www IN A 192.168.1.20 web IN CNAME www ~
$TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902###版本號需要更改 1H 2M 3D 1D ) IN NS ns1.magedu.com. IN NS ns2.magedu.com.###此條爲添加的ns記錄 100 IN PTR ns2.magedu.com.###對應的解析地址 104 IN PTR ns1.magedu.com. 10 IN PTR mx1.magedu.com. 20 IN PTR www.magedu.com. 20 IN PTR web.magedu.com. ~
重新加載主DNS服務器的服務:rndc reload,然後我們到從DNS中查看是已經同步了。
[root@bogon slaves]# cat 192.168.1.slave.zone $ORIGIN . $TTL 86400 ; 1 day 1.168.192.in-addr.arpa IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902 ; serial 3600 ; refresh (1 hour) 120 ; retry (2 minutes) 259200 ; expire (3 days) 86400 ; minimum (1 day) ) NS ns1.magedu.com. NS ns2.magedu.com. $ORIGIN 1.168.192.in-addr.arpa. 10 PTR mx1.magedu.com. 100 PTR ns2.magedu.com. 104 PTR ns1.magedu.com. 20 PTR www.magedu.com. PTR web.magedu.com.
[root@bogon slaves]# [root@bogon slaves]# cat magedu.com.slave.zone $ORIGIN . $TTL 86400 ; 1 day magedu.com IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070902 ; serial 3600 ; refresh (1 hour) 120 ; retry (2 minutes) 259200 ; expire (3 days) 86400 ; minimum (1 day) ) NS ns1.magedu.com. NS ns2.magedu.com. MX 10 mx1.magedu.com. $ORIGIN magedu.com. mx1 A 192.168.1.10 ns1 A 192.168.1.104 ns2 A 192.168.1.100 web CNAME www www A 192.168.1.20
ok經過查此處已經完成了同步了。
四、子域授權
我們已經擁有域magedu.com
現在我有一個子域sport.magedu.com需要對此子域進行解析
1)主DNS服務器上編輯/var/named.rfc1912.zones文件在此中添加子域的區域文件
[root@bogon named]# vim /etc/named.rfc1912.zones zone "sport.magedu.com" IN { type master; file "sport.magedu.com.zone"; };
2)在/var/named/目錄下建立sport.magedu.com.zone的區域解析數據
[root@bogon named]# vim /var/named/sport.magedu.com.zone $TTL 1D @ IN SOA ns1.sport.magedu.com. admin.sport.magedu.com. ( 2016070902 1H 2M 3D 1D ) IN NS ns1.sport.magedu.com. ns1 IN A 192.168.1.100 www IN A 192.168.1.200
3)重啓服務或者重新加載服務rndc reload
4)測試我們子域解析是否正常
[root@bogon ~]# dig www.sport.magedu.com @192.168.1.104 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.sport.magedu.com @192.168.1.104 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 31997 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.sport.magedu.com. IN A ;; ANSWER SECTION: www.sport.magedu.com. 86400 IN A 192.168.1.200 ;; AUTHORITY SECTION: sport.magedu.com. 86400 IN NS ns1.sport.magedu.com. ;; ADDITIONAL SECTION: ns1.sport.magedu.com. 86400 IN A 192.168.1.100 ;; Query time: 0 msec ;; SERVER: 192.168.1.104#53(192.168.1.104) ;; WHEN: Tue Jun 21 23:12:13 2016 ;; MSG SIZE rcvd: 88
五、基於bind view實現智能DNS
由於我們網絡訪問時候可能使用的是電信和聯通的IP地址,現在我想要實現用戶DNS請求的時候能夠判斷用戶是電信還是聯通從而給用戶對應網絡運營商IP地址。
###此實驗是單獨的與以上沒關係。
1、安裝bind服務
2、在主配置文件中定義acl規則
acl liantong { ###此處定義聯通的acl 192.168.1.104; ###模擬192.168.1.104是聯通客戶端 }; acl dianxin { ###定義電信acl 192.168.1.100; ###模擬192.168.1.100是電信客戶端 }; ####此規則需要添加到options前面 options { listen-on port 53 { any; }; listen-on-v6 port 53 { ::1; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; };
3、定義view
view liantong { match-clients {liantong;}; 調用lingtong定義的acl include "/etc/liantong.zones"; 定義linatong區域數據存放位置 }; view dianxin { match-clients {dianxin;}; include "/etc/dianxin.zones" }; view otherview { match-clients {any;}; include "/etc/named.rfc1912.zones"; }; //include "/etc/named.rfc1912.zones";###此行註釋掉 include "/etc/named.root.key";
4、將/etc/named.conf中的根區域移動到/etc/naemd.rfc1912.zones此處來,把原來的根文件需要給刪除了
[root@bogon ~]# vim /etc/named.rfc1912.zones zone "." IN { type hint; file "named.ca"; };
5、建立數據區域文件
[root@bogon ~]# vim /etc/liantong.zones zone "magedu.com." IN { type master; file liantong.zone; }; [root@bogon ~]# vim /etc/dianxin.zones zone "magedu.com" IN { type master; file "dianxin.zone"; };
6、更改權限:
[root@bogon ~]# chown :named /etc/liantong.zones /etc/dianxin.zones [root@bogon ~]# ll /etc/liantong.zones -rw-r--r--. 1 root named 64 6月 21 23:54 /etc/liantong.zones [root@bogon ~]# ll /etc/dianxin.zones -rw-r--r--. 1 root named 62 6月 21 23:55 /etc/dianxin.zones
7、建立數據區域文件的解析庫數據
[root@bogon ~]# vim /var/named/liantong.zone $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070401 1D 1H 1W 3H ) IN NS ns1 ns1 IN A 192.168.1.108 www IN A 5.5.5.5 (模擬聯通IP)
[root@bogon ~]# vim /var/named/dianxin.zone $TTL 1D @ IN SOA ns1.magedu.com. admin.magedu.com. ( 2016070401 1D 1H 1W 3H ) IN NS ns1 ns1 IN A 192.168.1.108 www IN A 6.6.6.6(模擬電信IP)
8、更改權限
[root@bogon named]# chown :named dianxin.zone liantong.zone drwxrwx---. 2 named named 4096 5月 11 07:07 data -rw-r--r--. 1 root named 410 6月 22 00:05 dianxin.zone drwxrwx---. 2 named named 4096 5月 11 07:07 dynamic -rw-r--r--. 1 root named 407 6月 22 00:05 liantong.zone -rw-r-----. 1 root named 3171 1月 11 22:12 named.ca -rw-r-----. 1 root named 152 12月 15 2009 named.empty -rw-r-----. 1 root named 152 6月 21 2007 named.localhost -rw-r-----. 1 root named 168 12月 15 2009 named.loopback drwxrwx---. 2 named named 4096 5月 11 07:07 slaves
9、重啓服務測試:
[root@bogon ~]# dig www.magedu.com @192.168.1.108 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.37.rc1.el6 <<>> www.magedu.com @192.168.1.108 ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 17536 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;www.magedu.com. IN A ;; ANSWER SECTION: ###此處可以看到電信模擬地址以解析 ;; AUTHORITY SECTION: magedu.com. 86400 IN NS ns1.magedu.com. ;; ADDITIONAL SECTION: ns1.magedu.com. 86400 IN A 192.168.1.108 ;; Query time: 1 msec ;; SERVER: 192.168.1.108#53(192.168.1.108) ;; WHEN: Thu May 12 01:22:51 2016 ;; MSG SIZE rcvd: 82