DNS域名系統 ,是一種協議, 工作在應用層
監聽 的埠:TCP 53 :輔助域名伺服器往主域名伺服器傳輸信息時,用TCP53 ,主從伺服器通信
UDP 53
DNS的作用:提供域名和IP地址之間的一種相互轉換的機制,母的是為了方便人們的記憶和管理
早期的DNS是通過ftp共享的/hosts文件實現的
/etc/hosts 實現檢索
DNS的設計理念是層次性和分散式,就像我們的國家管理一樣,在DNS中DNS是一個倒樁的樹結構,1.根域 ,全球只有13台根節點伺服器,2.一級域名(.com,.org組織域和國家域,反向域是比較常用的。3.二級域,是為某個組織所擁有的4.子域,最高可以劃分63個層級結構。
下級域是要被上級域授權的,而且上級域可以管理下級域和訪問下級域,但是下級域不知道上級域。
DNS解析的過程由兩種,遞歸和迭代。遞歸就是DNS客戶機只需向DNS伺服器發出一次請求,DNS伺服器通過向根域請求,根域向下級域查詢,把需求的結果返回給DNS伺服器。迭代是DNS伺服器向根域請求,根域返回的結果是參考答案,也就告訴它,哪個下級域知道,讓DNS伺服器自己向那個域查詢。
解析順序;1是否為本機 2 是否有DnS緩存 3 查找hosts文件 4. 查找DNS伺服器
區域類型;
hint 根提示
master 主域名伺服器
slave 從域名伺服器
forward 轉發域
記錄類型:
子域要想讓別人知道要讓上級有你的記錄
SOA記錄 起始授權記錄(標識主域名伺服器)
NS記錄 聲明本域的域名伺服器
A記錄 主機名轉換成IP地址(正向解析)
PIR IP地址轉換為主機名(反向解析)
MX記錄 標識郵件伺服器 針對一個域中的那一台是 mail伺服器 必須具有反解 可以有多條 是具有優先順序的,0-99,越大越高
CNAME 別名
SOA記錄只能有一個並且必須放在最前面
全局TTL配置項及SOA記錄
$TTL(Time To Live,生存時間)記錄
SOA(Start Of Authority,起始授權記錄)記錄
分號“;”開始的部分表示註釋信息
例子:
$TTL 86400 ; 有效地址解析記錄的默認緩存時間
@ IN SOA 6688.cc.(該DNS區域的地址) admin.6688.cc. ( (該DNS區域管路員的郵箱地址)
2009021901 serial 更新序列號用於標記地址資料庫的變化,可以是10位以內的整數
3H refresh time 刷新時間從伺服器到主伺服器查看是否更新間隔時間
15M retry time 重試延時從域名伺服器更新地址資料庫失敗以後,等待多長時間再次嘗試
1W(1周)expire time 失效時間 聯繫主伺服器當聯繫了7天還是聯繫不到時,輔伺服器則殉情!在這7天中輔伺服器形式主伺服器的職責,從新選取主輔伺服器
1D negative answer ttl 否定答案的緩存時間 設置無效地址解析記錄(該資料庫中不存在的地址)的默認緩存時間
緩存域名伺服器
也稱為高速緩存伺服器
通過向其他域名伺服器查詢獲得域名->IP地址記錄
將域名查詢結果緩存到本地,提高重複查詢時的速度
主域名伺服器
特定DNS區域的官方伺服器,具有唯一性
負責維護該區域內所有域名->IP地址的映射記錄
從域名伺服器
也稱為 輔助域名伺服器
其維護的 域名->IP地址記錄 來源於主域名伺服器
區域傳送:主伺服器和輔伺服器同步
完全區域傳送: axfr 剛開始要完全傳送
增量區域傳送: ixfr 完全以後的同步
tcp 53 主從伺服器的通信
主伺服器做出改變的時候會主動的同步到輔伺服器上
域名解析記錄
NS域名伺服器(Name Server)記錄
MX郵件交換(Mail Exchange)記錄
A地址(Address)記錄,只用在正向解析的區域數據文件中
CNAME別名(Canonical Name)記錄
例子:
@ IN NS ns1.6688.cc.
IN MX 10 mail.6688.cc.
ns1 IN A 192.168.0.181
mail IN A 192.168.0.181
www IN A 192.168.0.181
ftp IN CNAME www
解析類型
域名-->IP 正向解析
IP-->域名 反向解析
一個正向或一個反向解析文件組成一個區域
區域:物理概念
域:邏輯概念
域可以劃分子域,正向解析,反向解析,
子域里也有正向解析和反向解析
每一個正向解析,反向解析都要具有一個解析庫
每一個解析庫對應一個區域
BIND簡介
在Linux中,域名服務(DNS)是由柏克萊網間名域( Berkeley Internet Name Domain——BIND)軟體實現的。
BIND是一個客戶/服務系統,它的客戶方面稱為轉換程序(resolver),它產生域名信息的查詢,將這類信息發送給伺服器,DNS軟體回答轉換程序的查詢。BIND的服務方面是一個稱為named的守護進程。
BIND(Berkeley Internet Name Daemon)
伯克利Internet域名服務
官方站點:https://www.isc.org/
相關軟體包
bind-9.3.3-7.el5.i386.rpm
caching-nameserver-9.3.3-7.el5.i386.rpm
為配置BIND作為緩存域名伺服器提供必要的默認配置文件
可以在配置文件中稍作修改,讓它做為主伺服器用
BIND伺服器端程序
主要執行程序:/usr/sbin/named
服務腳本:/etc/init.d/named
默認監聽埠:53
主配置文件:
/etc/named.conf
保存DNS解析記錄的數據文件位於:
/var/named/
裝DNS
配置BIND伺服器
編輯“/etc/named.conf”文件
在“/var/named/”目錄下創建並編輯正向區域解析文件
在“/var/named/”目錄下創建並編輯反向區域解析文件
編輯客戶端文件“/etc/resolv.conf”文件
啟動BIND伺服器
配置客戶端並進行測試
確定需配置成DNS伺服器的IP是靜態分配,並且與客戶端具有IP的連通性
智能解析:一個主機名對應兩個ip地址叫負載均衡
www.linuxidc.net
CDN:把用戶要訪問的數據推送到用戶的家門口
下面將告訴大家怎樣手動做DNS
做主DNS伺服器
1.rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
algorithm hmac-md5;
secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
};
複製到/etc/named.conf配置文件中
vim /etc/named.conf
編寫options {
directory "/var/named";
querylog yes;啟動日誌
version "hh";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
保存退出。
chmod o-r /etc/named.confd需要把它的許可權改為其他用戶沒有任何許可權
chgrp named /etc/named.conf 把屬組改為named
cd /var/named/
編寫區域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca 獲取所有的記錄
編寫localhost.zone區域文件
vim localhost.zone
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
localhost. IN A 127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
chown :named localhost.zone named.*
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
named-checkzone "localhost" localhost.zone
service named start啟動服務
tail /var/log/messages,查看日誌看是否有錯誤
vim /etc/named.conf
編輯正向解析和反向解析
zone "6688.cc" IN {
type master;
file "6688.cc.zone";
};
zone "0.168.192.in-addr.arpa" IN {
type master;
file 192.168.0.local";
};
cd /var/named
vim 6688.cc.zone
$TTl 600
$ORIGIN 6688.cc.
@ IN SOA nsl.6688.cc. admin.6688.cc.(
2011112401
1H
10M
7D
1D)
IN NS nsl
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
ns1 IN A 192.168.0.181
ns2 IN A 192.168.0.182
mail IN A 192.168.0.181
mail2 IN A 192.168.0.182
www IN A 192.168.0.181
ftp IN A 192.168.0.181
www2 IN CNAME www
cp 6688.cc.zone 192.168.0.local
vim 192.168.0.local 修改內容
$TTl 600
$ORIGIN 6688.cc.
@ IN SOA nsl.6688.cc. admin.6688.cc.(
2011112401
1H
10M
7D
1D)
IN NS nsl
IN NS ns2
IN MX 10 mail
IN MX 20 mail2
181 IN PTR ns1
182 IN PTR ns2
181 IN PTR mail
182 IN PTR mail2
181 IN PTR www
181 IN PTR ftp
chmod o-r 6688.cc.zone 192.168.0.local
chgrp named 6688.cc.zone 192.168.0.local
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
service named restart
tail /var/log/messages
關閉selinux
setenforce 0
rndc是 dns遠程配置工具
rndc flush 清空linux的dns 緩存
rndc status 查看DNS的區域
rndc reload 重新讀取配置文件
rndc trace 2 調試第二個進程
rndc stop 停止服務
rndc notrace 停止調試
rndc freeze zone 讓某個區域不能工作
retransfer 重傳某個區域
配置從伺服器
和創建主伺服器一樣
rndc-confgen > /etc/rndc.conf
cat !$
把key "rndckey"{
algorithm hmac-md5;
secret "uAgAJYS+FB3xvAWoVxctGQ==";
};
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; } keys { "rndckey"; };
};
複製到/etc/named.conf配置文件中
vim /etc/named.conf
編寫options {
directory "/var/named";
querylog yes;啟動日誌
version "hh";
};
zone "." IN {
type hint;
file "named.ca";
};
zone "localhost" IN {
type master;
file "localhost.zone";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.local";
};
保存退出。
chmod o-r /etc/named.confd需要把它的許可權改為其他用戶沒有任何許可權
chgrp named /etc/named.conf 把屬組改為named
cd /var/named/
編寫區域文件named.ca localhost.zone named.local
dig -t NS . > /var/named/named.ca 獲取所有的記錄
編寫localhost.zone區域文件
vim localhost.zone
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
localhost. IN A 127.0.0.1
cp localhost.zone named.local
修改named.local
vim named.local
$TTL 43200
@ IN SOA localhost. root.localhost. (
2011112401
3H
15M
1W
1D)
IN NS localhost.
1 IN PTR localhost.
chown :named localhost.zone named.*
named-checkconf 檢查主配置文件
named-checkzone 檢查區域文件
named-checkzone "localhost" localhost.zone
service named start啟動服務
tail /var/log/messages,查看日誌看是否有錯誤
dig -t axfr 6688.cc
vim /etc/named.conf
zone "6688.cc" IN {
type slaves;
file "slaves/6688.cc.zone";
masters { 192.168.0.181; };
};
service named restart
tail /var/log/messages
關閉selinux
setenforce 0
測試:cd /var/named/slaves
cat 6688.cc.zone
看是否有主伺服器的正向解析,如果有,就成功了。然後把主伺服器的正向解析區域文件做一點修改,看是否可以同步。
子域授權:
在父域的正向解析配置文件中添加NS記錄和A記錄
有幾個NS伺服器就要寫幾條NS記錄以及對應的A記錄
如果想要子域可以解析父域可以再
在子域的配置文件中添加
forward:
zone "gagedu.com" IN {
type forward;
forwarders { 192.168.0.181; };
forward only|first;
};
forward only 遞歸轉發
forward first 先嘗示遞歸,然後用迭代
也可以在全局使用forward,可以讓主機通過轉發主機訪問它所知道的域
options {
forward only |first;
forwarders {IP;};
}
為了實現安全區域傳送需要加以限制
Allow-transfer {192.168.0.1}
Allow-transfer {none;}
在DNS中使用Acl 要先定義acl再使用
acl "name" {
主機列表;
};
在要限定的區域寫allow-transfer { name; };允許傳送
allow-query { name; }; 允許誰查詢
在全局中用 allow-recursion { none; }; 不允許遞歸
智能DNS:
根據客戶端來源IP地址,來為某一個解析請求返回一個設定好的解析結果
每個view裡面都可以定義多個區域
只要我們使用了view,每一個區域都要在view裡面
用關鍵字match-clients 來匹配客戶端請求來源
view view-name{
match-clients { 191.168.0.0/24; };
zone
};
比較亂,大家多多包涵,有不足或錯誤的地方,大家一定要指出來。
[火星人 ] RedHat Linux 5 DNS伺服器配置詳解已經有605次圍觀