1、簡述DNS服務器原理,并搭建主-輔服務器。
? ??1)、在瀏覽器中輸入www.baidu.com 域名,操作系統會先檢查自己本地的hosts文件是存在這個網址映射關系,如果存在會優先調用本地的IP地址映射,完成域名解析。
????2)、如果本地hosts里沒有對應域名的映射,則查找本地DNS解析器緩存,是否有這個網址映射關系,如果有直接返回應答,完成域名解析。
????3)、如果hosts與本地DNS解析器緩存都沒有相應的網址映射關系,首先會找TCP/ip參數中設置的首選DNS服務器,在此我們叫它本地DNS服務器,此服務器收到查詢時,如果要查詢的域名,包含在本地配置區域資源中,則返回解析結果給客戶機,完成域名解析,此解析具有權威性。
? ? 4)、如果要查詢的域名,不由本地DNS服務器區域解析,但該服務器已緩存了此網址映射關系,則調用這個IP地址映射,完成域名解析,此解析不具有權威性。
????5)、如果本地DNS服務器本地區域文件與緩存解析都失效,則根據本地DNS服務器的設置(是否設置轉發器)進行查詢,如果未用轉發模式,本地DNS就把請求發至13臺根DNS,根DNS服務器收到請求后會判斷這個域名(.com)是誰來授權管理,并會返回一個負責該頂級域名服務器的一個IP。本地DNS服務器收到IP信息后,會去.com域的這臺服務器請求解析。.com域的服務器收到請求后,如果自己無法解析,它就會找一個管理.com域的下一級DNS服務器地址(baidu.com)給本地DNS服務器。當本地DNS服務器收到這個地址后,就會請求baidu.com域服務器,重復上面的動作,進行查詢,直至找到www.baidu.com主機最終完成域名解析。
????6)、如果用的是轉發模式,此DNS服務器就會把請求轉發至上一級DNS服務器,由上一級服務器進行解析,上一級服務器如果不能解析,或找根DNS或把轉請求轉至上上級,以此循環。不管是本地DNS服務器用是是轉發,還是根提示,最后都是把結果返回給本地DNS服務器,由此DNS服務器再返回給客戶機。
從客戶端到本地DNS服務器是屬于遞歸查詢,而DNS服務器之間的交互查詢就是迭代查詢。
? ? 主輔DNS服務器搭建
? ? ? ? 主DNS:192.168.2.238? ?從DNS:192.168.2.239? ? ?測試域名:www.dnstest.com? 客戶端機器:192.168.2.240
? ? ? ? 1)在主從服務器上安裝bind包??yum -y install bind
? ? ? ? 2)修改主服務器dns配置文件? vim /etc/named.conf
????????????將此行注釋運行所有機器訪問dns,dns默認53端口是監聽在本機,
????????????//? ? ? listen-on port 53 { localhost; };
????????????允許所有主機查詢
????????????allow-query? ? { any; };
????????????//? ? ? 安全限制,只允許dns從服務器查詢
? ? ? ? ? ? ?allow-transfer { 192.168.2.239; };
? ? ? ? 3)添加解析的域,創建解析域的數據庫文件
? ??????????vim /var/named/dnstest.com.zone
? ??????????$TTL 1D
????????????@? ? IN? ? ? SOA? master.dnstest.com admin.dnstest.com. (
? ? ? ? ? ? ? ? ? ? ? ? 1
? ? ? ? ? ? ? ? ? ? ? ? 1D
? ? ? ? ? ? ? ? ? ? ? ? 1H
? ? ? ? ? ? ? ? ? ? ? ? 1W
? ? ? ? ? ? ? ? ? ? ? ? 3H )
? ? ? ????????NS? ? master
? ? ? ? ? ? ? ?NS? ? slave1
????????????master IN? A? ? 192.168.2.238
????????????slave1 IN? A? ? 192.168.2.239
????????????www? ? CNAME? ? webapp
????????????webapp IN? A? ? 192.168.2.238
????????????webapp IN? A? ? 192.168.2.239
? ? ? ? 4)添加域配置,type指定類型為dns主服務器,file指定域解析的數據庫文件
????????????vim /etc/named.rfc1912.zones
? ??????????????zone "dnstest.com" {
? ? ? ????????????? type master;
? ? ? ? ????????????file "dnstest.com.zone";
????????????????};
? ? ? ? 5)啟動dns服務并驗證主DNS服務域名解析
? ? ? ? ? ?在客戶端機器上驗證 dig -t A www.dnstest.com @192.168.2.238? ?
? ? ? ? ? ? ?6)從DNS服務器配置
? ??????????????修改從服務器dns配置文件
????????????????vim /etc.named.conf
????????????????將此行注釋運行所有機器訪問dns,dns默認53端口是監聽在本機,
????????????????//? ? ? listen-on port 53 { localhost; };
????????????????允許所有主機查詢
????????????????allow-query? ? { any; };
????????????????//? ? ? 安全限制,不允許任何dns服務器與當前dns服務器同步數據
? ? ? ? ????????????allow-transfer { none; };
? ? ? ? 7)添加同步域配置,
????????????vim /etc/named.rfc1912.zones
????????????zone "kang.com" IN {
? ? ? ????????????? type slave;
? ? ? ? ????????????masters {192.168.2.238;};
? ? ? ? ????????????file "slaves/dnstest.com.zone.slave";
????????????????};
? ? ? ? 8)啟動從節點上的dns服務器,查看主節點數據庫文件是否同步成功
? ? ? ? ? ? ? ? systemctl? ? ?start? ? ?named
????????????????ls /var/named/slaves/? ?文件同步成功
? ? ? ? 9)驗證使用從節點解析域名是否正常,同時測試將主服務器dns服務停止使用dns從節點是否還能正常解析域名
? ??????????dig -t A www.dnstest.com @192.168.2.239
? ? 停止主DNS服務器,驗證從服務器是否解析正常
dig -t A www.dnstest.com @192.168.2.239
? ? ? ? 10)DNS主從服務器搭建完成。
2、搭建并實現智能DNS。
? ? ? ? 實驗環境:?dns服務器1臺:192.168.2.241? ? ?客戶端1臺:192.168.2.238,192.168.6.41,127.0.0.1
? ? ? ? www.dnstest.com? A記錄解析的IP分別是:192.168.2.239、192.168.6.181、119.29.29.29
? ? ? ? 1)在dns服務端安裝bind包? yum -y install bind
? ? ? ? 2)修改named.conf ,定義各地的ip地址列表,注意事項小網段定義在前,大網段定義在后,否則不能實現智能解析
? ??????????acl beijingnet { 192.168.2.0/24;? };
????????????acl?shenzhennet { 192.168.6.0/24;? };
????????????acl othernet { any;? };
? ? ? ? 3)在/var/named/目錄下創建3個區域數據庫文件,實際生產環境ns解析服務器可使用對應區域的IP,這里實驗使用同一個地址,同時修改3個文件的權限chgrp named dnstest.com.zone.*
? ? ? ? ? ? ? ?dnstest.com.zone.beijing
????????????$TTL 1D
????????????@? IN SOA ns1 admin ( 1 1H 1H 1D 3H )
? ? ? ????????????NS? ns1
????????????????ns1? A? ? 192.168.2.241
????????????????www? A? ? 192.168.2.239
? ? ? ? ? ? ? ?dnstest.com.zone.shenzhen
????????????$TTL 1D
????????????@? IN SOA ns1 admin ( 1 1H 1H 1D 3H )
? ? ? ????????????NS? ns1
????????????????ns1? A? ? 192.168.2.241
? ? ? ? ? ? ? ?www? A? ? 192.168.6.181
? ? ? ? ? ? ? ?dnstest.com.zone.other
????????????$TTL 1D
????????????@? IN SOA ns1 admin ( 1 1H 1H 1D 3H )
? ? ? ????????????NS? ns1
????????????????ns1? A? ? 192.168.2.241
????????????????www? A? ? 119.29.29.29
? ??? ? 4)定義bind view,定了view后,必須將所有的zone放到view中
????????在vim named.conf中定義
????????view view_beijing {
????????match-clients { beijingnet; };
????????include? "/etc/named.named.rfc1912.zones.beijing";
????????};
????????view view_shanghai {
????????match-clients { shenzhennet; };
????????include? "/etc/named.named.rfc1912.zones.shenzhen";
????????};
????????view view_other {
????????match-clients { othernet; };
????????include? "/etc/named.named.rfc1912.zones";
????????};
? ??????5)將/etc/named.named.rfc1912.conf放到view中,將view中定義的zone配置段放到/etc/named.named.rfc1912.zones文件中,便于管理
????????zone "dnstest.com" {
? ????????type master;
? ????????file "dnstest.com.zone.beijing";
????????};
????????zone "dnstest.com" {
? ????????type master;
? ????????file "dnstest.com.zone.shenzhen";
????????};
????????zone "dnstest.com" {
? ????????type master;
? ????????file "dnstest.com.zone.other";
????????};
? ? ? ? 6)將named.conf文件中的如下配置段放入到/etc/named.named.rfc1912.zones文件中
????????zone "." IN {
????????type hint;
????????file "named.ca"
????????};
? ? ? ? 7)將/etc/named.named.rfc1912.zones復制3份,分別修改里面的zone為定義的區域,同時修改3個文件的權限chgrp named dnstest.com.zone.*
????????cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.beijing
????????zone "dnstest.com" {
? ????????type master;
????????? file "dnstest.com.zone.beijing"
????????};
????????cp /etc/named.named.rfc1912.zones /etc/named.named.rfc1912.zones.shenzhen
????????zone "dnstest.com" {
? ????????type master;
????????? file "dnstest.com.zone.shenzhen"
????????};
????????/etc/named.named.rfc1912.zones 為other配置文件
????????zone "dnstest.com" {
? ????????type master;
? ????????file "dnstest.com.zone.other"
????????};
? ? ? ? 8)啟動dns服務器,并在不同網段的客戶端機器上驗證www.dnstest.com域名的dns解析
? ? ? ? ? ? 在192.168.2.0網段客戶端機器上驗證beijingdns解析? dig?www.dnstest.com @192.168.2.241? ? ??
? ??在192.168.6.0網段客戶端機器上驗證beijingdns解析? dig?www.dnstest.com @192.168.2.241? ? ? ??
在其他網段客戶端機器上驗證other解析,dig?www.dnstest.com? ?@127.0.0.1
3、編譯安裝Mariadb,并啟動后可以正常登錄
? ? 1)下載并解壓mariadb源碼包 wget https://github.com/MariaDB/server/archive/mariadb-10.2.18.tar.gz
????????tar?xf?mariadb-10.2.18.tar.gz
? ? 2)安裝編譯時所需依賴包
yum install bison bison-devel zlib-devel libcurl-devel libarchive-devel boost-devel gcc gcc-c++ cmake ncurses-devel gnutls-devel libxml2-devel openssl-devel libevent-devel libaio-devel
? ? 3)創建程序運行用戶和mariadb數據存放目錄
? ? ????mkdir -p /root/data/mysql
????????useradd -r -s /sbin/nologin -d /data/mysql/
? ??????chown mysql.mysql /data/mysql/
? ? 4)編譯安裝
????????cmake . \
????????-DCMAKE_INSTALL_PREFIX=/data/app/mysql \
????????-DMYSQL_DATADIR=/data/mysql/ \
????????-DSYSCONFDIR=/etc/ \
????????-DMYSQL_USER=mysql \
????????-DWITH_INNOBASE_STORAGE_ENGINE=1 \
????????-DWITH_ARCHIVE_STORAGE_ENGINE=1 \
????????-DWITH_BLACKHOLE_STORAGE_ENGINE=1 \
????????-DWITH_PARTITION_STORAGE_ENGINE=1 \
????????-DWITHOUT_MROONGA_STORAGE_ENGINE=1 \
????????-DWITH_DEBUG=0 \
????????-DWITH_READLINE=1 \
????????-DWITH_SSL=system \
????????-DWITH_ZLIB=system \
????????-DWITH_LIBWRAP=0 \
????????-DENABLED_LOCAL_INFILE=1 \
????????-DMYSQL_UNIX_ADDR=/data/mysql/mysql.sock \
????????-DDEFAULT_CHARSET=utf8mb4 \
????????-DDEFAULT_COLLATION=utf8mb4_general_ci
? ? ?5)安裝
? ? ? ? ? ? make -j 4 && make install?
? ? ? ? 6)配置mariadb環境變量
? ??????????echo 'PATH=/data/app/mysql/bin:$PATH' > /etc/profile.d/mysql.sh
? ? ? ? ????加載環境變量? ? source?/etc/profile.d/mysql.sh
? ? ????7)初始化數據庫
? ? ? ? ? ? 進入到mariadb程序安裝目錄? cd /data/app/mysql/
? ? ? ? ? ? ./scripts/mysql_install_db --datadir=/data/mysql --user=mysql
? ? ? ? 8)準備mariadb配置文件
? ??????????cp /data/app/mysql/support-files/my-huge.cnf /etc/my.cnf
? ? ? ? 9)準備mariadb啟動腳本
? ??????????cp /data/app/mysql/support-files/mysql.server /etc/rc.d/init.d/mysqld
? ? ? ? 10)?啟動mariadb服務
? ??????????????chkconfig --add mysqld;systemctl start mysqld? ? ? ??
? ? ? ? 11)修改登錄密碼,數據庫安裝完成。
? ??????????mysqladmin -uroot password "new_password";