Linux中配置DNS服務
一、什么是DNS
DNS (Domain Name System) 是域名服務 ,它是由解析器和域名服務器組成的。
域名服務器是指保存有該網絡中所有主機的域名和對應IP地址,
并具有將域名轉換為IP地址功能的服務器。(將網址解析成IP,或者將IP解析成網址)
將域名映射為IP地址的過程就稱為"域名解析"。
在Internet上域名與IP地址之間是一對一(或者多對一)的,
也可采用DNS輪循實現一對多,域名雖然便于人們記憶,
但機器之間只認IP地址,它們之間的轉換工作稱為域名解析,
域名解析需要由專門的域名解析服務器來完成,DNS就是進行域名解析的服務器。
網址有一個專有名詞:完全合格域名
完全合格域名 = 主機名稱 + 域名(根域 + 頂級域 + 二級域)
根域:.
頂級域:分為組織域和國家或地區域。
組織域采用3個字符代號,如.com .edu .gov
國家或地區域,采用兩個字符代號,如.cn .jp
二級域:二級域注冊到個人、組織或者公司名稱,如baidu、taobao等
主機名稱:主機名稱處于域名空間的最底層,主機名與上述各級域名結合構成FQND(完全合格域名)
每個域用一個點號“.”分開
以www.baidu.com為例:
www:主機名稱
baidu.com:域名
根域:日常生活中一般省略(www.baidu.com.)最后的.表示根域,配置DNS時需要帶上
頂級域:.com
二級域:baidu
一個完全合格域名只能對應一個IP,一個IP可以對應多個完全合格域名。
二、DNS查詢方式(兩種)
遞歸查詢:DNS客戶端與DNS服務器之間
迭代查詢:DNS服務器與DNS服務器之間
訪問一個網站是既有遞歸又有迭代
三、DNS解析方式
正向解析:FQDN(完全合格域名)----------> IP
反向解析:IP -----------> FQDN(完全合格域名)
四、DNS服務搭建
搭建DNS服務有兩種方式:
1.bind 2.unbound
DNS服務器類型:
主DNS服務器(條目或者稱為映射信息是手寫進主DNS當中)
輔助DNS服務器(用來做備份)
unbound 不能提供輔助DNS服務器
所以一般用bind進行部署
1、在沒有DNS之前,怎樣解決
/etc/hosts 本地解析配置文件
主機1:192.168.100.10
主機2:192.168.100.20
正常情況下:兩臺主機相互ping IP地址是可以ping通的,但是ping不通主機名
主機1:
[root@stw ~]# ping 192.168.100.20
PING 192.168.100.20 (192.168.100.20) 56(84) bytes of data.
64 bytes from 192.168.100.20: icmp_seq=1 ttl=64 time=0.801 ms
64 bytes from 192.168.100.20: icmp_seq=2 ttl=64 time=1.06 ms
^C
--- 192.168.100.20 ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.801/0.933/1.065/0.132 ms[root@stw ~]# ping stw2.example.com
ping: stw2.example.com: Name or service not known
在本地解析文件中加上對方的IP地址以及對應映射的主機名
[root@stw ~]# vim /etc/hosts
[root@stw ~]# ping stw2.example.com
PING stw2.example.com (192.168.100.20) 56(84) bytes of data.
64 bytes from stw2.example.com (192.168.100.20): icmp_seq=1 ttl=64 time=0.561 ms
64 bytes from stw2.example.com (192.168.100.20): icmp_seq=2 ttl=64 time=8.10 ms
^C
--- stw2.example.com ping statistics ---
2 packets transmitted, 2 received, 0% packet loss, time 1001ms
rtt min/avg/max/mdev = 0.561/4.332/8.103/3.771 ms
注意:只在主機1中添加,則只有主機1能ping通主機2,主機2仍然ping不通主機1,想要主機2也ping通主機1,需要在主機2的配置文件中中也寫入主機1的IP地址與主機名的映射關系。
2、配置主DNS
(1)配置yum倉庫,安裝軟件包
[root@stw ~]# cd /etc/yum.repos.d/
[root@stw yum.repos.d]# ls
CentOS-Base.repo CentOS-Debuginfo.repo CentOS-Media.repo CentOS-Vault.repo
CentOS-CR.repo CentOS-fasttrack.repo CentOS-Sources.repo
[root@stw yum.repos.d]# rm -rf *
[root@stw yum.repos.d]# ls
[root@stw yum.repos.d]# vim server.repo
[root@stw yum.repos.d]# cat server.repo
[aa]
name=aa1
baseurl=file:///mnt
enabled=1
gpgcheck=0
[root@stw yum.repos.d]# mount /dev/cdrom /mnt
mount: /dev/sr0 is write-protected, mounting read-only
[root@stw yum.repos.d]# yum -y install bind bind-chroot
/etc/named.conf 映射的DNS主配置文件
/var/named 解析文件的目錄
DNS默認偵聽端口:53(指自己的地址,一般作為DNS服務器的話:any)
/var/named/chroot/etc/named.rfc1912.zones 記錄DNS正向和反向的全局解析配置文件
作用:
1、確定DNS類型 :主DNS(master) 輔助DNS(slave)
2、定義 域與網段的映射關系
3、告知具體的解析條目的文件名在哪里:正向解析數據庫 反向解析數據庫
(2)編輯主配置文件/etc/named.conf
[root@stw ~]# vim /etc/named.conf
(3)編輯全局配置文件(三個地方需要更改)
更改對應的域名和映射的網段,服務類型:master(主DNS),正向解析與反向解析的文件名
[root@stw ~]# vim /etc/named.rfc1912.zones
把文件復制到對應目錄下
[root@stw ~]# cd /var/named/
[root@stw named]# cp -p named.localhost stw.com
[root@stw named]# cp -p named.empty com.stw
[root@stw named]# ls
chroot com.stw data dynamic named.ca named.empty named.localhost named.loopback slaves stw.com
TTL 1D 緩存周期
SOA起始授權機構(后面的@改成服務器的主機名)
NS:后面接DNS的服務器
主機記錄:A
(4)編輯正向解析文件
[root@stw ~]# cd /var/named
[root@stw named]# ls
chroot com.stw data dynamic named.ca named.empty named.localhost named.loopback slaves stw.com
[root@stw named]# vim stw.com
(5)編輯反向解析的文件
[root@stw named]# vim com.stw
(6)重啟服務,關掉防火墻,更改selinux
[root@stw named]# systemctl restart named
[root@stw named]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@stw named]# systemctl stop firewalld.service
[root@stw named]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@stw named]# getenforce
Enforcing
[root@stw named]# setenforce 0
[root@stw named]# getenforce
Permissive
(7)客戶端更改網卡的DNS(指向服務器端),重啟服務,查看是否解析
[root@stw2 ~]# cd /etc/sysconfig/network-scripts/
[root@stw2 network-scripts]# vim ifcfg-ens33
[root@stw2 network-scripts]# systemctl restart network
[root@stw2 network-scripts]# nslookup
> stw.example.com //正向解析
Server: 192.168.100.10
Address: 192.168.100.10#53Name: stw.example.com
Address: 192.168.100.10
> 192.168.100.10 //反向解析
Server: 192.168.100.10
Address: 192.168.100.10#5310.100.168.192.in-addr.arpa name = stw.example.com.
>
3、配置輔助DNS
(1)配置yum倉庫,安裝軟件包(略)
(2)編輯主配置文件/etc/named.conf
[root@stw2 ~]# vim /etc/named.conf
(3)編輯全局配置文件(四個地方需要更改)
更改對應的域名和映射的網段,服務類型:slave(輔助DNS),正向解析與反向解析的文件名,定義主DNS地址(告訴輔助DNS主DNS的地址)
[root@stw2 ~]# vim /etc/named.rfc1912.zones
輔助DNS中,正向解析文件和反向解析文件不需要編輯
(4)重啟服務,關掉防火墻,更改selinux
[root@stw2 ~]# systemctl stop firewalld.service
[root@stw2 ~]# systemctl disable firewalld.service
Removed symlink /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.
[root@stw2 ~]# setenforce 0
[root@stw2 ~]# getenforce
Permissive
[root@stw2 ~]# vim /etc/selinux/config
[root@stw2 ~]# systemctl restart named
[root@stw2 ~]# systemctl enable named
Created symlink from /etc/systemd/system/multi-user.target.wants/named.service to /usr/lib/systemd/system/named.service.
[root@stw2 ~]# cd /var/named/
[root@stw2 named]# ls
data dynamic named.ca named.empty named.localhost named.loopback slaves
[root@stw2 named]# cd slaves
[root@stw2 slaves]# ls
com.stw stw.com
(5)更改網卡配置文件
[root@stw2 ~]# cd /etc/sysconfig/network-scripts/
[root@stw2 network-scripts]# vim ifcfg-ens33
[root@stw2 network-scripts]# cd
[root@stw2 ~]# systemctl restart network