Menu
快讀
  • 旅遊
  • 生活
    • 美食
    • 寵物
    • 養生
    • 親子
  • 娛樂
    • 動漫
  • 時尚
  • 社會
  • 探索
  • 故事
  • 科技
  • 軍事
  • 国际
快讀

DNS域名解析服務bind

2022 年 8 月 16 日 吃货小厨娘

1. DNS介紹

1.1什麽是域名

域名(Domain Name) ,簡稱域名、網域,是由一串用點分隔的名字組成的Intemet上某一台計算機或計算機組的名稱,用于在數據傳輸時標識計算機的電子方位。具有獨一無二,不可重複的特性。

1.2 什麽是DNS?

域名系統(Domain Name System,縮寫: DNS)是互聯網的一項服務。域名解析是把域名指向網站空間IP,讓人們通過注冊的域名可以方便地訪問到網站的一種服務。IP地址是網絡上標識站點的數字地址,爲了方便記憶,采用域名來代替IP地址標識站點地址。域名解析就是域名到IP地址的轉換過程。域名的解析工作由DNS服務器完成。可以理解爲DNS就是翻譯官。

正向解析: 域名 –> IP地址

反向解析: IP地址 –> 域名 //郵件服務會用到。

1.3 域名的組成和分類

常見格式: www.baidu.com

完整格式: www.baidu.com.

. : 根域 ,可省略不寫 ,全球13台 ,一台主根 ,其他都是輔根

com : 頂級域, 由ICANN 組織指定和管理。

分類:

國家地區域名: cn (中國) 、hk (香港) 、sg (新加坡)等

通用頂級域名: com (商業機構) I org (非營利組織) 、edu (教育機構)等。

新通用頂級域名: red (紅色、熱情) 、top (頂級、高端)等

baidu:二級域(注冊域) ,可由個人或組織申請注冊。

www: 三級域(子域) ,服務器網站名代表。

主機名: s1.www.atguigu.com.中的s1就是主機名,一般用來表示具體某一台主機。 //不常見

DNS域名解析服務bind

2. 域名解析過程

DNS域名解析服務bind

1. 客戶機首先查看查找本地hosts文件,如果有則返回,否則進行下一步

2. 客戶機查看本地緩存,是否存在本條目的緩存,如果有則直接返回,否則進行下一步。

3. 將請求轉發給指向的DNS服務器。

4. 查看域名是否本地解析,是則本地解析返回,否則進行下一步。

5. 本地DNS服務器首先在緩存中查找,有則返回,無則進行下一步。 \\這裏的緩存是從其他dns服務器學習來的

6. 向全球13個根域服務器發起DNS請求,根域返回org域的地址列表。

7. 使用某一個org域的IP地址,發起DNS請求, org域返回kernel域服務器地址列表。

8. 使用某一個kernel域IP地址,發起DNS請求, kernel域返回www.kernel.org主機的IP地址,本地DNS服務收到後,返回給客戶機,並在本地DNS服務器保存一份。

DNS域名解析服務bind

爲了安全性,DNS服務器不是隨便搭建的,我們最多搭建一個簡單的DNS服務器。

3. DNS軟件信息

軟件名稱

bind

服務名稱

named

軟件端口

UDP 53 數據通信(域名解析)

TCP 53 數據同步 (主從同步)

配置文件:

主配置文件: /etc/nameed.conf (服務器運行參數)

DNS域名解析服務bind

區域配置文件: /etc/named.rfc1912.zones (服務器解析的區域配置,正反向區域定義信息)

DNS域名解析服務bind

數據配置文件: /var/named/xx.xx (主機名和IP地址的對應解析關系,及主從同步信息)

DNS域名解析服務bind

記錄類型:

A:

地址記錄,用來指定域名的IPv4地址的記錄

CNAME:

將域名指向另一個域名,再由另一個域名提供IP地址,就需要添加CNAME記錄

TXT:

可填寫任何東西,長度限制255。絕大多數的TXT記錄是用來做SPF的(反垃圾郵件)

NS:

域名服務器記錄,如果需要把子域名教給其他DNS服務商解析,就需要添加NS記錄。

AAAA:

地址記錄,用來指定域名的IPv6地址的記錄

MX:

郵件交換記錄,如果需要設置郵箱,讓郵箱能收到郵件,就需要添加MX記錄。

4. DNS 實驗搭建

4.1 DNS基本服務搭建

環境准備

ip

節點

主機名

10.30.59.193

master

dns1

10.30.59.194

測試

dns2

基礎准備

# 修改主機名[root@localhost ~]# hostnamectl set-hostname dns1[root@localhost ~]# bash# 配置本地yum源[root@dns1 ~]# mv /etc/yum.repos.d/* /media/[root@dns1 ~]# vi /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1[root@dns1 ~]# mkdir -p /opt/centos[root@dns1 ~]# mount /dev/sr0 /opt/centos/mount: /dev/sr0 is write-protected, mounting read-only[root@dns1 ~]# yum repolistLoaded plugins: fastestmirrorcentos | 3.6 kB 00:00:00(1/2): centos/group_gz | 155 kB 00:00:00(2/2): centos/primary_db | 2.8 MB 00:00:00Determining fastest mirrorsrepo id repo name statuscentos centos 3,723repolist: 3,723# 關閉防火牆[root@dns1 ~]# systemctl stop firewalld[root@dns1 ~]# systemctl disable firewalldRemoved symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.Removed symlink /etc/systemd/system/basic.target.wants/firewalld.service.[root@dns1 ~]# setenforce 0[root@dns1 ~]# vi /etc/selinux/configSELINUX=disabled# 安裝常用工具[root@dns1 ~]# yum install -y vim net-tools bash-c*

服務搭建

# 安裝服務[root@dns1 ~]# yum -y install bind# 配置注意事項 所有內容以;結尾 ,, 大括號兩側內用空格分隔# 配置主配置文件[root@dns1 named]# vim /etc/named.confoptions {listen-on port 53 { any; }; //設置服務器監聽網卡,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; }; //設置訪問服務器的客戶端地址, any 所有include “/etc/named.rfc1912.zones”; // 最下面有一行配置文件,指定了區域配置文件。# 配置區域配置文件[root@dns1 ~]# vim /etc/named.rfc1912.zoneszone “bilibili.com” IN {type master;file “bilibili.localhost”;allow-update { none; };};zone “59.30.10.in-addr.arpa” IN {type master;file “bilibili.loopback”;allow-update { none; };};[root@dns1 ~]# cd /var/named/[root@dns1 named]# lsdata dynamic named.ca named.empty named.localhost named.loopback slaves# 注意與區域配置文件相一致[root@dns1 named]# cp -a named.localhost bilibili.localhost[root@dns1 named]# cp -a named.loopback bilibili.loopback# 正向解析[root@dns1 named]# vim bilibili.localhost$TTL 1D@ IN SOA bilibili.com. rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.bilibili.com.dns A 10.30.59.193www A 10.30.59.195# 反向解析[root@dns1 named]# vim bilibili.loopback$TTL 1D@ IN SOA bilibili.com. rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.bilibili.com.93 PTR dns.bilibili.com.95 PTR www.bilibili.com.# 啓動服務[root@dns1 named]# systemctl restart named[root@dns1 named]# netstat -ntlp |grep namedtcp 0 0 10.30.59.193:53 0.0.0.0:* LISTEN 12550/namedtcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 12550/namedtcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 12550/namedtcp6 0 0 ::1:53 :::* LISTEN 12550/namedtcp6 0 0 ::1:953 :::* LISTEN 12550/named

測試

# 使用第二台虛擬機, 配置dns爲DNS服務器,測試[root@localhost ~]# hostnamectl set-hostname dns2[root@localhost ~]# bash[root@dns2 ~]# vi /etc/sysconfig/network-scripts/ifcfg-eno16780032DNS1=10.30.59.193[root@dns2 ~]# systemctl restart network# bilibili地址顯示爲10.30.59.195,說明配置成功。[root@dns2 ~]# ping www.bilibili.comPING www.bilibili.com (10.30.59.195) 56(84) bytes of data.From 10.30.59.194 icmp_seq=1 Destination Host UnreachableFrom 10.30.59.194 icmp_seq=2 Destination Host UnreachableFrom 10.30.59.194 icmp_seq=3 Destination Host UnreachableFrom 10.30.59.194 icmp_seq=4 Destination Host Unreachable

4.2主從DNS服務器

目的:

減輕主服務器的壓力,備份

環境准備:

centos7-1511,關閉防火牆 selinux

ip

節點

主機名

10.30.59.193

master

dns1

10.30.59.194

slave

dns2

10.30.59.195

ceshi

localhost

# 主從兩個節點# 配置本地yum源[root@dns1 ~]# cat /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1[root@dns2 ~]# cat /etc/yum.repos.d/local.repo[centos]name=centosbaseurl=file:///opt/centosgpgcheck=0enabled=1# 安裝服務[root@dns1 ~]# yum install -y bind[root@dns2 ~]# yum install -y bind主節點配置# 主節點配置[root@dns1 ~]# vim /etc/named.confoptions {listen-on port 53 { 10.30.59.193; };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; };# 區域配置文件只保留一個模板文件[root@dns1 ~]# vim /etc/named.rfc1912.zoneszone “bilibili.com” IN {type master;file “bilibili.localhost”;allow-update { 10.30.59.194; };};# 修改正向解析配置文件 相對于基本服務,這裏多配置一個serial充當版本作用[root@dns1 ~]# cd /var/named/[root@dns1 named]# cp -a named.localhost bilibili.localhost[root@dns1 named]# vim bilibili.localhost$TTL 1D@ IN SOA bilibili.com. rname.invalid. (20211208 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.bilibili.com.dns A 10.30.59.193www A 10.30.59.195[root@dns1 named]# service named restartRedirecting to /bin/systemctl restart named.service

從節點配置

[root@dns2 ~]# vim /etc/named.conf10 options {11 listen-on port 53 { 10.30.59.194; };12 listen-on-v6 port 53 { ::1; };13 directory “/var/named”;14 dump-file “/var/named/data/cache_dump.db”;15 statistics-file “/var/named/data/named_stats.txt”;16 memstatistics-file “/var/named/data/named_mem_stats.tx t”;17 allow-query { any; };# 配置區域配置文件 只保留一個模板文件[root@dns2 ~]# vim /etc/named.rfc1912.zoneszone “bilibili.com” IN {type slave;masters { 10.30.59.193; };file “slaves/bilibili.localhost”;allow-update { none; };};# 從服務器不需要配置解析文件,會自動同步master節點服務器文件到slaves目錄下# 啓動前,確認爲空目錄[root@dns2 ~]# ls /var/named/slaves/# 啓動服務[root@dns2 ~]# service named startRedirecting to /bin/systemctl start named.service[root@dns2 ~]# ls /var/named/slaves/bilibili.localhost

驗證結果

給測試機配置dns爲從服務器的地址

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-eno16780032# 從節點的地址DNS1=10.30.59.194[root@localhost ~]# systemctl restart netwoprkFailed to restart netwoprk.service: Unit netwoprk.service failed to load: No such file or directory.[root@localhost ~]# systemctl restart network[root@localhost ~]# ping www.bilibili.comPING www.bilibili.com (10.30.59.195) 56(84) bytes of data.64 bytes from 10.30.59.195: icmp_seq=1 ttl=64 time=0.028 ms64 bytes from 10.30.59.195: icmp_seq=2 ttl=64 time=0.042 ms64 bytes from 10.30.59.195: icmp_seq=3 ttl=64 time=0.040 ms^C— www.bilibili.com ping statistics —3 packets transmitted, 3 received, 0% packet loss, time 2001msrtt min/avg/max/mdev = 0.028/0.036/0.042/0.009 ms

4.3DNS緩存服務器

目的:

加快解析速度,提高工作效率

實驗軟件:

dnsmasq

操作:

接上一個環境繼續操作,把從服務器當作緩存服務器。

# 停掉從服務器[root@dns2 ~]# service named stopRedirecting to /bin/systemctl stop named.service# 安裝dnsmasq 可能已經安裝。yum install -y dnsmasq# 修改配置文件[root@dns2 ~]# vim /etc/dnsmasq.confdomain=bilibili.comserver=10.30.59.193cache-size=150# 重啓服務[root@dns2 ~]# service dnsmasq restartRedirecting to /bin/systemctl restart dnsmasq.service# 測試 如果沒有nslookup命令,下載bind-utils[root@localhost ~]# nslookup www.bilibili.comServer: 10.30.59.194Address: 10.30.59.194#53Name: www.bilibili.comAddress: 10.30.59.195# 關掉主服務器[root@dns1 ~]# systemctl stop named# 再次測試 非權威回答[root@localhost ~]# nslookup www.bilibili.comServer: 10.30.59.194Address: 10.30.59.194#53Non-authoritative answer:Name: www.bilibili.comAddress: 10.30.59.195

請求順序

# 客戶端從緩存服務器請求, 緩存服務器沒有,去主服務查找, 主服務器沒啓動,測試沒反應, 啓動主服務器,再次測試, 緩存服務器再次請求主服務器,獲取域名,返回給客戶端。

# 主服務器沒啓動[root@localhost ~]# nslookup dns.bilibili.com^C# 啓動主服務器[root@dns1 ~]# systemctl start named[root@localhost ~]# nslookup dns.bilibili.comServer: 10.30.59.194Address: 10.30.59.194#53Name: dns.bilibili.comAddress: 10.30.59.193# 再次關閉,有緩存可以解析到。[root@dns1 ~]# systemctl stop named[root@localhost ~]# nslookup dns.bilibili.comServer: 10.30.59.194Address: 10.30.59.194#53Non-authoritative answer:Name: dns.bilibili.comAddress: 10.30.59.193

4.4 智能DNS(分離解析)

目的:

NDS分離解析即將相同域名解析爲不同的IP地址,實現網絡中一些網站爲了讓用戶有更好的體驗效果解析速度更快,就把來自不通運營商的用戶解析到相對應的服務器,這樣就大大提升了訪問速度。

實驗環境:

配置一台apache服務器,兩個網卡模擬內外網, 兩台測試機從內網外網分別訪問。dns能夠正確解析(內網地址訪問解析內網地址,外網地址訪問解析外網地址)。

節點

IP

主機名

備注

內網測試機

192.168.100.10

int

內外網選擇網絡模式:內: vmnat1 192.168.100.0/24外: vmnat 8 192.168.200.0/24

外網測試機

192.168.200.10

ext

apache

192.168.100.20

192.168.200.20

apache

dns+路由

192.168.100.30

192.168.200.30

dns

實驗大綱:

1、安裝bind軟件

2、內核配置文件開啓路由轉發,修改/etc/sysctl.conf

3、修改主配置文件/etc/named.conf 配置any,視圖

4、生成自己定義的區域配置文件。

5、配置數據文件

內網正向解析,外網正向解析

6、重啓服務

7、效果測試

nslookup

基礎環境准備:

修改主機名 配置ip 所有節點關閉防火牆、selinux、配置本地yum。

# 內網測試機[root@localhost ~]# hostnamectl set-hostname net1[root@localhost ~]# bash[root@int ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno16777736ONBOOT=yesIPADDR=192.168.100.10NETMASK=255.255.255.0GATEWAY=192.168.100.30DNS1=192.168.100.30# 外網測試機[root@localhost ~]# hostnamectl set-hostname ext[root@localhost ~]# bash[root@ext ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno16777736ONBOOT=yesIPADDR=192.168.200.10NETMASK=255.255.255.0GATEWAY=192.168.200.2DNS1=192.168.200.30# 配置雙網卡出了一個問題: 一開始本著第一塊網卡僅主機模式,然後第二塊網卡net模式,就調整第一塊網卡爲僅主機模式,新加的第二塊網卡爲net模式, 結果網絡不行,就重新配置爲第一塊網卡爲net模式,第二塊網卡爲net模式。 不影響本案例。# apache[root@localhost ~]# hostnamectl set-hostname apache[root@localhost ~]# bash[root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno16777736ONBOOT=yesIPADDR=192.168.200.20NETMASK=255.255.255.0GATEWAY=192.168.200.2DNS1=114.114.114.114[root@apache ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesNAME=eno33554984ONBOOT=yesIPADDR=192.168.100.20NETMASK=255.255.255.0# dns[root@localhost ~]# hostnamectl set-hostname dns[root@localhost ~]# bash[root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno16777736TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno16777736ONBOOT=yesIPADDR=192.168.200.30NETMASK=255.255.255.0GATEWAY=192.168.200.2DNS1=114.114.114.114[root@dns ~]# cat /etc/sysconfig/network-scripts/ifcfg-eno33554984TYPE=EthernetBOOTPROTO=staticDEFROUTE=yesPEERDNS=yesPEERROUTES=yesIPV4_FAILURE_FATAL=noIPV6INIT=yesIPV6_AUTOCONF=yesIPV6_DEFROUTE=yesIPV6_PEERDNS=yesIPV6_PEERROUTES=yesIPV6_FAILURE_FATAL=noNAME=eno33554984ONBOOT=yesIPADDR=192.168.100.30NETMASK=255.255.255.0# apache 節點安裝httpd[root@apache ~]# yum install -y httpd[root@apache ~]# vim /var/www/html/index.htmldns分離解析驗證成功![root@apache ~]# systemctl start httpd[root@apache ~]# systemctl enable httpdCreated symlink from /etc/systemd/system/multi-user.target.wants/httpd.service to /usr/lib/systemd/system/httpd.service.# dns節點安裝bind。[root@dns ~]# yum install -y bind

測試一下直接地址訪問看看有沒有問題

DNS域名解析服務bind

分離解析配置

# dns節點永久開啓路由轉發[root@dns ~]# vim /etc/sysctl.confnet.ipv4.ip_forward = 1[root@dns ~]# sysctl -pnet.ipv4.ip_forward = 1#修改主配置文件# 兩個any 監聽任意地址# 加兩個視圖 分別監聽內網和其他地址 ,視圖匹配規則爲自上而下匹配,注意順序。 match-client匹配地址, include 指定區域配置文件。[root@dns ~]# vim /etc/named.conflisten-on port 53 { any; };allow-query { any; };view lan {match-clients { 192.168.100.0/24; };zone “.” IN {type hint;file “named.ca”;};include “/etc/lan.zones”;};view wan {match-clients { any; };zone “.” IN {type hint;file “named.ca”;};include “/etc/wan.zones”;};#include “/etc/named.rfc1912.zones”;# 修改區域配置文件[root@dns ~]# cp -a /etc/named.rfc1912.zones /etc/lan.zones[root@dns ~]# vim /etc/lan.zoneszone “bilibili.com” IN {type master;file “lan.localhost”;allow-update { none; };};[root@dns ~]# cp -a /etc/lan.zones /etc/wan.zones[root@dns ~]# vim /etc/wan.zoneszone “bilibili.com” IN {type master;file “wan.localhost”;allow-update { none; };};# 修改解析文件[root@dns etc]# cd /var/named/[root@dns named]# lsdata dynamic named.ca named.empty named.localhost named.loopback slaves[root@dns named]# cp -a named.localhost lan.localhost[root@dns named]# vim lan.localhost$TTL 1D@ IN SOA bilibili.com. rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.bilibili.com.dns A 192.168.100.30www A 192.168.100.20[root@dns named]# cp -a lan.localhost wan.localhost[root@dns named]# vim wan.localhost$TTL 1D@ IN SOA bilibili.com. rname.invalid. (0 ; serial1D ; refresh1H ; retry1W ; expire3H ) ; minimumNS dns.bilibili.com.dns A 192.168.200.30www A 192.168.200.20

測試

# 啓動服務[root@dns named]# systemctl start named# 內網機測試[root@int ~]# curl www.bilibili.comdns分離解析驗證成功! \\ 查看是否顯示你在主頁顯示的內容。# 外網機測試[root@ext ~]# curl www.bilibili.comdns分離解析驗證成功! \\查看是否同理# 再使用nslookup測試# 兩個節點都下載[root@ext ~]# yum install -y bind-utils[root@int ~]# nslookup www.bilibili.comServer: 192.168.100.30Address: 192.168.100.30#53Name: www.bilibili.comAddress: 192.168.100.20[root@ext ~]# nslookup www.bilibili.comServer: 192.168.200.30Address: 192.168.200.30#53Name: www.bilibili.comAddress: 192.168.200.20# 可以發現內外網使用的dns地址不同,並且解析出來的ip不同。實驗成功!

如果ip更多,就多寫視圖,多謝區域配置文件與解析文件。

拓展知識: 郵件服務

相關文章:

  • 函數式編程:Ramda 函數庫參考教程
  • 你幹啥的?Lombok
  • Mock.js入門
  • Mysql 寒假刷題TIPs
  • 這些看起來很貴重的珠寶,其實根本就不值錢!千萬不要被坑了
  • Java 枚舉 知多少?
故事

發佈留言 取消回覆

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

©2025 快讀 | 服務協議 | DMCA | 聯繫我們