如何實現dns服務器?
dns實驗做測試的時候能夠解析,但是在互聯網上無法得到:
假設我已經註冊了一個域zledu.com,ip地址網段爲:172.16.100.0/24的掩碼。
ns 172.16.100.1
www 172.16.100.1,172.16.100.3
mail 172.16.100.2
ftp www
DNS:BIND
早期:Berkeley Internet Name Domain
現在:ISC www.isc.org
這個網站提供了兩種服務:BIND與dhcpd。
目前版本:9.7.2
步驟:
yum list all|grep "^bind"
卸載: rpm -e utils libs
yum install bind97-libs bind97-utils
bind97是一定要裝的;
yum install bind97
bind97:
/etc/named.conf
BIND進程的工作屬性
區域的定義
/etc/rndc.key
rndc: Remote(偏僻的,遙遠的) Name Domain Controller(讓rndc命令能夠遠程執行的祕鑰文件)遠程控制dns服務器進程開啓重啓甚至
修改主配置文件的一個非常常用的命令。因此rndc文件是一個可以讓rndc命令可以遠程工作的一個。事實上bind自身的文件叫做rndc.conf;
一般來講有一個就夠了。
密鑰文件
配置信息:/etc/rndc.conf
/var/named/
區域數據文件;區域數據文件默認情況下需要管理員自己去創建,至於叫什麼名字,有管理員自己去定義。
/etc/rc.d/init.d/named
{start|stop|restart|status|reload|configtest}
所以安裝完畢之後,就可以使用這些命令了。重讀其數字文件和數據文件。
二進制程序的名字:named;只不過軟件包的名字叫做bind。
yum install bind97-devel
當我們針對bind軟件進行二次開發的時候需要用bind-devel
bind-chroot:(加強服務器系統安全性而言需要使用chroot包,但是對剛學習的你們而言,請確保這個軟件包一定不要裝)
默認: named
用戶:named
組:named
將named運行的進程統統搬到一個假的根的位置。統統放到/var/named/chroot/下面,讓它以它爲根。請確保這個軟件包一定不要裝。
/var/named/chroot/
etc/named.conf
etc/rdnc.key
sbin/named
var/named/
另外一個軟件包名字:
yum info caching-nameserver;能夠讓我們的服務器稱爲緩存名稱服務器。緩存服務器跟主dns服務器的配置一般來說是沒有區別的。
如我們要配置一個主dns服務器,首先我們要配置一個緩存dns服務器。而後再配置我們所需要的域,它就成了主dns服務器了。
緩存-->主-->從
rpm -ql bind97 查看bind包裏面有兩個重要的命令,一個叫做named-checkconfig;另外一個叫做name-checkzone;
named-checkconfig
named-checkzone
/etc/named.conf和/etc/named.rfc1912.zones都是安裝完bind97包之後,自動生成的。
cd /var/named
cat named.ca其下面全是根域名服務器;
dig: Domain Information Gropher(到域名服務器裏面去查找它的相關信息)
service named start 開啓dns服務器;
DNS:
監聽的協議及端口:
53/udp
53/tcp
953/tcp, rndc
cat /etc/named.conf
SOCKET: 套接字
IP:PORT
通過套接字編程,能夠讓兩個服務器間的進程進行通信。
C/S: Client/Server
172.16.100.1:53
192.168.0.13
192.168.0.12:53
172.16.100.1:53
0.0.0.0:53 表示所有地址的服務都監聽;
recursion yes;表示允許遞歸查詢;
vim named.conf
[root@localhost etc]# vim /etc/named.conf
options {
directory "/var/named";
};
zone "." IN {
type hint;
file "named.ca"
};
zone "localhost" IN {
type master;
file "named.localhost";
};
zone "0.0.127.in-addr.arpa" IN {
type master;
file "named.loopback";
};
[root@localhost etc]# named-checkconf #檢查主配置文檔的語法錯誤;
[root@localhost etc]# named-checkzone "." /var/named/named.ca #檢查根區域文件
zone ./IN: has 0 SOA records
zone ./IN: not loaded due to errors.
[root@localhost etc]# named-checkzone "localhost" /var/named/named.localhost #檢查localhost區域文件
zone localhost/IN: loaded serial 0
OK
[root@localhost etc]# named-checkzone "0.0.127.in-arpa" /var/named/named.loopback
zone 0.0.127.in-arpa/IN: loaded serial 0
OK
區域說明:
區域:
zone "ZONE NAME" IN {
type {master|slave|hint|forward}; #hin他表示根區域;
};
主區域:
file "區域數據文件"; #是個相對路徑,相對於directory而言;
從區域:
file "區域數據文件"; #是個相對路徑,相當於directory而言;
masters { master1_ip; };#指定主服務器的IP地址
臨時性地關閉SELinux:
# getenforce
Enforcing
# setenforce 0 關閉selinux
# setenforce 1打開selinux
永久關閉:
# vim /etc/selinux/config
DNS區域:
vim /var/named/zledu.com.zone
[root@localhost named]# cat /var/named/zledu.com.zone
$TTL 600
zledu.com. IN SOA ns1.zledu.com. admin.zledu.com. (
20150521
1H
5M
2D
6H )
IN NS ns1
IN MX 10 mail
ns1 IN A 172.16.100.1
mail IN A 172.16.100.2
www IN A 172.16.100.1
www IN A 172.16.100.3
ftp IN CNAME www
測試DNS服務器:
dig -t RT NAME @IP #t表示resource type
[root@localhost named]# dig -t A www.zledu.com
dig -t NS zledu.com
dig -x IP: 表示根據IP查找FQDN
checkconfig --list |grep named
checkconfig --level 345 named on
host -t RT(RESORCE TYPE) NAME: 查詢名稱的解析結果
例如:[root@localhost ~]# host -t A www.zledu.com
www.zledu.com has address 172.16.100.3
www.zledu.com has address 172.16.100.1
nslookup: 交互式
nslookup:(同時windows也支持這種交互式命令)
server IP #設定dns服務器是那個;
set q=RT #設定資源指定類型;
NAME #此爲第一行的名字;
定義反向區域文件:
反向區域如何定義?
100.16.172.in-addr.arpa
[root@localhost named]# cat 172.16.100.zone
$TTL 600
@ IN SOA ns1.zledu.com. admin.zledu.com. (
20150521
1H
5M
2D
6H )
IN NS ns1.zledu.com.
1 IN PTR ns1.zledu.com.
1 IN PTR www.zledu.com.
2 IN PTR mail.zledu.com.
3 IN PTR