使用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