在很多情況下一些web服務都會要求對內外網來的用戶解析成不同的地址。這就需要DNS的分離解析技術。其實這個技術也是跟我們國內的網絡情況有關的,兩大運營商,電信、連通。特別是一些電商網站爲了讓用戶有更好的體驗效果解析速度更快,所以就用到了DNS分離解析技術,來自不同運營商的用戶解析到相對應的服務器這樣就大大提升了訪問速度。
有有時候也叫智能DNS。。。。。下面就來了解下"DNS分離解析"的運作原理吧!
配置步驟
1、規劃拓撲
2、安裝DNS服務的軟件包
3、配置主配置文件
4、配置解析庫文件
5、檢查配置文件語法、啓動服務並測試
一、規劃拓撲
二、安裝DNS服務的軟件包
[root@localhost ~]# yum -y install bind*
中間那臺DNS服務器有兩塊網卡,一塊連接win主機用,一塊連接內網虛擬機用。
三、配置主配置文件
[root@localhost ~]# vi /etc/named.conf options { listen-on port 53 { 192.168.2.80; }; //監聽本機或者any,若把此項註釋掉則表示監聽所有。特別注意:此處的大括號裏的內容要與括號中間有空格,否則服務無法啓動。 //listen-on-v6 port 53 { ::1; }; //ipv6的監聽,可註釋掉 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; }; //允許所有主機解析,僅限實驗環境下使用,真實環境爲了保證外網用戶不能遞歸查詢不能用any。 recursion yes; //允許遞歸查詢 //dnssec-enable yes; //dnssec是爲了解決DNS欺騙和緩存污染而設計的一種安全機制。目前實驗環境不建議開啓。 //dnssec-validation y //dnssec-lookaside auto; /* Path to ISC DLV key */ //bindkeys-file "/etc/named.iscdlv.key"; //managed-keys-directory "/var/named/dynamic"; }; 下邊的內容就按默認配置來就行了,只不過需要把zone “.”這塊內容給移走,移動到named.rfc1912.zones,我們在這個文件中專門存放zone,次文件在/etc/下。 logging { channel default_debug { file "data/named.run"; severity dynamic; }; }; include "/etc/named.rfc1912.zones"; //centos6會把一個比較大的配置文件分散成多個小的,並關聯起來,此項就是說明named.rfc1912.zones也是DNS的配置文件,只不過我們讓這個文件專門存放zone //include "/etc/named.root.key"; //此項是dnssec的key存放的文件,由於前邊我們已經把它給註釋掉了,所以此項也無用。
特別注意:DNS的所有配置文件中“{}”這樣的括號裏有內容的話內容一定要與括號之間有空格否則服務無法啓動。我們也可以每配置完配置文件保存後用語法檢查命令來查看我們的配置語法是否有誤,這樣總比全部配置完後報錯來的容易。
保存退出。
[root@localhost ~]# service named configtest //檢查配置文件語法
然後編輯vim /etc/named.rfc1912.zones ,在這個配置文件中我們來定義內網和外網的view
view "lan" { //定義內網view,命名爲lan match-clients { 10.0.0.0/24; }; //設定可解析的客戶端,此處可以是具體的IP,也可是網段,也可是我們定義的ACL(ACL的定義方式這裏不細說) zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "localhost" IN { type master; file "named.localhost"; allow-update { none; }; }; zone "1.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.0.ip6.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; zone "0.in-addr.arpa" IN { type master; file "named.empty"; allow-update { none; }; }; zone "jinsanhong.com" IN { //這個zone就是我們要解析的區域 type master; //類型,類型有hint,master,Slave,swap。Hint是根區域類型,master和slave是用來做DNS的主從,swap是交換類型。 file "jinsanhong.com.lan"; //定義區域解析庫文件,此路徑是相對路徑,相對named.conf中 directory "/var/named"這個路徑,所以區域解析文件要放在/var/named下。 }; zone "." IN { type hint; file "named.ca"; }; }; view "wan" { //這是我們定義的外網view match-clients { 192.168.2.0/24; }; zone "jinsanhong.com" IN { type master; file "jinsanhong.com.wan"; }; };
注:一旦啓用view,所有的zone必須都在view下,所以要把系統默認的自檢用的zone也放在view下。
四、配置區域解析庫文件
然後我們就來編輯區域解析庫文件。
cp -p /var/named/named.localhost /var/named/jinsanhong.com.lan //使用-p複製能夠保留源文件的屬組屬主和權限(這點很重要) cp -p /var/named/named.localhost /var/named/jinsanhong.com.wan
注:如果複製的時候沒有用-p選項的話也不要緊,我們可以使用如下命令修改:
chown root:named jinsanhong.com.*
chmod 640 jinsanhong.com.*
Vim jinsanhong.com.lan $TTL 1D @ IN SOA ns.jinsanhong.com. admin.jinsanhong.com. ( 2015081310 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns.jinsanhong.com. ns.jinsanhong.com. IN A 10.0.0.3 //這是DNS服務器內網卡IP www.jinsanhong.com. IN A 10.0.0.2 //解析的web服務地址
Vim welcome.zone.wan $TTL 1D @ IN SOA ns.jinsanhong.com. admin.jinsanhong.com. ( 2015081310 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum IN NS ns.jinsanhong.com. ns.jinsanhong.com. IN A 192.168.2.80 //這是DNS服務器外網卡IP www.jinsanhong.com. IN A 192.168.2.80 // 解析的web服務地址
五、檢查配置文件語法、啓動服務並測試
檢查配置文件 service named configtest 然後重啓named服務器 Service named restart 然後測試 [root@localhost ~]# host -t A www.jinsanhong.com 192.168.2.80 Using domain server: Name: 192.168.2.80 Address: 192.168.2.80#53 Aliases: www.jinsanhong.com has address 192.168.2.80 這是用的外網地址測試,解析到的IP地址是192.168.2.80(就是我們設置的外網webIP) [root@localhost ~]# host -t A www.jinsanhong.com 10.0.0.3 Using domain server: Name: 10.0.0.3 Address: 10.0.0.3#53 Aliases: www.jinsanhong.com has address 10.0.0.2 這是用的內網地址測試,解析到的IP地址是10.0.0.2(這是我們設置的內網webIP)
注:域名後邊加的IP 是我們DNS服務的內外網卡的IP
接下來我們用win主機測試我們在虛擬機中搭建的DNS服務
首先保證我們的win主機的IP和虛擬機的外網IP在同一網段內,並設置win主機的DNS地址爲虛擬主機外網IP(網關不用設置)
然後修改虛擬主機的/etc/resolv.conf文件
Servername = 192.168.2.80 //此IP是我們虛擬機的DNS IP
然後就能在我們的win主機上使用nslookup www.jinsanhong.com來測試了
內網測試就需要我們用另外一臺虛擬機來測試了,這裏不做具體說明。
六、一些常見錯誤的解決辦法
錯誤一
“/etc/named.conf:47: when using 'view' statements, all zones must be in views”
表示你的zone沒有全部添加到view下
兩種解決辦法:
1、/*view localhost_resolver { match-clients { localhost; }; match-destinations { localhost; }; recursion yes; include "/etc/named.rfc1912.zones"; };*/ 此處要將view字段註釋掉 2、 view "other" { zone "." IN { type hint; file "named.ca"; }; }; 將所有的zone都放在視圖下。
錯誤二
jinsanhong.com.lan:9: ignoring out-of-zone data (ns.jisanhong.com) zone jinsanhong.com/IN: NS 'ns.jinsanhong.com' has no address records (A or AAAA) zone jinsanhong.com/IN: not loaded due to errors. lan/jinsanhong.com/IN: bad zone zone jinsanhong.com/IN: loaded serial 2015081310 [FAILED]
提示我們沒有解析到地址,多半都是我們的解析庫文件配置出錯,仔細檢查我們的解析庫文件配置,大部分的錯誤是域名寫錯。
錯誤三
測試的時候能ping通DNS但是就是提示連接超時或者是沒有找到www.****.com之類的錯誤
大部分原因是防火牆的關係,我們檢查一下iptables表是否允許53端口通過,也可關閉防火牆。