爲linux dns (bind named)服務器配置 單獨的筆記

注意: 當在把 named.ca文件下載好13個根dns服務器的 全球記錄後, 就再也不須要別的 dns服務器來輔助得到了. 只要把全部 本地服務器 不能解析的請求, 都發送到 . 點根去就好了, 因此 這個時候, 要把本地dns服務器的 /etc/reslov.conf 中的nameserver 改爲 : 127.0.0.1

默認的dns服務器都是要支持 recursive 遞歸查詢的: 即若是你的dns服務器指定的 是 相隔很遠的, 不一樣的頂級域的時候, 服務器會 依次, 屢次的 向上一級, 甚至 根級 轉發查詢請求, 知道找到要查找的請求. 好比,我要查找a.b.com. , 可是我連com的域都不知道, 那麼我就要發給 點根服務器, 讓點根服務器告訴我 管理com域的dns服務器(ip地址)有哪些, 點根返回結果給我, 而後我又向 com域 的dns管理服務器 查詢 b.com這個域dns服務器在哪裏, com域dns管理服務器告訴我 b.com 域服務器的(ip)地址, 而後我再 根 b.com 域dns服務器聯繫, 讓他告訴我 a.b.com的地址在哪裏... 這個就叫作遞歸查詢.

須要注意的是, 在遞歸查詢中, 全部的查詢都是都是本地機器指定的 nameserver 去作的, 根級dns服務器, 頂級域名服務器如com, cn, org等 都只是告訴 nameserver_specified , 根級服務器和頂級dns服務器並不會去查的, 由於 每一次根級服務器 /頂級 服務器 都只是查找 本身的 緩存 記錄的.

因此 dns服務器 經過 internet 網 查詢 會 影響 網速的. 而若是採用本地的 /局域網內部的 dns服務器, (也是查詢內部dns服務器的緩存, 即每一次查詢結果, 都會 保存/緩存) , 會加快網速.


linux的命令名和它的選項名稱, 必定是 某個單詞的 簡寫, 因此 你用不着 去刻意去記憶的. 真的知道了/記住了 對應的單詞, 纔會永遠的 記得住! php

dns分四級: 點根服務器, 全球有13個, 他是不參與域名解析的, 其次是 頂級域, 包括com, cn, org, edu等, (要注意, 頂級域比 根域要小), 再次是二級域(即子域), 好比 redhat.com, 最後是 主機 名如www等.

  1. named域名服務 , 他的包名稱叫 bind: Berkeley internet named daemon. 由於有不少 named 的軟件, bind只是其中的一個.
    配置和啓動文件的名稱 都是 named...
    其實進行域名名稱 解析, 還有兩種方式, 一是 hosts, 另外一個是 NIS. 之前的解析方式, 還真的是經過 hosts文件 來實現的 當你要上網的時候, 首先就是 到一個 服務器上去 手工下載/ 更新 hosts文件???html

  2. isc.org是 internet system/software consortium: 因特網軟件(系統??)聯盟 con'sortium 聯盟, 財團linux

  3. 設置機器的dns服務器地址, 的命令, 不是 dns... , 而是 nameserver 1.1.1.1
    第一次去挖掘named.ca文件內容的時候, 須要指定一個 遠程的 ns服務器, 好比: 202.98.96.69, 當配置好本地dns服務器, 做爲 "生產dns服務器"時, 就要指定 127.0.0.1 , 若是是局域網內的其餘機器, 就要指定 本地局域網內的 這臺生產dns服務器的 ip地址..c++

  4. windows上的 共享,使用的協議是ms開發的 叫 CIFS: common internet filesystem. 通用internet 文件系統. 能夠被 linux直接 mount. mount的時候要指定 類型是 -t cifs 就能夠了.算法

  5. Windows機器上 有幾個 默認的 共享 包括 幾個分區的共享, 好比: C$, D$, 還有一個 IPC$ 共享數據庫

  6. linux的程序包rpm 就相似 於win中的 exe程序文件, 是已經編譯好了的文件. 所以, 要查看某個軟件是否安裝了, 就是查看 這個 對應的rpm包是否安裝了.
    dnf是一種包管理軟件, 由於 linux中 爲了不包和包之間的 功能的重複 開發, 因此 就把 你們都要使用的 功能 單獨拿出來, 造成 一個包, 這樣之後你們使用時 就只依賴這一個包就好了.編程


  1. DHCP是基於255.255.255.255的廣播機制進行的, dhcp不能穿越路由器,因此是 局域網內的協議, 所以, 在一個 lan中, 只能有一個 dhcp, 不然就會發生衝突!vim

  2. dhcp是由 internet 軟件聯盟: isc.org 提供的,windows

  3. 經過查看 /var/log/ messages: 這個message是複數 因此有 複數後綴s緩存

  4. dhcp的啓動命令, 是 /usr/bin/dhcpd 這個命令文件, 不是 用 service dhcp 來啓動的.

  5. httpd, vsftpd 主要是 遠程網絡 進行共享和鏈接的, 對於 局域網內的 文件共享, 主要 是經過 smb / samber 協議 來實現的 samber主要 是用來 讓windows 的機器 來 對 linux 主機 進行 文件共享的, 由於對於 linux 共享win的文件來講, 能夠直接 mount -t cifs 就好了.

  6. 而另外一個 共享程序, nfs : network filesystem 協議, 則 只能 是用在 linux主機和 linux主機進行文件共享. win的主機 不能使用 nfs共享 ??


直接用 yum 安裝的 bind 比較容易, 如下是用 tar 編譯安裝的 bind-9.10.6 的包

  1. ./configure 配置時, 固然須要gcc , 不須要 gcc-c++, 可是 須要 open-ssl 的開發包 openssl-devel
  2. 配置時 應該指定 --prefix=/usr/local/named --sysconfdir=/etc/named 中 有的教材上說的, 沒有配置 --prefix, 那樣 (本身安裝的程序包一般放在 /usr/local中 固然這個 不少軟件包 都是 /通常 是由 configure 本身默認的...)將放在/usr/local/bin...等中, 若是隻是本身編譯安裝一個包還行, 若是安裝多個 都混合放置就混亂了 因此 仍是 最好的指定 --prefix. 一樣的, 不少工做目錄 是默認的 放在 --prefix/var中, 這裏 能夠 單獨指定到 /var/named 中, 這個看你 本身的 風格和 習慣了..
  3. 可是 編譯安裝的時候, 在 /etc/named/ 中 並無提供 named.conf 主配置文件, 須要本身 手動寫.

/usr/local/named/sbin/named -g 會列出 named運行的 全局 (global) 信息, 好比有多個worker thread, 有多少個 udp listener, 載入的配置文件是哪一個, 結果怎樣. 用 named -v | -V 能夠 看到更多的 信息.

  1. 在 named/man下有 man1, man3, man5, man8, man1是關於dig.1 host.1 等工具的文檔; man5 是關於 主配置文件named.conf.5 rndc.conf.5的說明文檔, man8 是關於一些dns擴展功能的幫助,包括rndc.8 rndc-confgen.8
  2. 主配置文件 named.conf 的語法要求: 徹底相似 於 C語言的寫法, 每個 語句寫完都要 用 分號結束; 而後全部的單詞 (任何單詞, 包括 大括號 之間 )之間 都用 空格 分隔, 不用 冒號. 一般 服務器的配置文件 要求都比較嚴格, 因此 要 注意 空格, 和 大括號等的 問題.

#### 這裏要特別 注意的是 , 區域的 type 類型 有 master, slave, hint 等, 這些類型 是 不能 加 引號的!! 其餘 像 文件名, 目錄路徑要加引號.

關於多個目錄的操做

  1. dirs只是列出 顯示目錄的結構, 他自己並不能切換
  2. pushd 自己有兩個做用, 一個是壓入棧, 另外一個 他自己 也是 切換目錄, 好比你在 壓入一個 目錄的時候, 是否是 同時也切換了 當前目錄? 因此
    pushd 不帶什麼的, 就是 在 最近的兩個目錄之間切換; pushd +n...
  3. popd 則純粹是 刪除目錄...
  4. 那麼, 怎麼知道當前目錄的排列呢 : 目錄的排列是: 打pushd改變的時候, 會顯示當前的目錄排列, 從左到右,是 依次從小到大進行排列的, 並且第一個老是從0 開始的. 也就是從左到右是按從0 到大開始排列的...

more的另外一種使用方式, 一般使用的是用more作管道, cat foo.txt | more, 而實際上, more 還能夠直接 more 分屏顯示 文件: more foo.txt 因此 , 之後只是在 沒有文件, 只有控制檯的命令輸出 使用分屏時, 才使用 管道!


如何 可以 找到 所有 的 全球 點根 . dns服務器的ip地址?

  1. 要設置 /etc/resolv.conf 只須要 重定向一句話就能夠了: echo 1.1.1.1 > /etc/resolv.conf 每次 都用 徹底覆蓋的方式.
  2. **就是 要用 點根 . dns服務器的 ip地址 來查 點根 服務器! 因此 就是 第一次 dig -t NS . 找到一個 點根地址後, 要 將 resolv.conf 中的 nameserver 的地址 換成 那個 第一次查出的 點根 ip地址 . 必定要 直到 列出 所有的 13個 點根dns服務器 的地址, 就是 從 A.ROOT-SERVERS.NET. 一直到 M.ROOT-SERVERS.NET.

確實是啓動 named 服務的時候, 是 直接打 named 這個命令的, 由於在本身 編譯安裝的時候, 是沒有做爲service 服務來註冊的, 因此 就不能使用 service 的方式啓動. 直接使用 named 命令就成了. 固然: 須要將 named的路徑 /usr/local/named/sbin 放到 PATH環境變量中.

  1. named服務必定要有 rndc服務器的支持, 才能 運行成功. 而rndc 服務器 只要 具備了/配置好了 /etc/rndc.conf 配置文件, 直接運行 rndc就能夠運行了.
  2. 運行 rndc-confgen命令 , 重定向到 > /etc/rndc.conf , 就生成 /etc/rndc.conf, 按照文件中所說的那樣, 要把 rndc.conf 文件後面的 部分的內容 追加到 named.conf中.
    這個實際上, 是生成了 rndc.key 用來讓 rndc和named 通訊聯絡的 tcp/ip套接字, 而後 將 key "rndc.key" {...} controls .... 中的key內容 拷貝到named.conf中, 這樣 named.conf和 rndc.conf中 就都有了 相同的 共享的 密鑰key了.

  3. 好像 rndc 這個服務器命令自己 就 一同 跟 named 放在 --prefix/sbin目錄中的???
  4. 配置 好rndc.conf 後, 先直接 運行rndc , 而後 運行 named, 就好. 監視 /var/log/messages 和 ps -aux | grep named ...

直到 用 127.0.0.1的resolv.conf 能解析 公網的域名了, 就說明了 本地dns服務器能夠工做了. 本地服務器 只要 配置好了 點根 dns服務器 就能夠工做.


要注意在 dns的 區域文件中, 會在 多個地方 出現多個 localhost. 一樣 是 localhost. 可是 在不一樣的地方表示的意義 不同.

  1. 要注意 , 區域定義文件中的 @ 是一個變量, 這個變量是 來自 named.conf 主 配置文件中 的 zone 區域中指定的 區域名
  2. 在 類型 爲 SOA和 NS 的 entry中 最前面的 @ 表示的 是 區域, 而 類型 爲 A的 entry中, 最前面的 @ 表示 的 是 主機.
  3. 並且 在 SOA 和 NS 和 A等 entry中 的點. 不是表明 zone區域名稱, 而是表示 結束 ??? 好比: localhost. 就表示 的是 "localhost"這個區域, 這個區域就是localhost, 後面沒有別的什麼.com什麼的了, 由於這個區域名稱 在主配置文件中已經寫明 限死了的了 . 若是表示 myzone.com這個區域, 那麼就是: myzone.com. 了, 表示 到com後面就結束了.
  4. @是一個變量, 因此凡是 "字面寫法上" 相同的, 無論它的意思是否相同, 均可以用@ 來代替.
  5. 對於 幾個條目中 只有第一個條目的最前面是@的解釋, 不是由於 下面的是 內容 是同一條條目, 而是由於 : 仍然是 幾條 獨立的 / 分離的 entries. 好比 3條entry, 注意, 每一行 都表示 一個 單獨的 條目; 只是 由於, 後面的幾個 entry, 第一個單詞, 是相同的, 好比 也是 localhost. , 因此都用 @ 來代替了, 又由於 同時@ , 因此 就 繼承省略了. 可是要注意, 既然是繼承, 就不能頂格寫了, 前面必定要留言 空格 或 tab鍵 ...

rndc 是用來管理named服務的, 也就是說, 只要當 named服務啓動後, 之後 就用rndc來管理他了. 包括named.conf修改了配置文件後, 你用不着去重啓 named 服務, 而是 直接用 rndc reload就能夠了.

rndc的操做, 只有兩步: 一是: 配置 rndc-confgen >> /etc/rndc.conf 生成配置文件, 第二步是, 運行 rndc的相關命令: 包括 : 啓動命令: rndc, 從新加載/重啓 命令 : rndc reload, 查看命令: rndc status.


  1. whereis 和which的區別, 從他們的語義上來就能看出: whereis說的是, 在哪裏, 就是問你 某個命令 /文件, 存在於哪些地方, 即找到/顯示這個命令及相關內容的存放位置(whereis 根 $PATH 沒有什麼關係的) ; 而which 指的是 在當前的可執行命令環境中, 即$PATH顯示的目錄中(注意 $PATH不包含 目錄的子目錄) 是哪個, 指的是, 若是一個命令 有alternatives, 那麼當前直接執行 某個命令 使用的是 哪個(幾個中的哪個?)

  2. more和cat 的區別, 都是打印, 之後的使用方法是: 若是不顯示行號, 就都用more, 若是要顯示行號, 才使用 cat -n.. 同時cat還有 鏈接 的 含義和 用法.

  3. 默認的 rndc 的配置文件 rndc.conf 和 rndc.key文件都是 放在 跟 named.conf同一個目錄中的, 好比你配置 named.conf是放在 /etc/named目錄中的話, 那麼 rndc.conf 和 rndc.key 就一樣是放在 /etc/named目錄中的.
  4. 爲何輸入rndc-confgen沒有反應呢? 是由於 要產生 rndc.key 要使用 隨機僞設備, rndc.key 的長度 是 from 1 through 512, DEFAULT 256.
    rndc-confgen的選項:
  • -A 指定使用的算法, 默認的是 hmac-md5
  • -b 指定key 的 長度
  • -c 指定要產生的 key的文件名稱 , 默認的是 在 named.conf同目錄下的 rndc.key 文件
  • -k 指定 named.conf 和 rndc.conf中 要使用 的key 的名稱, 默認的是 " key 'rndc.key' "
  • -r 指定要使用的 隨機文件, random file, 默認的是使用 /dev/random或 /dev/urandom. 也能夠本身建立 一個 足夠長的隨機字符串組成的文件, 來做爲 random file

### 因此說, 不是輸入 rndc-confgen 沒有反應, 而是由於隨機數 要從 /dev/random 僞隨機設備來 產生, 而是由於 產生隨機字符的速度比較慢而已!

配置 /etc/rc.conf 文件, 告知內核  使用特定中斷做爲隨機事件的源。你能夠經過在/etc/rc.conf中設置rand_irqs來使之永久生效。
/etc/rc.conf
rand_irqs="3 14 15"

===========================

關於 /dev/random 和 /dev/urandom?

  1. 他們是產生 隨機數字節流的 僞設備 文件. 能夠產生永不爲空的 隨機數. 許多加密/解密的應用 程序如 ssh, ssl等 都會用到它, 還有好比這裏的 rndc-confgen要產生的隨機數key文件也要用到它.
    其中 /dev/random依賴於系統的中斷, 當中斷數量不夠的時候, 會阻塞掛起...而/dev/urandom則不依賴於系統的中斷, 因此前者產生的隨機數較慢, 可是 前者的字節流數據的隨機性更好.

  2. od是 octal ( [2ktl] 八的; 八進制的... ) dump的意思. 是用來 顯示一些特殊內容和格式的文件內容的 . 他默認的是用 octal 來顯示的, 可是還能夠用 -d -x(十六進制)來查看
    好比 executalbe 可執行文件, 直接用more / cat等來查看會顯示亂碼或不顯示, 可是能夠用 od -x轉換後查看..

  3. dddata dump? 的意思, 是 將數據 進行 copy and convert . 主要的參數有 : if=/dev/cdrom, of=./cdrom.iso bs=100M count=1 (bs是說一次讀入寫出的 字節數 等於 數字加單位,如512K, 100M等, count是說轉換dump 多少塊/多少次) 好比 dd if=/dev/zero of=./zero.txt bs=1M count=1

  4. 特殊設備文件 ? 在linux中, 全部的設備 都看成是 文件來看待的, 好比硬盤是 看成block 塊文件的, 鍵盤鼠標是看成 character字符設備看待的. 還有一些 特殊功能的 "僞" 設備文件, 用來產生特殊字符或實現特殊功能的, 好比: /dev/zero(產生空字符 0 字符,但並無 真實的 字符0,或空格) , /dev/random 用來產生隨機數的... /dev/null是無底洞 設備, 能夠存聽任何多的任何內容, 且永遠不會被撐着...

  5. linux中, 能夠直接使用 命令 : CDRECORD 將 iso文件 刻錄到 cd盤 或 dvd盤均可以, 不用再找其餘刻錄軟件了, 就一條命令:
    cdrecord -v -eject speed=8 dev=0,3,0 driveopts=burnfree test.iso
    通常不用指定 speed, 刻錄倍速, 刻錄機會自動檢查最佳的 刻錄倍速
    刻錄設備, 使用 cdrecord --scanbus 來查看可用的 刻錄機設備.

================

rndc使用的是 tcp/udp的 953端口

[root@localhost named]# grep rndc /etc/services
rndc            953/tcp                         # rndc control sockets (BIND 9)
rndc            953/udp                         # rndc control sockets (BIND 9)
[root@localhost named]#

rndc.conf的配置文件是 規定了 key "rndc-key" 和 options. 而後對應的 named後面 也加上 相應的 rndc-key 和 controls

# Start of rndc.conf
key "rndc-key" {
        algorithm hmac-md5;    注意 只有 純粹的字符串才加引號, 若是不是 則不能加引號, 好比這裏, 還好比 在named.conf 中的 type 的 master, hint等.
        secret "Ak/Nf2ERn+H4yOrzji6b/A==";
};

options {
        default-key "rndc-key";
        default-server 127.0.0.1;
        default-port 953;
};                                        //  這裏要注意,  配置文件的格式 是很嚴格的:  好比 每一行 / 每一條語句 後面都要加上 分號,  最後的 大括號後面 也要 加上 分號. 
# End of rndc.conf

# Use with the following in named.conf, adjusting the allow list as needed:
# key "rndc-key" {
#       algorithm hmac-md5;
#       secret "Ak/Nf2ERn+H4yOrzji6b/A==";
# };
#
# controls {
#       inet 127.0.0.1 port 953
#               allow { 127.0.0.1; } keys { "rndc-key"; };
# };
# End of named.conf

注意, rndc 不是一個單獨的命令, 他有不少options 和子命令, 好比 rndc status/reload/flush 等等, 另外 同httpd, firewalld, sshd等其餘 服務 同樣, 若是修改了 named的配置文件, 也要 重啓啓動 named: 即先要中止 named服務 killall -9 named 而後 ,再 從新 啓動 named 服務. 直到 使用 host可以解析 外網了, 那麼就表示 本地dns服務器配置成功了.

如何修改 wget的目的地址和名稱?

有兩個參數, 能夠 更正 wget的默認設置,
-P --directory-prefix 能夠指定 wget 下載的 路徑, 默認的下載路徑是 當前使用 wget的 目錄, 這個一般不太合適, 你能夠本身從新指定
-O ( --output-document )能夠從新指定 下載的文件的名稱, 有些站點若是地址是一個目錄, 這時即便你得到的資源是一個 tar.gz文件, 它也默認保存爲index.html 這個就很差了, 並且下載完成後, 很容易忘記更更名稱, 從而形成 誤解和誤操做!!

=======================

配置named時, 爲何要配置localhost?

hostname 是一個 顯示主機名的命令, 其實它還有 不少選項:
-a 顯示別名alias
-i 顯示對應的 ipaddress
-I 顯示 更多的本機ip, 即網卡的ip地址
-d 顯示他的域名
-f 顯示徹底限定域名
因此 127.0.0.1 localhost.localhostdomain localhost 都是 機器名, 後面的那個 localhost 是機器的別名.

dns服務器分爲: master dns 服務區 + slave dns 服務器 + 緩存服務器

  1. service named restart|reload, 最好是不用 restart, 由於這個會引發 網絡的斷開, 可使用 reload, 在不斷開dns網絡服務的狀況下, 從新加載修改後的配置文件
  2. named-checkconf 檢查配置文件是否正確,
    named-checkzone 是 檢查區域文件的配置是否正確的命令: 格式是 named-checkzone "域名的名稱" "域名的文件名", 好比: named-checkzone "localhost" /usr/local/namedvar/localhost.zone (這些域名 和 域名文件名 能夠加引號, 也能夠不加引號)
    若是配置有錯誤, 會報告出來, 而後就能夠 照着 去修改.

  3. comment(s): 主要有三種意思: 註釋/註解, 好比編程語言中的註釋; 評論, 評語; 最後還有一個意思是: 意見.
    好比: 徵求意見: Request For Comments: RFC 能夠叫作 "意見徵求書, 意見徵求稿"
    RFC是internet機構的engineers和計算機科學家制定的一些標準和規範. 你能夠對它提出建議等... 好比: dns的 zone文件的格式不是由BIND制定的,而是DNS標準文檔制定的(見RFC1035)

注意zone文件的格式:

  1. 控制指令是 以$開頭, 而不是以 @ 開頭的
  2. 區域文件中的 點號, 表示 "結束"! 表示 一個區域名, 或 一個主機名 的結束了, 不然 就要在這個 主機名 或 域名的後面 要再加上 區域名稱, 纔是 徹底的/完整的 域名和主機了.
  3. 區域文件中的 @ 表示的是一個 變量名, 這個變量名的名稱就是 帶點號的區域的名稱, 即 localhost. 定義 區域 zone "localhost" IN {...} , 而後 在 區域文件中 這個 @ 就等於 localhost.
參考: www.phpfans.net/ask/fansa1/1021757816.html
在正向中, @ 就表明 home. 算是根域吧
在反向中, @ 就表明 123.168.192.in-addr.arpa. 這個。 因此在使用中,要不就用@ 省寫代替,要不就統一寫完整的。

zone區域文件中, SOA記錄中 括號內的數字 沒必要 分別寫在 各行, 能夠寫在一行內:

[root@localhost named]# sbin/named-checkzone localhost var/localhost.zone
zone localhost/IN: loaded serial 1
OK
[root@localhost named]# more var/localhost.zone
$TTL 86400
$ORIGIN localhost.

@  1D IN SOA @ root ( 1 3H  15M  1W 1D )
        IN NS @
        IN A 127.0.0.1

[root@localhost named]#

終於清楚了: 爲何在localhost區域中, 使用 host localhost 或 host localhost. 可以正確地解析出 127.0.0.1, 可是 使用 host localhost.localhost 就會報錯? 這是由於, @ 就等於 localhost. 注意這裏的主機名就是localhost, 由於無論是SOA 後面的主機名稱, 仍是 下面的 A記錄 的 localhost. 都是 帶點號結尾的localhost. 記錄, (點號表示 結束, 表示 這個主機名稱 或域名 是 fqdn, 即 主機名 就是 localhost了, 後面不能/不須要再加上 .localhost這個域名了. 也就是說, 這裏的 localhost. 就至關於 完整的 www.baidu.com 了) 因此...

第二, 就是, 在 zone 區域文件中, 關於主機名稱或域名, 你既能夠用 徹底的/完整的名稱(用點號結尾的名稱, 如 http://www.home., www.foodom.com. , localhost. , 也可使用 相對的 , 不完整的 主機名或域名 這時的主機名或域名 就會自動的 在 後面 加上 當前域名, 好比: 管理員root 就等於: root.foodom.com. 主機: locolhost 就等於 localhost.foodom.com. 注意這裏的localhost後面沒有帶點. www就等於 www.foodom.com.

  1. soa記錄中的 serial表示 更改次數/版本, 每次修改時都應該 增長數字, 由於slave dns server會將 本身的 serial 數值根主機的 serial 數值相比較, 只有當 主dns服務器的版本號(即這個serial值)大於本身的對應值時, 纔會去更新, 不然就會認爲主dns記錄沒有改變/更新, 就不會去 更新本身的 數據庫記錄的...

=============================

  1. localhost一般來講, 是一個域名主機名稱, 他能夠設置爲 任意的 ip地址, 好比: localhsot - 192.168.0.10 可是一般都是設置爲 127.0.01 的
    而127.0.0.1 這個ip地址 是迴環loopback這個網卡(虛擬的)的地址, 是機器內部 不少 內部 網絡程序進行通訊的地址.

若是rndc提示, 127.0.0.1#953 connection refused. 必定是 named.conf 和 rndc.conf 的配置 的問題, 說明 他們的 rndc-key 沒有 傳遞到, 要麼沒有 配置 rndc-key, 要麼就是 named.conf 中的 拷貝rndc.conf中的部分沒有 被 解開註釋.

解開註釋的方法, 有兩種, 一種是在vim中, 解開: 這個能夠支持 $-1 的行號的寫法, 好比: : ., $-1 s/^#\ //
另外一種方法是 使用 sed , 可是在 sed 命令中 是 不支持 $-1 的寫法的: 好比: sed -i -e '10, $-1s/^#\ //' ./etc/named.conf 這時會提示 說 - character 不合法...

在localhost域, 爲何 localhost 主機能夠直接解析, 而其餘主機必須加上 .localhost?

[root@localhost named]# host www.localhost
www.localhost has address 192.168.0.104
[root@localhost named]# host www.localhost.
www.localhost has address 192.168.0.104
[root@localhost named]# more var/localhost.zone 
$TTL 86400
$ORIGIN localhost.

@ 1D    IN  SOA  @  root ( 1 3H 15M 1W 1D )
        IN  NS   @ 
        IN  A    127.0.0.1     ///  是由於在這裏就隱含了 localhost 這個域名/主機名???

www     IN  A     192.168.0.104
[root@localhost named]#

在 zone區域文件中, 每一條記錄都是 以 區域名稱 或 主機名稱 開頭的! 同時 master和 slave的 區域版本號的 寫法,是 以 年月日的數字+版本號, 好比: 2017121001 這樣, 正好 若是是後面的日期 修改了的, 那麼 後面的 日期數字 也要比 前面的日期數字大~

區域文件中, SOA後面的表示 的是: 這個域名 受權 的 區域是 哪些? 管理員是誰. 因此 , SOA後面的 是一個區域名稱, 沒必要寫 主機名稱??

  1. 測試主機和 域名 的工具, 既可使用 host, 也可使用dig, dig命令的信息更詳細...
  2. dig的類型能夠有多種, 好比 -t NS , -t MX 10 , -t A 等 好比 : dig -t A www.foodom.com
  3. 一個域名 同時也能夠是 一個主機名, 或者說, 在任何一個區域中, 你 徹底能夠定義一個 和 區域名稱 相同的 主機名. 好比: 有一個域名 叫 foodom.com, 你也能夠定義一個主機名, 爲: foodom.com
@ 1D  IN SOA @ (這裏的@ 表示 一個 根域名稱同名的 主機名) root ( 2017101001 3H 15M 1W 1D)
           IN NS  ns  (或@)
           IN MX 10 mail
           IN   A  10.10.1.254

ns       IN   A   10.10.1.254 (10.0.0.1) 能夠是本身, 也能夠是別的主機, 根據具體狀況.
若是用的是本身,  那麼 上面的 NS 和  MX 就能夠寫本身 , 即: @ 

NS是指明 這個區域 的 名稱服務器, 就是用 的ns主機,  這裏用的是 省略的名稱, 因此 在後面必定補上  ns的記錄 entry 條目.
mail 是指明這個區域的 郵件服務器, 就是用的 mail主機, 完整的名稱 是: mail.foodom.com.  在後面也要補上條目
  1. 若是在本地域, 本機域, 能夠 使用 簡寫的縮寫 的名稱, 即只寫省略的名稱, 不寫 域名, 那麼就是 在 /etc/resolv.conf 文件中, 加上 一句 search foodom.com 表示解析主機的時候, 能夠在後面自動的加上 這個 search的域名...

再看一下 SOA 應該是 : section of authority , 是指的 受權區域, 而不是 "開始受權"?

SOA, 其中的 s 表示的是 section . 即SOA = section of authority 受權區域, 因此 SOA的後面是 一個 域! 而不是主機???

;; AUTHORITY SECTION:
foodom.com.             86400   IN      NS      ns.foodom.com.

dns的端口號53 和 953 的區別?

DNS 自己的端口爲53 UDP是用來作DNS解析的。通常域名提供商,提供的dns服務器,都是走udp53端口的。
搭建dns服務器,提供域名解析,也是一樣作udp53端口。若是端口沒開放,或是被其餘內容給佔用了,都會致使域名解析不正常。
而機子的 953 端口, 是提供給 rndc來 鏈接 dns的

[root@localhost named]# sbin/rndc reload
rndc: connect failed: 127.0.0.1#953: connection refused
[root@localhost named]#

[root@localhost named]# cat /etc/services  | grep  rndc
rndc            953/tcp                         # rndc control sockets (BIND 9)
rndc            953/udp                         # rndc control sockets (BIND 9)
[root@localhost named]#

這個953  和 好記:  一個是bind 9的 dns版本,  而後 他控制的 是 dns的運行端口 53. 就是這兩個數字的 結合: 9 + 53 = 953

每次查詢時, 主要是看 那個 迴應的 section. 即answer section:

;; ANSWER SECTION: dig -t SOA ....
foodom.com.             86400   IN      SOA     foodom.com. root.foodom.com. 2018011001 10800 900 604800 86400
  
;; ANSWER SECTION:   dig -t  A ....
www.foodom.com.         86400   IN      A       1.1.1.10

=================================================

反向區域 如: 0.168.192.in-addr.arpa .zone 文件的配置 跟正向區域配置的區別和不一樣

  1. 配置 反向區域的 時候, 裏面的 全部關於 主機名稱的 地方 就 都不 能 省略了, 由於你省略的話, 默認的就是要加上 0.168.192.in-addr.arpa. 後綴, 很明顯這個是要不得的, 好比, 管理員 要用 root.localhost. 而不能只是寫root, 後面的 NS, MX等 都要 寫成 正確的 完整的 主機名稱, 如: ns.localhost. mail.localhost. 而不能寫成 @ 等等.

  2. 可是 SOA後面的 區域 能夠用 @ 來表示, 所以, 再一次說明了 SOA 後面的 @ 表示的 是 "受權的區域", 不是什麼管理主機. 是區域, 所以, 老是能夠用 @ 來表示的

  3. 特別注意的 是, 就是 反向區域中的 IN類型是 PTR, 再也不是 A了.

在 dig命令的 顯示中, 有幾個區域 其中 "question section: 表示的是 提問區域即 提交查詢的主機/ " 而 answer section 就是 應答區域了.

;; QUESTION SECTION:  //提問區域
;1.0.0.127.in-addr.arpa.                IN      PTR
 
;; ANSWER SECTION:  // 應答區域
1.0.0.127.in-addr.arpa. 86400   IN      PTR     localhost.

;; AUTHORITY SECTION:
0.0.127.in-addr.arpa.   86400   IN      NS      localhost.

;; ADDITIONAL SECTION:
localhost.              86400   IN      A       127.0.0.1

在 zone區域文件中, 每一條 entry之間 能夠 間隔 空行的! 並且對於 一條 entry, 若是 他是一空格 , tab等 whitespace 字符開始的 , 都表示 他的 設置目標 是 繼承上一條 entry的 對象!

對反向區域的測試工具命令

  1. 能夠直接使用 host 來測試反向區域的ip地址:
[root@localhost named]# host 127.0.0.1
1.0.0.127.in-addr.arpa domain name pointer localhost.
  1. 也可使用 dig 來測試 反向區域 , 可是, 使用的dig的時候, 不能直接 挖掘 ip地址, 由於會把ip地址看成一個 正向 的主機地址來看. 因此 要
[root@localhost named]# dig -x 127.0.0.1   // 使用 -x選項 後面跟 正常的ip地址
或者
使用 -t ptr類型, 可是後面要跟 完整的 反向地址域名
[root@localhost named]# dig -t ptr 1.0.0.127.in-addr.arpa

關於反向區域的命名: 域名 必須嚴格的 寫做 : 0.168.192.in-addr.arpa, 可是 區域文件的名稱 一般仍是寫做 正向ip區域的zone: 好比: 192.168.0.zone

zone區域文件中的 關鍵字, 能夠大寫 , 也能夠 小寫, 好比 IN 能夠寫成 in, PTR能夠寫成 ptr, A能夠寫成a等等

[root@localhost named]# sbin/named-checkzone "0.168.192.in-addr.arpa" var/192.168.0.zone
var/192.168.0.zone:1: no TTL specified; using SOA   MINTTL  instead  // 當沒有在 區域文件中 明顯地指定  TTL的時候,  就是用 soa中的 最小ttl minttl來代替 
zone 0.168.192.in-addr.arpa/IN: loaded serial 2018101001
OK
[root@localhost named]# more var/192.168.0.zone
@  IN SOA  bardom.com  root.bardom.com. (  2018101001 3H 15M 1W 1D )
   IN  NS ns.bardom.com.

254 IN  PTR  ns.bardom.com.
1   IN   ptr  www.bardom.com.
2   in   ptr  ftp.bardom.com.     // **這裏使用的是 小寫的 in, 小寫的ptr**//   可是  named-checkzone 是 ok的! 


[root@localhost named]#

若是正確的 解析了的話, 應該在 dig 顯示區域 看到 answer section! 若是沒有看到 answer section 就說明 出錯了, 多是, 服務器沒有起來, 或者是 你的 解析地址 寫錯了,

[root@localhost named]# dig -t ptr 254.0.168.192.in-add.arpa

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.17.rc1.el6_4.6 <<>> -t ptr 254.0.168.192.in-add.arpa
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NXDOMAIN, id: 63773
;; flags: qr rd ra; QUERY: 1, ANSWER: 0, AUTHORITY: 1, ADDITIONAL: 0

;; QUESTION SECTION:
;254.0.168.192.in-add.arpa.     IN      PTR 

///  這裏 沒有看到 answer section, 是由於 :  上面的 in-add 寫錯了, 正確 的 應該是  in-addr. 

;; AUTHORITY SECTION:
arpa.                   10733   IN      SOA     a.root-servers.net. nstld.verisign-grs.com. 2018011600 1800 900 604800 86400

其餘dns服務的配置 還有 子域的受權, 輔助dns服務器(slave 服務器)的配置等等. 就是進階的 暫時不作了.

相關文章
相關標籤/搜索