"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