有特定的格式組成,用來表示互聯網中某一臺計算機或者計算機組的名稱,可以是人更方便的訪問互聯網,而不用記住可以被機器直接讀取的IP地址。linux
域名的正向解析shell
將主機域名轉換爲對應的IP地址,以便網絡程序可以經過主機域名訪問到對應的服務器主機vim
域名——>IP A記錄緩存
域名的方向解析安全
將主機的IP地址轉換爲對應的域名,以便網絡(服務)程序可以經過IP地址查詢到主機的域名服務器
IP——>域名 PTR記錄網絡
根域.dom
一級域名<頂級域|國家域>ssh
com :頂級域,由ICANN組織指定和管理tcp
分類:
baidu:二級域(註冊域),可由我的或組織申請註冊
www:三級域(子域),服務器網站名錶明
域名機構
收費:新網|萬網
免費域名:TK頂級域名、TK域名DNS、TK域名商
客戶機首先查找本地hosts文件,若是有則返回,不然進行下一步
客戶機查看本地緩存,是否存在本條目的緩存,若是有則直接返回,不然進行下一步
將請求轉發給指向的DNS服務器
查看域名是否本地解析,是則本地解析返回,不然進行下一步
若是詢問一次獲得結果 遞歸查詢 C-S
若是詢問屢次獲得結果 迭代查詢 S-S
dig +trace www.baidu.com --追蹤dns解析過程 dig @server www.baiducom --正向解析查詢 dig -x 192.168.0.1 @server --反向解析查詢 dig +trace www.baidu.com --追蹤一個域名解析過程
DNS的域名解析都是udp/53. 主從之間的數據傳輸默認使用tcp/53
DNS軟件:
Bind是一款開放源碼的DNS服務器軟件,Bind由美國加州大學Berkeley(伯克利)分校開發和維護的,全名爲Berkeley Internet Name Domain,它是目前世界上使用最爲普遍的DNS服務器軟件,支持各類Unix平臺和Windows平臺。Bind如今由互聯網系統協會(Internet Systems Consortium)負責開發與維護
需求1:
搭建DNS服務器,可以將www.misshou.io解析成192.168.1.254——>正向解析
思路:
關閉防火牆和selinux
[root@localhost ~]# vim /etc/sysconfig [root@localhost ~]# vim /etc/sysconfig/network [root@localhost ~]# service iptables stop [root@localhost ~]# chkconfig iptables off [root@localhost ~]# getenforce Permissive [root@localhost ~]# vim /etc/sysconfig/selinux [root@localhost ~]# grep ^SELINUX /etc/sysconfig/selinux SELINUX=disabled SELINUXTYPE=targeted
配置yum源
已配,略
軟件三部曲
查看並安裝軟件
[root@server ~]#yum -y install bind
肯定成功安裝
[root@server ~]# rpm -q bind bind-9.8.2-0.30.rc1.el6.x86_64
查看軟件列表
/etc/logrotate.d/named --日誌輪轉文件 /etc/named --配置文件的主目錄 /etc/named.conf --主配置文件 /etc/named.rfc1912.zones --Zone文件,定義域 /etc/rc.d/init.d/named --啓動腳本 /usr/sbin/named --二進制命令 /usr/sbin/named-checkconf --檢查配置文件的命令 named.conf named.rfc1912.zones /usr/sbin/named-checkzone --檢查區域文件的命令 /var/log/named.log --日誌文件 /var/named --數據文件的主目錄 /var/named/data /var/named/named.ca --根域服務器 /var/named/named.empty /var/named/named.localhost --正向解析區域文件的模板 /var/named/named.loopback --反向解析區域文件的模板 /var/named/slaves --從dns服務器下載文件的默認路徑 /var/run/named --進程文件
瞭解配置文件(語法、參數配置)——>man 5 xxx.conf
[root@server ~]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; any; }; --監聽方式,any表示全網監聽 listen-on-v6 port 53 { ::1; }; directory "/var/named"; --數據文件的主目錄 dump-file "/var/named/data/cache_dump.db"; --DNS緩存 statistics-file "/var/named/data/named_stats.txt"; --統計 memstatistics-file "/var/named/data/named_mem_stats.txt"; --內存統計 allow-query { localhost; any; }; --容許哪些人能夠查詢;any表明任何人 recursion yes; --是否遞歸 dnssec-enable yes; --dns安全擴展機制(簽名認證) dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; 說明: #DNSSEC 域名系統安全,它是DNS的安全擴展協議 #DLV DNSSEC 後備祕鑰 #這些安全機制的設定,是爲了保護DNS服務器與用戶之間的數據安全,避免惡意數據對用戶的欺騙 zone "." IN { type hint; file "named.ca"; }; include "/etc/named.rfc1912.zones"; include "/etc/named.root.key";
[root@server ~]# vim /etc/named.rfc1912.zones //定義正向域的模板 zone "localhost.localdomain" IN { type master; file "named.localhost"; allow-update { none; }; }; //定義反向域的模板 zone "1.0.0.127.in-addr.arpa" IN { type master; file "named.loopback"; allow-update { none; }; }; [root@server named]# cd /var/named/ [root@server named]# ll -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost -rw-r-----. 1 root named 168 Dec 15 2009 named.loopback drwxrwx---. 2 named named 4096 Oct 15 2014 slaves #解釋: # $ITL --緩存的生命週期 # @ = zonename = cnpcic.com --當前域 # IN --互聯網 # SOA --開始受權 # NS --DNS服務端 nameserver # A --ipv4正向 # AAAA --ipv6 # CNAME --別名 # MX ---郵件交互記錄 5 表明數字優先級 數字越小優先級越高 [root@server named]# cat named.localhost $TTL 1D @ IN SOA @ rname.invalid. ( 0 ; serial --更新序列號 1D ; refresh --更新間隔(從服務器下載數據) 1H ; retry --失敗重試 1W ; expire --區域文件的過時時間 3H ) ; minimum --緩存的最小生存週期 NS @ A 127.0.0.1 AAAA ::1
根據需求經過修改配置文件完成服務的搭建
dnl.cnpcchad.cot——>10.184.162.99
#1.修改主配置文件/etc/named.conf——>監聽方式和容許誰來查詢 [root@server ~]# vim /etc/named.conf options { listen-on port 53 { 127.0.0.1; 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 { localhost; any; }; --any容許任何人查詢 recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; }; #2.修改子配置文件/etc/named.rfc1912.zones ——>定義管理域 cnpcchad.cot [root@server ~]# vim /etc/named.rfc1912.zones 在該文件最後面添加以下內容: zone "cnpcchad.cot" IN { type master; file "cnpcchad.cot.zone"; allow-update { none; }; }; #3.在/var/named目錄建立相應的zone文件(cnpcchad.cot.zone) [root@server ~]# ll /var/named -rw-r-----. 1 root named 152 Jun 21 2007 named.localhost [root@server ~]# cp -p /var/named/named.localhost /var/named/cnpcchad.cot.zone [root@server ~]# ll /var/named/cnpcchad.cot.zone -rw-r-----. 1 root named 152 Jun 21 2007 /var/named/cnpcchad.cot.zone [root@server ~]# vim /var/named/cnpcchad.cot.zone $TTL 1D @ IN SOA cnpcchad.cot. rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS dns1.cnpcchad.cot. //dns1能夠任意指定,可是需跟後面的A記錄保持一致 dns1 A 192.168.1.128 //前兩行必定是當前DNS服務器的IP daniela A 192.168.1.129 AAAA ::1 #4.使用命令檢查當前配置語法是否正確 [root@server ~]# named-checkconf /etc/named.conf [root@server ~]# named-checkconf /etc/named.rfc1912.zones [root@server ~]# cd /var/named/ [root@server named]# ls cnpcchad.cot.zone data dynamic named.ca named.empty named.localhost named.loopback slaves [root@server named]# named-checkzone cnpcchad.cot.zone cnpcchad.cot.zone //區域文件寫2遍 zone cnpcchad.cot.zone/IN: loaded serial 0 OK
啓動服務,開機自啓動
[root@server named]# service named start Generating /etc/rndc.key: [ OK ] Starting named: [ OK ] [root@server named]# chkconfig named on [root@server named]# netstat -nltup|grep 53 tcp 0 0 192.168.1.128:53 0.0.0.0:* LISTEN 20137/named tcp 0 0 127.0.0.1:53 0.0.0.0:* LISTEN 20137/named tcp 0 0 127.0.0.1:953 0.0.0.0:* LISTEN 20137/named tcp 0 0 ::1:53 :::* LISTEN 20137/named tcp 0 0 ::1:953 :::* LISTEN 20137/named udp 0 0 192.168.1.128:53 0.0.0.0:* 20137/named udp 0 0 127.0.0.1:53 0.0.0.0:* 20137/named udp 0 0 ::1:53 :::* 20137/named
client端:192.168.1.129
#1.指定DNS服務器 [root@client ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf [root@client ~]# cat /etc/resolv.conf nameserver 192.168.1.128 #2.使用相應的工具測試 [root@client ~]# service iptables stop iptables:將鏈設置爲政策 ACCEPT:filter [肯定] iptables:清除防火牆規則: [肯定] iptables:正在卸載模塊: [肯定] [root@client ~]# getenforce Enforcing [root@client ~]# setenforce 0 [root@client ~]# getenforce Permissive #nslookup命令 [root@client ~]# nslookup daniela.cnpcchad.cot Server: 192.168.1.128 Address: 192.168.1.128#53 Name: daniela.cnpcchad.cot Address: 192.168.1.129 #dig命令 [root@client ~]# dig @192.168.1.128 daniela.cnpcchad.cot ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 daniela.cnpcchad.cot ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 52861 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;daniela.cnpcchad.cot. IN A ;; ANSWER SECTION: daniela.cnpcchad.cot. 86400 IN A 192.168.1.129 ;; AUTHORITY SECTION: cnpcchad.cot. 86400 IN NS dns1.cnpcchad.cot. ;; ADDITIONAL SECTION: dns1.cnpcchad.cot. 86400 IN A 192.168.1.128 ;; Query time: 2 msec ;; SERVER: 192.168.1.128#53(192.168.1.128) ;; WHEN: Thu Nov 21 17:51:39 2019 ;; MSG SIZE rcvd: 89 #host命令 [root@client ~]# host daniela.cnpcchad.cot daniela.cnpcchad.cot has address 192.168.1.129 daniela.cnpcchad.cot has IPv6 address ::1 結果: 1.看到以上信息說明正向解析沒有問題 2.不可以方向解析,緣由沒有配置 3.若是配置文件沒有錯誤,服務啓動了,那麼解析不了需檢查你的防火牆selinux和網絡
需求2:
搭建DNS服務器,可以正向和方向解析192.168.1.254——www.misshou.io
步驟:
#1./etc/named.conf #2./etc/named.rfc1912.zones //定義了cnpcchad.cot正向域 [root@server ~]# vim /etc/named.rfc1912.zones zone "1.168.192.in-addr.arpa" IN { type master; file "192.168.1.zone"; allow-update { none; }; }; #3.建立192.168.1.zone文件 [root@server ~]# vim /var/named/192.168.1.zone $TTL 1D @ IN SOA cnpcchad.cot rname.invalid. ( 0 ; serial 1D ; refresh 1H ; retry 1W ; expire 3H ) ; minimum @ NS dns1.cnpcchad.cot //若是dns1.cnpcchad.cot在正向區域文件存在,能夠不用寫A記錄 dns1 A 192.168.1.128 128 PTR daniela.cnpcchad.cot. //128對應的是192.168.1.128 #4.重啓服務 [root@server ~]# service named restart Stopping named: [ OK ] Starting named: [ OK ] #5.測試驗證 [root@client ~]#echo nameserver 192.168.1.128 >/etc/resolv.conf [root@client ~]# cat /etc/resolv.conf nameserver 192.168.1.128 #方式1: [root@client ~]# nslookup daniela.cnpcchad.cot Server: 192.168.1.128 Address: 192.168.1.128#53 Name: daniela.cnpcchad.cot Address: 192.168.1.129 [root@client ~]# nslookup 192.168.1.129 Server: 192.168.1.128 Address: 192.168.1.128#53 129.1.168.192.in-addr.arpa name = daniela.cnpcchad.cot. #方式2: [root@client ~]# dig @192.168.1.128 -x 192.168.1.129 ; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.30.rc1.el6 <<>> @192.168.1.128 -x 192.168.1.129 ; (1 server found) ;; global options: +cmd ;; Got answer: ;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13524 ;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 1, ADDITIONAL: 1 ;; QUESTION SECTION: ;129.1.168.192.in-addr.arpa. IN PTR ;; ANSWER SECTION: 129.1.168.192.in-addr.arpa. 86400 IN PTR daniela.cnpcchad.cot. ;; AUTHORITY SECTION: 1.168.192.in-addr.arpa. 86400 IN NS dns1.cnpcchad.cot. ;; ADDITIONAL SECTION: dns1.cnpcchad.cot. 86400 IN A 192.168.1.128 ;; Query time: 1 msec ;; SERVER: 192.168.1.128#53(192.168.1.128) ;; WHEN: Fri Nov 22 09:07:04 2019 ;; MSG SIZE rcvd: 113 #方式3: [root@client ~]# host 192.168.1.129 129.1.168.192.in-addr.arpa domain name pointer daniela.cnpcchad.cot.
方法1:
ntp(network time protocol) 端口:123
[root@server ~]# vim /etc/ntp.conf restrict 192.168.1.0 mask 255.255.0.0 nomodify notrap //容許192.168.1.0網段的主機同步時間 restrict 172.16.0.0 mask 255.255.0.0 nomodify notrap restrict 10.1.1.0 mask 255.0.0.0 nomodify notrap [root@client ~]# ntpdate 192.168.1.128
方法2:
vim /etc/xinetd.d/time-dgram service time { # This is for quick on or off of the service disable = no ... } [root@server ~]# vim /etc/xinetd.d/time-stream service time { disable = no ... } [root@server ~]# netstat -nltup|grep :37 tcp 0 0 :::37 :::* LISTEN 5005/xinetd [root@server ~]# netstat -nltup|grep 37 tcp 0 0 :::37 :::* LISTEN 5005/xinetd #客戶端同步時間: [root@client2 ~]# rdate -s 192.168.1.128 [root@client2 ~]# date Fri Nov 22 08:36:12 PST 2019
思路:
1.master和slave的系統時間保持一致
2.slave服務器上安裝相應的軟件(系統版本、軟件版本高度保持一致)
3.根據需求修改相應的配置文件(master和slave都應該去修改)
步驟:
#1.同步master和slave的系統時間 master和slave上都要操做: [root@master-server ~]# crontab -e */2 * * * * /usr/bin/rdate -s 192.168.1.128 &>/dev/null [root@master-slave ~]# crontab -e */2 * * * * /usr/bin/rdate -s 192.168.1.128 &>/dev/null #2.搭建備用的dns服務器 --如下操做在slave上進行 1)安裝軟件 yum -y install bind 2)修改配置文件 [root@slave-server ~]# vim /etc/named.conf #兩個any 定義監聽方式以及容許誰來查詢 3)修改子配置文件 [root@slave-server ~]# vim /etc/named.rfc1912.zones 在文件的最下面增長如下內容: zone "cnpcchad.cot" IN { type slave; //類型是slave masters {192.168.1.128;}; //指定master dns的ip地址 file "salves/slave.cnpcchad.cot"; //同步過來的文件的保存路徑及名字 }; #3.在master上操做 1)/etc/named.conf 2)/etc/named.rfc1912.zones zone "cnpcchad.cot" IN { type master; file "cnpcchad.cot.zone"; allow-update { none; }; //刪除此行 }; #4.測試驗證 [root@client2 ~]# service iptables stop iptables: Setting chains to policy ACCEPT: filter [ OK ] iptables: Flushing firewall rules: [ OK ] iptables: Unloading modules: [ OK ] [root@client2 ~]# getenforce Enforcing [root@client2 ~]# setenforce 0 [root@client2 ~]# echo nameserver 192.168.1.128 > /etc/resolv.conf [root@client2 ~]# echo nameserver 192.168.1.129 >> /etc/resolv.conf [root@client2 ~]# nslookup daniela.cnpcchad.cot Server: 192.168.1.128 Address: 192.168.1.128#53 Name: daniela.cnpcchad.cot Address: 192.168.1.254 [root@client2 ~]# nslookup daniela.cnpcchad.cot Server: 192.168.1.129 Address: 192.168.1.129#53 Name: daniela.cnpcchad.cot Address: 192.168.1.254 思考:若是隻容許指定的slave來同步數據怎麼作? options { listen-on port 53 { 127.0.0.1; any; }; listen-on-v6 port 53 { ::1; }; allow-transfer {192.168.1.129;}; //指定容許哪一個slave來下載數據 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 { localhost; any; }; recursion yes; dnssec-enable yes; dnssec-validation yes; dnssec-lookaside auto; /* Path to ISC DLV key */ bindkeys-file "/etc/named.iscdlv.key"; managed-keys-directory "/var/named/dynamic"; };