第十一周


"1、簡(jiǎn)述DNS服務(wù),并搭建DNS服務(wù)器,實(shí)現(xiàn)主從,子域授權(quán)。

DNS(Domain Name System,域名系統(tǒng)),因特網(wǎng)上作為域名和IP地址相互映射的一個(gè)分布式數(shù)據(jù)庫(kù),能夠使用戶更方便的訪問(wèn)互聯(lián)網(wǎng),而不用去記住能夠被機(jī)器直接讀取的IP數(shù)串。通過(guò)主機(jī)名,最終得到該主機(jī)名對(duì)應(yīng)的IP地址的過(guò)程叫做域名解析(或主機(jī)名解析)。DNS協(xié)議運(yùn)行在UDP協(xié)議之上,使用端口號(hào)53。在RFC文檔中RFC 2181對(duì)DNS有規(guī)范說(shuō)明,RFC 2136對(duì)DNS的動(dòng)態(tài)更新進(jìn)行說(shuō)明,RFC 2308對(duì)DNS查詢的反向緩存進(jìn)行說(shuō)明。

DNS中的正向搜索域和反向搜索域

①正向搜索區(qū)域

  功能:從域名解析到IP地址。

  什么是正向搜索區(qū)域呢?

  所謂正向搜索區(qū)域是指將域名解析為IP地址的過(guò)程。也就是說(shuō),當(dāng)用戶輸入一個(gè)服務(wù)器域名時(shí),借助于該記錄可以將域名解析為IP地址,從而實(shí)現(xiàn)對(duì)服務(wù)器的訪問(wèn)。

②反向搜索區(qū)域

  功能:從IP地址解析為域名。

  在大部分的 DNS 搜索中,客戶機(jī)一般執(zhí)行正向搜索。

  DNS 同時(shí)提供反向搜索,允許客戶機(jī)根據(jù)一臺(tái)計(jì)算機(jī)的IP 地址搜索它的DNS名稱。

  反向搜索的域名信息保存在反向搜索區(qū)域中。為進(jìn)行反向搜索,需要在DNS服務(wù)器中創(chuàng)建反向搜索區(qū)域。

搭建DNS主服務(wù)器

首先同步下時(shí)間

[root@DNS-Master ~]# hwclock -s


檢查一下安裝環(huán)境所需要的開發(fā)包組、確保所依賴的開發(fā)包組都裝有了

[root@DNS-Master ~]# yum -y groupinstall "Development Tools"

[root@DNS-Master ~]# yum -y groupinstall "Server Platform Development"

[root@DNS-Master ~]# yum grouplist

裝好后查看一下、最主要兩項(xiàng):Development tools和Server Platform Development


這里注意一下,我們要去編譯安裝一個(gè)服務(wù)、首先要去看他的README、然后看他的INSTALL、大體了解一下有沒(méi)有我們所需要的信息、當(dāng)然我們這里就不多說(shuō)了、直接往下走:

[root@DNS-Master ~]# tar -zvxf bind-9.10.5-P3.tar.gz

[root@DNS-Master ~]# cd bind-9.10.5-P3

[root@DNS-Master bind-9.10.5-P3]# ./configure --prefix=/data/bind9 --sysconfdir=/etc/named --enable-threads --enable-epoll --disable-chroot

[root@DNS-Master bind-9.10.5-P3]# make && make install


--prefix=/data/bind9:指定編譯存放的路徑

--sysconfdir=/etc/named:指定配置文件存放路徑

--enable-threads:?jiǎn)⒂昧硕嗑€程的功能


前面說(shuō)過(guò)、編譯安裝named什么都得自己創(chuàng)建、用戶也沒(méi)有的、所以我們得給他創(chuàng)建一個(gè)用戶先、而且用戶是系統(tǒng)用戶、要加-r、系統(tǒng)用戶不會(huì)給他創(chuàng)建家目錄的:

先創(chuàng)建用戶組:

[root@DNS-Master ~]# groupadd -g 53 -r named

[root@DNS-Master ~]# useradd -g named -r named


先去創(chuàng)建named的工作目錄、然后創(chuàng)建named.ca這個(gè)文件:

[root@DNS-Master ~]# mkdir /var/named


這里@后面的IP是能訪問(wèn)互聯(lián)網(wǎng)的服務(wù)器、生成的數(shù)據(jù)存在到/var/named/named.ca中去(使用"yum -y install bind-utils"命令安裝dig命令)

[root@DNS-Master ~]# dig -t NS . @8.8.8.8 > /var/named/named.ca

[root@DNS-Master ~]# cat /var/named/named.ca


; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.62.rc1.el6_9.2 <<>> -t NS . @8.8.8.8

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 36220

;; flags: qr rd ra; QUERY: 1, ANSWER: 13, AUTHORITY: 0, ADDITIONAL: 0


;; QUESTION SECTION:

;.? ? ? ? ? ? ? IN? NS

.......

.......


然后再去編輯/etc/named/named.conf的配置文件、這個(gè)文件也沒(méi)有、需要自己去編寫的:

[root@DNS-Master ~]# vim /etc/named/named.conf

options {

? ? ? ? listen-on port 53 { any; };? ? ? ? //默認(rèn)是any,表示允許所有網(wǎng)段的主機(jī)。可以改成自己所在的內(nèi)網(wǎng)網(wǎng)段

? ? ? ? listen-on-v6 port 53 { ::1; };

? ? ? ? directory "/var/named";? ? ? ? ? ? ? //定義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; };? ? ? ? //表示接收所有網(wǎng)段

? ? ? ? recursion yes;

? ? ? ? forward first;? ? ? ? ? ? ? ? ? //下面這兩行配置很重要,這個(gè)配置后,當(dāng)客戶端采用我們自己配置的內(nèi)網(wǎng)DNS的NS服務(wù)器后,當(dāng)訪問(wèn)別的網(wǎng)站,內(nèi)網(wǎng)NS解析不了的就轉(zhuǎn)發(fā)給8.8.8.8的DS服務(wù)器解析,保證能正常上網(wǎng)。

? ? ? ? forwarders {

? ? ? ? ? ? 223.5.5.5;? ? ? ? ? ? //阿里云的DNS服務(wù)器

? ? ? ? ? ? 223.6.6.6;

? ? ? ? ? ? 8.8.8.8;

? ? ? ? ? ? 8.8.4.4;

? ? ? ? ? };

? ? ? ? };


logging {? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? channel default_debug {

? ? ? ? file "data/named.run";

? ? ? ? severity dynamic;

? ? ? ? };

};


zone "."? {

? ? ? ? type hint;? ?

? ? ? ? file "named.ca";

? ? ? ? };


zone "wangshibo.cn"? {? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義一個(gè)統(tǒng)一的域名后綴。正向解析的區(qū)域。此處可以加后面IN,也可以不加IN? ? ?

? ? ? ? type master;? ? ? ? ? ? ? ? ? ? ? ? ? //類型屬于master、屬于自己的? ?

? ? ? ? file "wangshibo.cn_zone";? ? ? ? ? ? ? ? ? ? //指定正向解析的文件

? ? ? ? allow-transfer {192.168.1.28;};? ? ? ? //允許192.168.1.28(從DNS服務(wù)器)傳送

};

zone "1.168.192.in-addr.arpa"? {? ? ? ? ? ? ? //定義反向解析的區(qū)域,注意寫法。此處可以在后面加IN,也可以不加IN

? ? ? ? type master;? ? ? ? ? ? ? ? ? ? ?

? ? ? ? file "192.168.1.zone";? ? ? ? ? ? ? ? //指定正向解析的文件

? ? ? ? allow-transfer {192.168.1.28;};?


zone "33.168.192.in-addr.arpa"? {? ? ?

? ? ? ? type master;

? ? ? ? file "192.168.33.zone";? ? ? ? ? ?

? ? ? ? allow-transfer {192.168.1.28;};

};

zone "34.168.192.in-addr.arpa"? {? ? ?

? ? ? ? type master;

? ? ? ? file "192.168.34.zone";? ? ? ? ? ?

? ? ? ? allow-transfer {192.168.1.28;};

};

zone "64.168.192.in-addr.arpa"? {? ? ?

? ? ? ? type master;

? ? ? ? file "192.168.64.zone";? ? ? ? ? ?

? ? ? ? allow-transfer {192.168.1.28;};

};



這里注意一下:

如果是多個(gè)網(wǎng)段的反向解析,這里就定義多個(gè)反向解析區(qū)域。


----------------------------------------------------------------------------------------------------------

溫馨提示:

DNS BIND之forwarder轉(zhuǎn)發(fā):就是說(shuō),當(dāng)自己內(nèi)網(wǎng)NS服務(wù)器解析不了的域名,轉(zhuǎn)發(fā)到別的NS如8.8.8.8的域名服務(wù)器上進(jìn)行解析。

轉(zhuǎn)發(fā)功能可以用來(lái)在一些服務(wù)器上產(chǎn)生一個(gè)大的緩存,從而減少到外部服務(wù)器鏈路上的流量。它可以使用在和internet沒(méi)有直接連接的內(nèi)部域名服務(wù)器上,用來(lái)提供對(duì)外部域名的查詢。

只有當(dāng)服務(wù)器是非授權(quán)的,并且緩存中沒(méi)有相關(guān)記錄時(shí),才會(huì)進(jìn)行轉(zhuǎn)發(fā)。

1)轉(zhuǎn)發(fā)機(jī)制

當(dāng)你設(shè)置了轉(zhuǎn)發(fā)器后,所有非本域的和在緩存中無(wú)法找到的域名查詢都將轉(zhuǎn)發(fā)到設(shè)置的DNS轉(zhuǎn)發(fā)器上,由這臺(tái)DNS來(lái)完成解析工作并做緩存,因此這臺(tái)轉(zhuǎn)發(fā)器的緩存中記錄了豐富的域名信息。

因而對(duì)非本域的查詢,很可能轉(zhuǎn)發(fā)器就可以在緩存中找到答案,避免了再次向外部發(fā)送查詢,減少了流量。


2)配置參數(shù)

1.forward

此選項(xiàng)只有當(dāng)forwarders列表中有內(nèi)容的時(shí)候才有意義。當(dāng)值是First,默認(rèn)情況下,使服務(wù)器先查詢?cè)O(shè)置的forwarders,如果它沒(méi)有得到回答,服務(wù)器就會(huì)自己尋找答案。如果設(shè)定的是only,

服務(wù)器就只會(huì)把請(qǐng)求轉(zhuǎn)發(fā)到其它服務(wù)器上去。

2.forwarders

設(shè)定轉(zhuǎn)發(fā)使用的ip地址。默認(rèn)的列表是空的(不轉(zhuǎn)發(fā))。轉(zhuǎn)發(fā)也可以設(shè)置在每個(gè)域上,這樣全局選項(xiàng)中的轉(zhuǎn)發(fā)設(shè)置就不會(huì)起作用了。用戶可以將不同的域轉(zhuǎn)發(fā)到服務(wù)器上,或者對(duì)不同的域可以實(shí)現(xiàn)

forward only或first的不同方式,也可以根本就不轉(zhuǎn)發(fā)。

注:轉(zhuǎn)發(fā)服務(wù)器的查詢模式必須允許遞歸查詢(即,recursion yes;),默認(rèn)遞歸查詢是開啟的。


3)轉(zhuǎn)發(fā)器的配置格式

options {

forward first;

forwarders{

8.8.8.8;

1.8.8.8;

};

};

注意:轉(zhuǎn)發(fā)器本身不用做任何設(shè)置,而是對(duì)需要轉(zhuǎn)發(fā)器的其他DNS server做以上配置。還有,如果該 DNS Server 無(wú)法聯(lián)系到轉(zhuǎn)發(fā)器,那么BIND會(huì)自己嘗試解析。

如果要禁止BIND在無(wú)法聯(lián)系到轉(zhuǎn)發(fā)器時(shí)不做任何操作,那么你還可以使用 forward only 命令,這樣BIND只能使用區(qū)的權(quán)威數(shù)據(jù)和緩存來(lái)響應(yīng)查詢了( 在連接不到轉(zhuǎn)發(fā)器的情況下 )。

options {

forward only;

forwarders{

8.8.8.8;

1.8.8.8;

};

};

在 BIND 8.2 以后引入了一個(gè)新的特性:轉(zhuǎn)發(fā)區(qū)( forward zone ),它允許你把 DNS 配置成只有查找特定域名的時(shí)候才使用轉(zhuǎn)發(fā)器。( BIND 9 從9.1.0 才開始有轉(zhuǎn)發(fā)區(qū)功能)

例如,你可以使你的服務(wù)器將所有對(duì)test.com結(jié)尾的域名查詢都轉(zhuǎn)發(fā)給test.com的兩臺(tái)名字服務(wù)器:

zone "test.com" {

type forward;

forwarders{

8.8.8.8;

1.8.8.8;

};

};

還有一種轉(zhuǎn)發(fā)區(qū)設(shè)置和剛才的設(shè)置剛好相反,它允許你設(shè)置什么樣的查詢將不被轉(zhuǎn)發(fā),當(dāng)然這只適用于在options語(yǔ)句中指定了轉(zhuǎn)發(fā)器的 DNS 。配置如下:

options {

forwarders{

8.8.8.8;

1.8.8.8;

};

};

zone "test.com" {

type master;

file "zone.test.com";

forwarders {};

};

在test.com這個(gè)區(qū)中,你授權(quán)了幾個(gè)子域,例如:zx.test.com、lab.test.com等,那么在test.com的權(quán)威服務(wù)器上設(shè)置轉(zhuǎn)發(fā)后,因?yàn)閷?duì) zx.test.com、lab.test.com這幾個(gè)子域不是權(quán)威,

那么如果有對(duì) www.zx.test.com這樣的子域的域名查詢,服務(wù)器也將轉(zhuǎn)發(fā)。這完全是沒(méi)有必要的,因?yàn)榉?wù)器上就有zx.test.org 子域的 NS 記錄,何須再轉(zhuǎn)發(fā)。

---------------------------------------------------------------------------------------------------------------

如果想用rndc遠(yuǎn)程登錄可以生成一個(gè)/etc/named/rndc.conf的配置文件:

[root@DNS-Master ~]# /data/bind9/sbin/rndc-confgen -r /dev/urandom > /etc/named/rndc.conf

到這里別忘了給named.conf和rndc.conf修改屬主屬組和權(quán)限:

[root@DNS-Master ~]# chown -R root.named /data/bind9

[root@DNS-Master ~]# chown -R root.named /etc/named

[root@DNS-Master ~]# chown -R root.named /var/named? ? ? ? ? ? #另外注意:一定要保證/var/named/data的權(quán)限是named.named,這個(gè)目錄下存放的是named.run,即named解析日志

[root@DNS-Master ~]# chmod 640 /etc/named/named.conf

[root@DNS-Master ~]# chmod 640 /etc/named/rndc.conf

[root@DNS-Master ~]# chmod 640 /var/named/*


為了方便、我們?cè)赑ATH下加個(gè)的路徑、/etc/profile.d/named.sh:

[root@DNS-Master ~]# cat /etc/profile.d/named.sh

export PATH=/data/bind9/bin:/data/bind9/sbin:$PATH

[root@DNS-Master ~]# source /etc/profile.d/named.sh


因?yàn)槭且粋€(gè)服務(wù)、所以我們要為他提供一個(gè)服務(wù)腳本、以后可以利用腳本啟動(dòng)、編輯/etc/rc.d/init.d/named:

[root@DNS-Master ~]# vim /etc/rc.d/init.d/named

#!/bin/bash

? ? #

? ? # description: named daemon

? ? # chkconfig: - 25 88


? ? pidFile=/data/bind9/var/run/named.pid

? ? lockFile=/var/lock/subsys/named

? ? confFile=/etc/named/named.conf


? ? ? ? [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions

? ? start() {

? ? ? ? ? ? if [ -e $lockFile ]; then

? ? ? ? ? ? ? ? ? ? echo "named is already running..."

? ? ? ? ? ? ? ? ? ? exit 0

? ? ? ? ? ? fi

? ? ? ? ? ? echo -n "Starting named:"

? ? ? ? ? ? daemon --pidfile "$pidFile" /data/bind9/sbin/named -u named -c "$confFile"

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo


? ? ? ? ? ? if [ $RETVAL -eq 0 ]; then

? ? ? ? ? ? ? ? ? ? touch $lockFile

? ? ? ? ? ? ? ? ? ? return $RETVAL

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? rm -f $lockFile $pidFile

? ? ? ? ? ? ? ? ? ? return 1

? ? ? ? ? ? fi

? ? }


? ? stop() {

? ? ? ? ? ? if [ ! -e $lockFile ]; then

? ? ? ? ? ? ? ? ? ? echo "named is stopped."

? ? ? ? ? ? fi

? ? ? ? ? ? echo -n "Stopping named:"

? ? ? ? ? ? killproc named

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo


? ? ? ? ? ? if [ $RETVAL -eq 0 ];then

? ? ? ? ? ? ? ? ? ? rm -f $lockFile $pidFile

? ? ? ? ? ? ? ? ? ? return 0

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? echo "Cannot stop named."

? ? ? ? ? ? ? ? ? ? failure

? ? ? ? ? ? ? ? ? ? return 1

? ? ? ? ? ? fi

? ? }


? ? restart() {

? ? ? ? ? ? stop

? ? ? ? ? ? sleep 2

? ? ? ? ? ? start

? ? }


? ? reload() {

? ? ? ? ? ? echo -n "Reloading named: "

? ? ? ? ? ? killproc named -HUP

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo

? ? ? ? ? ? return $RETVAL

? ? }


? ? status() {

? ? ? ? ? ? if pidof named &> /dev/null; then

? ? ? ? ? ? ? ? ? ? echo -n "named is running..."

? ? ? ? ? ? ? ? ? ? success

? ? ? ? ? ? ? ? ? ? echo

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? echo -n "named is stopped..."

? ? ? ? ? ? ? ? ? ? success

? ? ? ? ? ? ? ? ? ? echo

? ? ? ? ? ? fi

? ? }


? ? usage() {

? ? ? ? ? ? echo "Usage: named {start|stop|restart|status|reload}"

? ? }

? ? case $1 in

? ? start)

? ? ? ? ? ? start ;;

? ? stop)

? ? ? ? ? ? stop ;;

? ? restart)

? ? ? ? ? ? restart ;;

? ? status)

? ? ? ? ? ? status ;;

? ? reload)

? ? ? ? ? ? reload ;;

? ? *)

? ? ? ? ? ? usage

? ? ? ? ? ? exit 4 ;;

? ? esac


[root@DNS-Master ~]# chmod 755 /etc/rc.d/init.d/named

[root@DNS-Master ~]# chkconfig --add named

[root@DNS-Master ~]# chkconfig --list named


下面開始配置正向解析配置:

[root@DNS-Master ~]# vim /var/named/wangshibo.cn_zone? ? //這個(gè)文件是在上面named.conf里面定義的

$TTL 1D? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? //定義宏,通用變量,單位為秒(S)、小時(shí)(H),天數(shù)(D)

@? ? ? IN SOA? ns1.wangshibo.cn. root. (? ? ? ? ? ? ? //此處一般是寫NS域名,郵件域名,或root.

? ? ? ? ? ? ? ? ? ? ? ? 2017071111? ? ? ? ? //序列號(hào)。這個(gè)參數(shù)很重要,要特別注意??!當(dāng)主DNS修改解析文件時(shí),必須要修改這個(gè)序列號(hào),然后重啟named服務(wù)后,從DNS才能正常同步過(guò)去??!

? ? ? ? ? ? ? ? ? ? ? ? 2H? ? ? ? ? ? ? ? ? ? ? ? ? //刷新時(shí)間

? ? ? ? ? ? ? ? ? ? ? ? 10M? ? ? ? ? ? ? ? ? ? ? ? ? //失敗重試時(shí)間

? ? ? ? ? ? ? ? ? ? ? ? 7D? ? ? ? ? ? ? ? ? ? ? ? ? //過(guò)期時(shí)間

? ? ? ? ? ? ? ? ? ? ? ? 1D )? ? ? ? ? ? ? ? ? ? ? ? ? //否定答案時(shí)間

@? ? ? ? ? ? ? ? ? ? ? ? ? IN? ? ? NS? ? ? ns1.wangshibo.cn.? ? ? ?

@? ? ? ? ? ? ? ? ? ? ? ? ? IN? ? ? NS? ? ? ns2.wangshibo.cn.? ? ? ? ? ? ? //注意域名后面的.不能忘掉!?

ns1? ? ? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.1.27? ? ? ?

ns2? ? ? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.1.28? ? ? ? ?

www? ? ? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.4.21? ? ? ? ? ? ? //由于已經(jīng)定義了根域名是wangshibo.cn,所以這里可以直接寫域名前面的名稱,也可以全部寫出來(lái)。比如www或者寫成www.wangshibo.cn.

nginx-web01? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.4.21? ? ? ? ? ? ? //如果寫域名前的名稱,就不需要帶.符號(hào),但如果是寫域名全稱,則需要帶.符號(hào),如nginx-web01.wangshibo.cn.

nginx-web02? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.4.22

athena-web02? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.33.31

www-web01? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.34.29

www-web02? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.34.30

zabbix? ? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.1.21

zrx-web01? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.34.33

zrx-web02? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.34.32

athena-matrix02? ? ? ? ? ? IN? ? ? A? ? ? 192.168.33.36

lx-db126? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.8.126

lx-db127? ? ? ? ? ? ? ? ? ? IN? ? ? A? ? ? 192.168.8.127



反向解析的配置(這里只列舉一個(gè)):

[root@DNS-Master ~]# cat 192.168.1.zone

$TTL 600

@? ? ? IN SOA? ns1.wangshibo.cn. root. (

? ? ? ? ? ? ? ? ? ? ? ? 2017071101

? ? ? ? ? ? ? ? ? ? ? ? 2H? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? 10M? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? 7D? ? ? ?

? ? ? ? ? ? ? ? ? ? ? ? 1D )

@? ? ? ? ? ? ? IN? ? ? NS? ? ? ns1.wangshibo.cn.

@? ? ? ? ? ? ? IN? ? ? NS? ? ? ns2.wangshibo.cn.

27? ? ? ? ? ? ? IN? ? ? PTR? ? ns1.wangshibo.cn.

28? ? ? ? ? ? ? IN? ? ? PTR? ? ns2.wangshibo.cn.

21? ? ? ? ? ? ? IN? ? ? PTR? ? www.wangshibo.cn.

21? ? ? ? ? ? ? IN? ? ? PTR? ? zp.wangshibo.cn.

29? ? ? ? ? ? ? IN? ? ? PTR? ? puppet01.wangshibo.cn.

30? ? ? ? ? ? ? IN? ? ? PTR? ? puppet02.wangshibo.cn.

-------------------------------------------------------------------------------------------------------

溫馨提示1:

對(duì)于主DNS的正反向解析文件中的序列號(hào),每當(dāng)做一次修改后,必須要同時(shí)修改這個(gè)序列號(hào),這樣才能觸發(fā)主從同步機(jī)制!然后重啟named服務(wù),從DNS服務(wù)器那邊才能同步過(guò)去,否則不能完成主從同步!

-------------------------------------------------------------------------------------------------------


然后修改一下權(quán)限和屬主屬組:

[root@DNS-Master ~]# chown root:named /var/named/wangshibo.cn_zone

[root@DNS-Master ~]# chmod 640 /var/named/wangshibo.cn_zone


檢查主配置文件和區(qū)域數(shù)據(jù)文件有沒(méi)有語(yǔ)法錯(cuò)誤:

[root@DNS-Master ~]# named-checkconf? ? //這個(gè)是檢查主配置文件語(yǔ)法的

[root@DNS-Master ~]#


這個(gè)是檢查區(qū)域數(shù)據(jù)文件語(yǔ)法的、指定區(qū)域和指定文件

[root@DNS-Master ~]# named-checkzone "wangshibo.cn" /var/named/wangshibo.cn_zone

zone wangshibo.cn/IN: loaded serial 2017071111

OK


啟動(dòng)服務(wù)后、解析域名

[root@DNS-Master ~]# /etc/init.d/named start

[root@DNS-Master ~]# /etc/init.d/named status

[root@DNS-Master ~]# /etc/init.d/named restart


然后修改自己的DNS,進(jìn)行正反向解析

[root@DNS-Master ~]# cat /etc/resolv.conf

domain wangshibo.cn? ? ? //域名和查詢都要寫成內(nèi)網(wǎng)DNS的主域名

search wangshibo.cn

nameserver 192.168.1.27


[root@DNS-Master ~]# ping zrx-web02

PING zrx-web02.wangshibo.cn (192.168.34.32) 56(84) bytes of data.

64 bytes from 192.168.34.32: icmp_seq=1 ttl=62 time=1.11 ms

64 bytes from 192.168.34.32: icmp_seq=2 ttl=62 time=0.542 ms



[root@BJLX_16_27_V named]# dig -t A www.wangshibo.cn @192.168.1.27


; <<>> DiG 9.10.5-P3 <<>> -t A www.wangshibo.cn @192.168.1.27

;; global options: +cmd

;; Got answer:

;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 32976

;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 2, ADDITIONAL: 3


;; OPT PSEUDOSECTION:

; EDNS: version: 0, flags:; udp: 4096

;; QUESTION SECTION:

;www.wangshibo.cn.? ? ? ? ? IN? A


;; ANSWER SECTION:

www.wangshibo.cn.? ? ? ? 86400? IN? A? 192.168.4.21


;; AUTHORITY SECTION:

wangshibo.cn.? ? ? ? 86400? IN? NS? ns2.wangshibo.cn.

wangshibo.cn.? ? ? ? 86400? IN? NS? ns1.wangshibo.cn.


;; ADDITIONAL SECTION:

ns1.wangshibo.cn.? ? ? ? 86400? IN? A? 192.168.1.27

ns2.wangshibo.cn.? ? ? ? 86400? IN? A? 192.168.1.28


;; Query time: 0 msec

;; SERVER: 192.168.1.27#53(192.168.1.27)

;; WHEN: Thu Jul 20 10:45:15 CST 2017

;; MSG SIZE? rcvd: 124



[root@BJLX_16_27_V named]# nslookup

> set q=A

> www

Server:? ? 192.168.1.27

Address:? ? 192.168.1.27#53


Name:? www.wangshibo.cn

Address: 192.168.4.21

> zabbix

Server:? ? 192.168.1.27

Address:? ? 192.168.1.27#53


Name:? zabbix.wangshibo.cn

Address: 192.168.1.21

> lx-db126

Server:? ? 192.168.1.27

Address:? ? 192.168.1.27#53


Name:? lx-db126.wangshibo.cn

Address: 192.168.8.126

> 192.168.1.27

Server:? ? 192.168.1.27

Address:? ? 192.168.1.27#53


27.16.192.168.in-addr.arpa? name = ns1.wangshibo.cn.

> 192.168.1.21

Server:? ? 192.168.1.27

Address:? ? 192.168.1.27#53


21.16.192.168.in-addr.arpa? name = www.wangshibo.cn.

21.16.192.168.in-addr.arpa? name = zp.wangshibo.cn.

>



最后,客戶機(jī)就可以修改自己的/etc/resolv.conf文件,然后使用這個(gè)內(nèi)網(wǎng)DNS了

[root@Nginx-web1 ~]# cat /etc/resolv.conf

domain wangshibo.cn? ? ? //域名和查詢都要寫成內(nèi)網(wǎng)DNS的主域名

search wangshibo.cn

nameserver 192.168.1.27


[root@Nginx-web1 ~]# ping zabbix

PING zabbix.wangshibo.cn (192.168.1.21) 56(84) bytes of data.

64 bytes from www.wangshibo.cn (192.168.1.21): icmp_seq=1 ttl=64 time=0.282 ms

64 bytes from www.wangshibo.cn (192.168.1.21): icmp_seq=2 ttl=64 time=0.223 ms

64 bytes from www.wangshibo.cn (192.168.1.21): icmp_seq=3 ttl=64 time=0.177 ms

搭建DNS從服務(wù)器

[root@DNS-Slave ~]# hwclock -s

[root@DNS-Slave ~]# yum -y groupinstall "Development Tools"

[root@DNS-Slave ~]# yum -y groupinstall "Server Platform Development"

[root@DNS-Slave ~]# yum grouplist

[root@DNS-Slave ~]# tar -zvxf bind-9.10.5-P3.tar.gz

[root@DNS-Slave ~]# cd bind-9.10.5-P3

[root@DNS-Slave bind-9.10.5-P3]# ./configure --prefix=/data/bind9 --sysconfdir=/etc/named --enable-threads --enable-epoll --disable-chroot

[root@DNS-Slave bind-9.10.5-P3]# make && make install


[root@DNS-Slave ~]# groupadd -g 53 -r named

[root@DNS-Slave ~]# useradd -g named -r named


[root@DNS-Slave ~]# mkdir /var/named

[root@DNS-Slave ~]# dig -t NS . @8.8.8.8 > /var/named/named.ca

[root@DNS-Slave ~]# vim /etc/named/named.conf

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;

? ? ? ? forward first;

? ? ? ? forwarders {

? ? ? ? ? ? 8.8.8.8;

? ? ? ? ? ? 8.8.4.4;

? ? ? ? ? };

? ? ? ? };


logging {? ? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? channel default_debug {

? ? ? ? file "data/named.run";

? ? ? ? severity dynamic;

? ? ? ? };

};


zone "." IN {

? ? ? ? type hint;? ?

? ? ? ? file "named.ca";

? ? ? ? };


zone "wangshibo.cn" IN {? ? ? ? ? ? ? ? ?

? ? ? ? type slave;? ? ? ? ? ? ? ? ? ? ? ?

? ? ? ? file "wangshibo.cn_zone";? ? ? ? ?

? ? ? ? masters {172.168.1.27;};? ? ?

};

zone "16.29.172.in-addr.arpa" IN {? ?

? ? ? ? type slave;

? ? ? ? file "172.168.1.zone";? ? ? ? ?

? ? ? ? masters {172.168.1.27;};

};



將主DNS的/etc/init.d/named啟動(dòng)腳本拷貝到從DNS服務(wù)器上。

[root@DNS-Slave ~]# cat /etc/init.d/named

#!/bin/bash

? ? #

? ? # description: named daemon

? ? # chkconfig: - 25 88


? ? pidFile=/data/bind9/var/run/named.pid

? ? lockFile=/var/lock/subsys/named

? ? confFile=/etc/named/named.conf


? ? ? ? [ -r /etc/rc.d/init.d/functions ] && . /etc/rc.d/init.d/functions

? ? start() {

? ? ? ? ? ? if [ -e $lockFile ]; then

? ? ? ? ? ? ? ? ? ? echo "named is already running..."

? ? ? ? ? ? ? ? ? ? exit 0

? ? ? ? ? ? fi

? ? ? ? ? ? echo -n "Starting named:"

? ? ? ? ? ? daemon --pidfile "$pidFile" /data/bind9/sbin/named -u named -c "$confFile"

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo


? ? ? ? ? ? if [ $RETVAL -eq 0 ]; then

? ? ? ? ? ? ? ? ? ? touch $lockFile

? ? ? ? ? ? ? ? ? ? return $RETVAL

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? rm -f $lockFile $pidFile

? ? ? ? ? ? ? ? ? ? return 1

? ? ? ? ? ? fi

? ? }


? ? stop() {

? ? ? ? ? ? if [ ! -e $lockFile ]; then

? ? ? ? ? ? ? ? ? ? echo "named is stopped."

? ? ? ? ? ? fi

? ? ? ? ? ? echo -n "Stopping named:"

? ? ? ? ? ? killproc named

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo


? ? ? ? ? ? if [ $RETVAL -eq 0 ];then

? ? ? ? ? ? ? ? ? ? rm -f $lockFile $pidFile

? ? ? ? ? ? ? ? ? ? return 0

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? echo "Cannot stop named."

? ? ? ? ? ? ? ? ? ? failure

? ? ? ? ? ? ? ? ? ? return 1

? ? ? ? ? ? fi

? ? }


? ? restart() {

? ? ? ? ? ? stop

? ? ? ? ? ? sleep 2

? ? ? ? ? ? start

? ? }


? ? reload() {

? ? ? ? ? ? echo -n "Reloading named: "

? ? ? ? ? ? killproc named -HUP

? ? ? ? ? ? RETVAL=$?

? ? ? ? ? ? echo

? ? ? ? ? ? return $RETVAL

? ? }


? ? status() {

? ? ? ? ? ? if pidof named &> /dev/null; then

? ? ? ? ? ? ? ? ? ? echo -n "named is running..."

? ? ? ? ? ? ? ? ? ? success

? ? ? ? ? ? ? ? ? ? echo

? ? ? ? ? ? else

? ? ? ? ? ? ? ? ? ? echo -n "named is stopped..."

? ? ? ? ? ? ? ? ? ? success

? ? ? ? ? ? ? ? ? ? echo

? ? ? ? ? ? fi

? ? }


? ? usage() {

? ? ? ? ? ? echo "Usage: named {start|stop|restart|status|reload}"

? ? }

? ? case $1 in

? ? start)

? ? ? ? ? ? start ;;

? ? stop)

? ? ? ? ? ? stop ;;

? ? restart)

? ? ? ? ? ? restart ;;

? ? status)

? ? ? ? ? ? status ;;

? ? reload)

? ? ? ? ? ? reload ;;

? ? *)

? ? ? ? ? ? usage

? ? ? ? ? ? exit 4 ;;

? ? esac


啟動(dòng)named服務(wù)

[root@DNS-Slave ~]# /etc/init.d/named start/status/restart


啟動(dòng)后,就會(huì)發(fā)現(xiàn)在從DNS的/var/named目錄下自動(dòng)產(chǎn)生了wangshibo.cn_zone和192.168.1.zone的正反向解析文件

注意:當(dāng)主DNS修改解析配置時(shí),只需要將解析配置文件中的序列號(hào)改動(dòng)下,就會(huì)自動(dòng)觸發(fā)主從同步機(jī)制!


[root@DNS-Slave ~]# ls

192.168.1.zone? wangshibo.cn_zone? data? db-9TWfGmpO? db-kHbKJg9L? named.ca


然后修改從的自己的DNS

[root@DNS-Slave ~]# cat /etc/resolv.conf

search wangshibo.cn

nameserver 192.168.1.28


然后測(cè)試正反向解析:

[root@DNS-Slave ~]# ping athena-web02

PING athena-web02.wangshibo.cn (192.168.33.31) 56(84) bytes of data.

64 bytes from 192.168.33.31: icmp_seq=1 ttl=62 time=0.712 ms

64 bytes from 192.168.33.31: icmp_seq=2 ttl=62 time=0.442 ms


[root@DNS-Slave ~]# nslookup

> lx-db127

Server:? ? 192.168.1.28

Address:? ? 192.168.1.28#53


Name:? lx-db127.wangshibo.cn

Address: 172.29.8.127

> 192.168.1.28

Server:? ? 192.168.1.28

Address:? ? 192.168.1.28#53


28.16.29.172.in-addr.arpa? name = ns2.wangshibo.cn.


這樣,客戶機(jī)可以將自己的DNS修改為上面配置的內(nèi)網(wǎng)主從DNS地址

[root@test ~]# cat /etc/resolv.conf

#domain wangshibo.cn

search wangshibo.cn

nameserver 172.168.1.27

nameserver 172.168.1.28




2、簡(jiǎn)述HTTP服務(wù),并實(shí)現(xiàn)基于用戶的訪問(wèn)控制,虛擬主機(jī),https"

超文本傳輸協(xié)議HTTP規(guī)定了瀏覽器與服務(wù)器之間的請(qǐng)求和響應(yīng)的格式與規(guī)則,它是萬(wàn)維網(wǎng)上能夠可靠地交換文件的重要基礎(chǔ)。

HTTP的操作過(guò)程

瀏覽器分析指向頁(yè)面的URL

瀏覽器向DNS系統(tǒng)請(qǐng)求解析域名所對(duì)應(yīng)的服務(wù)器IP地址

DNS系統(tǒng)解析出服務(wù)器的IP,并返回給主機(jī)

瀏覽器與該服務(wù)器的進(jìn)程建立TCP鏈接(三次握手,端口默認(rèn)為80)

瀏覽器發(fā)出HTTP請(qǐng)求:如GET /article/index.html

服務(wù)器收到請(qǐng)求并作出相應(yīng)處理,把文件index.html發(fā)送給瀏覽器

釋放TCP鏈接(四次握手)

瀏覽器解析index.html文件,將web頁(yè)顯示出來(lái)。

HTTP協(xié)議的特點(diǎn)

HTTP協(xié)議是無(wú)狀態(tài)的,即多次訪問(wèn)一個(gè)服務(wù)器上的頁(yè)面,服務(wù)器并不知道你曾經(jīng)訪問(wèn)過(guò),每次訪問(wèn)的響應(yīng)都當(dāng)做第一次訪問(wèn)一樣。所以,在實(shí)際應(yīng)用中,通常使用CooKie加數(shù)據(jù)庫(kù)的方式記錄和跟蹤用戶的活動(dòng)。

HTTP有非持久連接和持久連接:

采用非持久連接時(shí),網(wǎng)頁(yè)的每個(gè)元素對(duì)象(如.png,jpeg圖等)的傳輸都需單獨(dú)建立一個(gè)TCP連接(第三次握手可攜帶請(qǐng)求信息)

采用持久連接時(shí),僅需建立一次TCP連接,服務(wù)器發(fā)送響應(yīng)后仍保持連接,客戶和服務(wù)器可以繼續(xù)在這條連接上發(fā)送請(qǐng)求和響應(yīng)報(bào)文。

Cookie以及其作用

CooKie是由服務(wù)器生成,但存儲(chǔ)在用戶主機(jī)上的文本文件,它保存了服務(wù)器和客戶之間傳遞的狀態(tài)信息,作為識(shí)別用戶的手段。通過(guò)Cookie服務(wù)器就能從數(shù)據(jù)庫(kù)中查詢?cè)撚脩舻幕顒?dòng)記錄,進(jìn)而可以執(zhí)行一些個(gè)性化操作

HTTP請(qǐng)求報(bào)文中常見的幾個(gè)方法

方法 意義

GET 請(qǐng)求讀取由URL所標(biāo)志的信息

HEAD 請(qǐng)求讀取由URL所標(biāo)志的信息的首部

POST 給服務(wù)器添加信息

CONNECT 用于代理服務(wù)器

get和post方法的區(qū)別:

一般我們?cè)跒g覽器輸入一個(gè)網(wǎng)址訪問(wèn)網(wǎng)站都是GET請(qǐng)求;在FORM表單中,可以通過(guò)設(shè)置Method指定提交方式為GET或POST,默認(rèn)時(shí)為GET提交方式。

get請(qǐng)求一般不會(huì)修改服務(wù)器的信息,僅用于請(qǐng)求頁(yè)面;post請(qǐng)求可能會(huì)修改服務(wù)器中的資源信息,如提交評(píng)論、博客等都是通過(guò)post請(qǐng)求實(shí)現(xiàn)。

get請(qǐng)求的信息附加在URL后面,這些被顯示的暴露在外面。post請(qǐng)求的數(shù)據(jù)放在包體中,不容易暴露,因此一般用戶登錄等保密性高的不宜采用get請(qǐng)求,而用post請(qǐng)求。

1.基于apache建立虛用戶

提供兩個(gè)基于名稱的虛擬主機(jī)www1, www2;有單獨(dú)的錯(cuò)誤日志和訪問(wèn)日志;

先建立虛擬主機(jī)www1

a.在httpd的輔助配置文件目錄/etc/httpd/conf.d/中創(chuàng)建屬于虛擬主機(jī)自己的配置文件

~]# vim /etc/httpd/conf.d/vhosts-www1.conf

<VirtualHost 192.168.127.128:80>

? ? ? ? DocumentRoot "/myweb/vhosts/www1"

? ? ? ? ServerName www.link1.com

? ? ? ? ErrorLog "/myweb/vhosts/www1/logs/error_log"

? ? ? ? CustomLog "/myweb/vhosts/www1/logs/access_log" combined

</VirtualHost>

<Directory "/myweb/vhosts/www1">

? ? AllowOverride None

? ? Options None

? ? Require all granted

</Directory>

? b.創(chuàng)建好配置文件后,再創(chuàng)建文檔根目錄及日志目錄,修改日志文件讀寫權(quán)限

重新載入配置文件

systemctl reload httpd.service

2.http用戶權(quán)限管理

修改www1的配置文件如下:

<VirtualHost 192.168.127.128:80>

? ? ? ? DocumentRoot "/myweb/vhosts/www1"

? ? ? ? ServerName www.link1.com

? ? ? ? ErrorLog "/myweb/vhosts/www1/logs/error_log"

? ? ? ? CustomLog "/myweb/vhosts/www1/logs/access_log" combined

</VirtualHost>

<Directory "/myweb/vhosts/www1">

? ? AllowOverride None

? ? Options None

? ? AuthType basic

? ? AuthName "Please input user and password to login,only link has permission to access?。?

? ? AuthUserFile /etc/httpd/users/.htpasswd

? ? Require user link

</Directory>

? ? a-2.使用htpasswd命令創(chuàng)建虛擬用戶

~]# mkdir /etc/httpd/users

~]# htpasswd -c -m /etc/httpd/users/.htpasswd link

~]# htpasswd -m /etc/httpd/users/.htpasswd link1

實(shí)現(xiàn)了登錄用戶權(quán)限管理功能

3.為上面的www2虛擬主機(jī)提供https服務(wù)

? 創(chuàng)建私有CA,然后再為本服務(wù)器頒發(fā)自簽證書。

? a.創(chuàng)建私有CA

? ? a-1.創(chuàng)建私有CA私鑰文件

~]# (umask 077 ; openssl genrsa -out /etc/pki/CA/private/cakey.pem 4096)

? ? a-2.生成自簽證書

~]# openssl req -new -x509 -key /etc/pki/CA/private/cakey.pem? -out /etc/pki/CA/cacert.pem -days 3653

? ? a-3.滿足CA所必須的目錄級(jí)文件和文本文件的布局

~]# touch /etc/pki/CA/index.txt

~]# echo 01 > /etc/pki/CA/serial

? b.為服務(wù)器提供證書

? ? b-1.創(chuàng)建服務(wù)器的私鑰文件

~]# mkdir /etc/httpd/conf/ssl

~]# cd /etc/httpd/conf/ssl

ssl]# (umask 077 ; openssl genrsa -out httpd.key 4096)

? ? b-2.生成證書請(qǐng)求文件

ssl]# openssl req -new -key httpd.key -out httpd.csr -days 3653

? ? b-3.由CA簽發(fā)證書:在CA所在的服務(wù)器上完成

ssl]# openssl ca -in httpd.csr -out httpd.crt -days 365

? 至此證書頒發(fā)完成。

? c.安裝mod_ssl模塊

? ? yum -y install mod_ssl

? ? 修改ssl的配置文件的部分內(nèi)容如下:

SSLCertificateFile /etc/httpd/conf/ssl/httpd.crt

<directory "/myweb/vhosts/ssl">

? ? AllowOverride None

? ? Options None

? ? Require all granted

</Directory>

DocumentRoot "/myweb/vhosts/ssl"

ServerName www.link2.com

SSLCertificateKeyFile /etc/httpd/conf/ssl/httpd.key

? ? 然后再創(chuàng)建/myweb/vhosts/ssl目錄

~]# mkdir /myweb/vhosts/ssl

~]# echo "welcome to https://www.link2.com" >> /myweb/vhosts/ssl/index.html

實(shí)現(xiàn)https

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 1. 概述 在網(wǎng)絡(luò)環(huán)境中一般用戶只需要在瀏覽器中輸入url如www.sunny.com就可以到對(duì)應(yīng)服務(wù)器獲取相應(yīng)的...
    ghbsunny閱讀 3,380評(píng)論 0 7
  • 一、實(shí)現(xiàn)從根,com,rj.com 模擬互聯(lián)網(wǎng)的DNS架構(gòu) DNS(Domain Name System,域名系統(tǒng)...
    ssjinyao閱讀 1,620評(píng)論 0 7
  • DNS DNS:Domain Name Service 應(yīng)用層協(xié)議(C/S,53/udp, 53/tcp) 域名 ...
    毛利卷卷發(fā)閱讀 7,027評(píng)論 0 6
  • 一、BIND是什么 BIND是互聯(lián)網(wǎng)應(yīng)用最為廣泛的DNS軟件。 二、BIND的安裝與使用 以下內(nèi)容轉(zhuǎn)自 http:...
    0_0啊閱讀 3,344評(píng)論 0 0
  • “哎,你踩到我的蛐蛐了”趴在草地上的段靳言,頭也不抬的悶聲地說(shuō)著。 “哦哦,不好意思?!毙∨苓^(guò)草地的謝沐馨停下腳步...
    黛夢(mèng)兒閱讀 451評(píng)論 1 5

友情鏈接更多精彩內(nèi)容