一. DNS原理
DNS 為Domain Name System(域名系統)的縮寫,它是一種将ip位址轉換成對應的主機名或将主機名轉換成與之相對應ip位址的一種服務機制。其中通過域名解析出ip位址的叫做正向解析,通過ip位址解析出域名的叫做反向解析。DNS使用TCP和UDP, 端口号都是53, 但它主要使用UDP,伺服器之間備份使用TCP。全世界隻有13台“根”伺服器,1個主根伺服器放在美國,其他12台為輔根伺服器。
使用A記錄和CNAME進行域名解析的差別A記錄就是把一個域名解析到一個IP位址(Address,特制數字IP位址),而CNAME記錄就是把域名解析到另外一個域名。其功能是差不多,CNAME将幾個主機名指向一個别名,其實跟指向IP位址是一樣的,因為這個别名也要做一個A記錄的。但是使用CNAME記錄可以很友善地變更IP位址。如果一台伺服器有100個網站,他們都做了别名,該台伺服器變更IP時,隻需要變更别名的A記錄就可以了。
二. 使用bind搭建DNS伺服器
安裝bind
yum install -y bind
cp /etc/named.conf /etc/named.conf.bak
/etc/named.conf any:可以由任何ip監聽53端口 allow-query:當寫本機時 2、配置檔案 定義了本機正向、反向解析;新增fengche.com的域名驗證 以下兩項必須得添加,才能轉發出去(通路外網) forward first; forwarders { 202.96.128.86;202.96.134.33; }; any:任何主機都可以通路
vim /etc/named.conf
//
// named.conf
// Provided by Red Hat bind package to configure the ISC BIND named(8) DNS
// server as a caching only nameserver (as a localhost DNS resolver only).
// See /usr/share/doc/bind*/sample/ for example named configuration files.
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; };
recursion yes;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
zone "." IN {
type hint;
file "named.ca";
zone "localhost" IN {
type master;
file "localhost.zone";
zone "0.0.127.in-addr.arpa" IN {
file "named.local";
zone "fengche.com" IN {
file "fengche.com.zone";
zone "3.168.192.in-addr.arpa" IN {
file "192.168.zone";
#include "/etc/named.rfc1912.zones";
#include "/etc/named.root.key";
3、正向解析本地主機的配置檔案
[root@dns-server named]# vi localhost.zone
@ IN SOA localhost. admin.localhost. (
2017120110 ;serial #序列号
1H ;refresh #伺服器更新時間
10M ;retry #重新更新時間
7D ;expire #失效時間
1D ;minmun #緩存時間
)
@ IN NS localhost.
localhost. IN A 127.0.0.1
4、反向解析本地主機的配置檔案
[root@dns-server named]# vi named.local
$TTL 86400
2017120110
1H
10M
7D
1D
1 IN PTR localhost
5、正向解析fengche.com的配置檔案
[root@dns-server named]# vi /var/named/fengche.com.zone
@ IN SOA fengche.com. admin.fengche.com. (
1W
3H
@ IN NS ns.fengche.com. ;域名解析記錄
ns IN A 192.168.3.180
www IN A 192.168.3.83 ;主機記錄
mail IN A 192.168.3.90
test IN CNAME mail.fengche.com ;别名記錄
ts IN CNAME mail.fengche.com
6、反向解析192.168.3.X的ip位址
[root@dns-server named]# vim /var/named/192.168.zone
$TTL 600
@ IN SOA ns.fengche.com. admin.fengche.com. (
@ IN NS ns.fengche.com.
10 IN PTR ns.fengche.com.
11 IN PTR mail.fengche.com.
73 IN PTR www.fengche.com.
7、更改權限
chown named /etc/named.conf
8、生成named.ca檔案
cd /var/named/
dig -t NS . > named.ca
三、驗證配置檔案
檢測配置是否有問題: named-checkconf
檢測正解析: named-checkzone "localhost" /var/named/localhost.zone
named-checkzone "fengche.com" /var/named/fengche.com.zone
檢測反解析: named-checkzone "0.0.127.in-addr.arpa" /var/named/named.local
named-checkzone "3.168.192.in-addr.arpa" /var/named/192.168.zone
rndc-confgen -r /dev/urandom -a #這一步是生成 rndc.key, 如果沒有這個key namd 是啟動不了的。
chown named:named /etc/rndc.key
四、啟動
/etc/init.d/named start
netstat -lnp |grep named // 檢視一下named程序是否監聽了53端口
五、驗證
測試正向解析:
dig @127.0.0.1 localhost.
dig @127.0.0.1 www.fengche.com
測試反向解析:
dig @127.0.0.1 -x 127.0.0.1
dig @127.0.0.1 -x 192.168.3.73 #檢視是否是配置檔案中定義的www.fengche.com
測試别名:
dig test.fengche.com #檢視是否是mail.fengche.com
在linux伺服器上驗證:
設定dns伺服器為192.168.3.180
[root@centos7 ~]# vi /etc/resolv.conf
nameserver 192.168.3.180
驗證通過:
[root@centos7 ~]# nslookup
www.fengche.com Server: 192.168.3.180 Address: 192.168.3.180#53
Name: www.fengche.com
Address: 192.168.3.83
mail.fengche.com
Name: mail.fengche.com
Address: 192.168.3.90
本文轉自 jiekegz 51CTO部落格,原文連結:http://blog.51cto.com/jacksoner/2046401