ubuntu14.04使用unbound部署dns服务器

使用unbound配置dns服务器,我的服务器IP是172.25.128.51,另一台机器是172.25.128.58,我用51这台机器配置dns服务器,另外一台用来测试是否成功
首先我们先下载适合ubuntu14.04的unbound,下载地址是

https://ubuntu.pkgs.org/14.04/ubuntu-updates-universe-amd64/unbound_1.4.22-1ubuntu4.14.04.3_amd64.deb.html
然后我们将下载好的deb软件上传到服务器,然后切换到root账户下进行安装

dpkg -i unbound_1.4.22-1ubuntu4.14.04.3_amd64.deb

安装好以后会在etc/下面生成一些文件,我们首先需要配置unbound.conf文件,这个文件没有,我们直接创建一个,然后写入以下配置

vi /etc/unbound/unbound.conf
#添加以下配置,域名改成自己的
server:
        verbosity: 1
        num-threads: 2  #线程数
        interface: 0.0.0.0 #监听地址(一般写本机内网ip)
        interface: ::0
        port: 53  #端口
        so-reuseport: yes  #为每个线程的传入查询打开专用侦听套接字。可以更均匀地将传入查询分布到线程
        cache-min-ttl: 60  #解析最小缓存时间
        cache-max-ttl: 600 #解析最大缓存时间
        outgoing-range: 8192  
        access-control: 0.0.0.0/0 allow  #访问控制(允许10段ip访问本机)
        access-control: 127.0.0.1/8 allow  #允许本机访问
        access-control: ::0/0 allow  #允许ipv6网段访问
        prefetch: yes    #消息缓存元素在它们到期之前被预取以保持缓存是最新的
        do-ip4: yes
        do-ip6: yes
        do-udp: yes
        do-tcp: yes
        so-rcvbuf: 8m
        so-sndbuf: 8m
        msg-cache-size: 64m   #消息缓存的字节数。 默认值为4 MB。
        rrset-cache-size: 128m   #RRset缓存的字节数。
        outgoing-num-tcp: 256   #为每个线程分配的传出TCP缓冲区数
        incoming-num-tcp: 1024   #为每个线程分配的传入TCP缓冲区数
        local-zone: "sulao.com" redirect
        local-data: "sulao.com 86400 IN A 172.25.128.51"
remote-control:
        control-enable: yes
        control-interface: 127.0.0.1
        control-port: 8953

我们然后使用命令检查配置是否OK

# /usr/sbin/unbound-checkconf 
[1563426306] unbound-checkconf[3701:0] fatal error: user 'unbound' does not exist.

提示我们unbound用户不存在,我们需要手工创建一个

useradd unbound

然后我们再次执行,这次报了另外一个错误

[1563426428] unbound-checkconf[3745:0] fatal error: server-key-file: "/etc/unbound/unbound_server.key" does not exist

提示是unbound_server.key密钥不存
这个时候需要我们手工生成密钥,执行命令来生成密钥

/usr/sbin/unbound-control-setup

提示

setup in directory /etc/unbound
generating unbound_server.key
Generating RSA private key, 1536 bit long modulus
...................................++++
.................................................++++
e is 65537 (0x10001)
generating unbound_control.key
Generating RSA private key, 1536 bit long modulus
..................................................................................................++++
..................................++++
e is 65537 (0x10001)
create unbound_server.pem (self signed certificate)
create unbound_control.pem (signed client certificate)
Signature ok
subject=/CN=unbound-control
Getting CA Private Key
Setup success. Certificates created.

这样我们在目录下面看到多生成了几个文件,分别是

unbound_control.key
unbound_control.pem
unbound_server.key
unbound_server.pem

接下来我们再来测试/usr/sbin/unbound-checkconf 命令就提示

unbound-checkconf: no errors in /etc/unbound/unbound.conf

没有任何错误了
接下来我们就可以启动服务了

/usr/sbin/unbound

然后我们去其他机器的/etc/resolv.conf文件内添加dns指向

nameserver 172.25.128.51

我们再使用dig测试下

dig sulao.com

打印出

; <<>> DiG 9.9.5-3ubuntu0.8-Ubuntu <<>> sulao.com
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 7634
;; flags: qr aa rd ra; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 1
;; OPT PSEUDOSECTION:
; EDNS: version: 0, flags:; udp: 4096
;; QUESTION SECTION:
;sulao.com.                     IN      A
;; ANSWER SECTION:
sulao.com.              86400   IN      A       172.25.128.51
;; Query time: 2 msec
;; SERVER: 172.25.128.51#53(172.25.128.51)
;; WHEN: Thu Jul 18 13:23:09 CST 2019
;; MSG SIZE  rcvd: 54

这样就是这样的了,我们也可以尝试ping下这个域名

ping sulao.com

也是显示的dns主机,这样就是成功了,最后是开机启动,可以直接将命令写入rc.local文件即可

vi /etc/rc.local

再exit 0前添加

/usr/sbin/unbound


常见问题

如果遇到unbound无法启动,可能是由于unbound和ubuntu自带得dnsmasq冲突了,我们需要将其禁用或者卸载,操作如下

首先我们需要删除NetworkManager配置信息

vi /etc/NetworkManager/NetworkManager.conf

删除以下内容

dns=dnsmasq

然后保存即可

或者可以直接删除dnsmasq-base软件包(不推荐)

sudo apt-get remove dnsmasq-base


内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://sulao.cn/post/696.html