ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务
DNS
1. 簡介
本文使用 BIND9,用盡量少的步驟,搭建出一個可用的內(nèi)網(wǎng) DNS 服務(wù)。另外要說明的一點是,本文不僅適用于 Ubuntu 16.04,也使用其后的 Ubuntu 系統(tǒng)(截止到目前位置,最新的 Ubuntu server 版本是 18.04,之后的版本無法保證)。
2. 配置極簡內(nèi)網(wǎng) DNS 服務(wù)
2.1 安裝 BIND9
先更新 APT,之后再安裝 BIND9 相關(guān)的軟件包:
$ sudo apt update
$ sudo apt install bind9 bind9utils bind9-doc
2.2 配置 BIND9 的 IPv4 模式
這步是要將 BIND9 設(shè)置為只支持 IPv4 地址,如果需要用到 IPv6 地址的話,可以跳過這步。
我們需要修改 BIND9 的 systemd unit file:
$ sudo systemctl edit --full bind9
當(dāng)然我們也可以直接用文件編輯器修改文件:
$ sudo vim /etc/systemd/system/multi-user.target.wants/bind9.service
文件內(nèi)容如下,在 ExecStart 這行的最后加上 -4 就可以了。
...
[Service]
...
ExecStart=/usr/sbin/named -f $OPTIONS -4
...
修改配置后,需要重啟 BIND9,因為 systemd 的 unit file 也變了,所以需要重新載入:
$ sudo systemctl daemon-reload
$ sudo systemctl restart bind9
2.3 修改配置文件 named.conf.options
該文件(/etc/bind/named.conf.options)需要修改三處:
acl 部分:acl 是控制哪些客戶端可以連接到這個 DNS 上的,支持子網(wǎng)掩碼方式,例子中我把 10.19.250.0/24 網(wǎng)段中的所有 IP 都設(shè)為了可訪問。
recursion 字段:設(shè)置成 yes,表示允許遞歸 DNS 查詢。
allow-recursion 字段:允許遞歸查詢的客戶端范圍,這里設(shè)置成了之前在 acl 中聲明的 trusted。
listen-on 字段:表示 DNS 服務(wù)監(jiān)聽在哪個地址上,填寫本地 IP 即可。
allow-transfer 字段:設(shè)置成 none 表示不允許其他 DNS 服務(wù)器從本 DNS 服務(wù)器中查詢。
forwarders 字段:原因是我們的內(nèi)網(wǎng) DNS 服務(wù)只提供了很有限的幾條 DNS 記錄,如果不做點什么的話,APT 源的地址都解析不了。BIND9 提供 DNS 查詢的轉(zhuǎn)發(fā)機(jī)制,當(dāng)本地 DNS 查詢不到,將查詢轉(zhuǎn)發(fā)到 forwarders 上,并把查詢結(jié)果緩存到本地 DNS 上,這樣問題就解決了。本文使用的是國內(nèi)公網(wǎng) DNS:114.114.114.114,大家可以根據(jù)自己的需求進(jìn)行修改。
$ cat /etc/bind/named.conf.options
acl "trusted" {
10.19.250.0/24;
};
...
options {
recursion yes;
allow-recursion { trusted; };
listen-on { 10.19.250.56; };
allow-transfer { none; };
...
forwarders {
114.114.114.114;
};
...
}
...
2.4 修改配置文件 named.conf.local
假設(shè)搭建的內(nèi)網(wǎng) DNS 要解析的域名為 example.com,那么 /etc/bind/named.conf.local 內(nèi)容應(yīng)改為:
$ cat /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};
2.5 修改 zone 文件
zone 文件在 2.4 里已經(jīng)出現(xiàn)過了,file "/etc/bind/zones/db.example.com";,需要在對應(yīng)的目錄下建立該文件。
$ cat /etc/bind/zones/db.example.com
$TTL 604800
@ IN SOA testing.example.com. admin.example.com. (
2 ; Serial
604800 ; Refresh
86400 ; Retry
2419200 ; Expire
604800 ) ; Negative Cache TTL
;
; A records
@ IN NS epc.example.com.
example.com. IN NS epc.example.com.
epc.example.com. IN A 10.19.250.201
testing.example.com. IN A 10.19.250.201
需要注意的幾點是:
不要漏掉域名后面的點,例如:testing.example.com.
我們需要的 A 類型的記錄,但是 NS 類型的記錄也不要漏掉,不然會報錯的。
named-checkconf[39493]: zone example.com/IN: has no NS records
named-checkconf[39493]: zone example.com/IN: not loaded due to errors.
named-checkconf[39493]: _default/example.com/IN: bad zone
SOA 類型的記錄目前我還不能確定是不是必須,待驗證過后再做更新,在這之前,大家還是也把這部分加上吧。
2.6 檢查 DNS 配置
bind9 自帶了檢查配置文件語法正確性的工具,這可以降低排查錯誤的難度,所以在進(jìn)一步測試 DNS 功能之前,我們先來好好利用這些工具檢查一下前幾步配置是否正確吧。
先來檢查 named.conf.* 文件,如果運行該命令沒有任何輸出的話,就說明配置一切 OK,如果有的話,根據(jù)提示修改,如果遇到問題不知道怎么解決,歡迎留言。
$ sudo named-checkconf
接下來用命令 named-checkzone 檢查 zone 文件,命令格式如下:sudo named-checkzone ,第一個參數(shù) 是域名,參考 2.4 中配置的域名,第二參數(shù) 是 zone 文件,參考 2.5 中配置的 zone 文件。
$ sudo named-checkzone example.com /etc/bind/zones/db.example.com
zone example.com/IN: loaded serial 2
OK
如果輸出結(jié)果如上,恭喜,配置正確,如果有問題的話,還是要根據(jù)提示具體問題具體分析。
2.7 驗證
經(jīng)過這些配置,終于可以驗證一下 DNS 是否能正常工作了,先重啟 bind9。
$ sudo systemctl restart bind9.service
接下來要用 nslookup 檢查剛剛配置的域名能否正常解析,如果系統(tǒng)里沒有這個命令,輸入一下命令安裝:
sudo apt install -y dnsutils
輸入以下命令,可以看到 testing.example.com 正確的解析成了 10.19.250.201。恭喜,你成功的配置了 DNS!
$ nslookup testing.example.com
Server: 10.19.250.56
Address: 10.19.250.56#53
Name: testing.example.com
Address: 10.19.250.201
3. 參考資料
總結(jié)
以上是生活随笔為你收集整理的ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: cfiledialog指定位置和大小_位
- 下一篇: ros安装-Ubuntu14.04