ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务
DNS
1. 简介
本文使用 BIND9,用尽量少的步骤,搭建出一个可用的内网 DNS 服务。另外要说明的一点是,本文不仅适用于 Ubuntu 16.04,也使用其后的 Ubuntu 系统(截止到目前位置,最新的 Ubuntu server 版本是 18.04,之后的版本无法保证)。
2. 配置极简内网 DNS 服务
2.1 安装 BIND9
先更新 APT,之后再安装 BIND9 相关的软件包:
$ sudo apt update
$ sudo apt install bind9 bind9utils bind9-doc
2.2 配置 BIND9 的 IPv4 模式
这步是要将 BIND9 设置为只支持 IPv4 地址,如果需要用到 IPv6 地址的话,可以跳过这步。
我们需要修改 BIND9 的 systemd unit file:
$ sudo systemctl edit --full bind9
当然我们也可以直接用文件编辑器修改文件:
$ sudo vim /etc/systemd/system/multi-user.target.wants/bind9.service
文件内容如下,在 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 上的,支持子网掩码方式,例子中我把 10.19.250.0/24 网段中的所有 IP 都设为了可访问。
recursion 字段:设置成 yes,表示允许递归 DNS 查询。
allow-recursion 字段:允许递归查询的客户端范围,这里设置成了之前在 acl 中声明的 trusted。
listen-on 字段:表示 DNS 服务监听在哪个地址上,填写本地 IP 即可。
allow-transfer 字段:设置成 none 表示不允许其他 DNS 服务器从本 DNS 服务器中查询。
forwarders 字段:原因是我们的内网 DNS 服务只提供了很有限的几条 DNS 记录,如果不做点什么的话,APT 源的地址都解析不了。BIND9 提供 DNS 查询的转发机制,当本地 DNS 查询不到,将查询转发到 forwarders 上,并把查询结果缓存到本地 DNS 上,这样问题就解决了。本文使用的是国内公网 DNS:114.114.114.114,大家可以根据自己的需求进行修改。
$ 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
假设搭建的内网 DNS 要解析的域名为 example.com,那么 /etc/bind/named.conf.local 内容应改为:
$ cat /etc/bind/named.conf.local
zone "example.com" {
type master;
file "/etc/bind/zones/db.example.com";
};
2.5 修改 zone 文件
zone 文件在 2.4 里已经出现过了,file "/etc/bind/zones/db.example.com";,需要在对应的目录下建立该文件。
$ 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 自带了检查配置文件语法正确性的工具,这可以降低排查错误的难度,所以在进一步测试 DNS 功能之前,我们先来好好利用这些工具检查一下前几步配置是否正确吧。
先来检查 named.conf.* 文件,如果运行该命令没有任何输出的话,就说明配置一切 OK,如果有的话,根据提示修改,如果遇到问题不知道怎么解决,欢迎留言。
$ sudo named-checkconf
接下来用命令 named-checkzone 检查 zone 文件,命令格式如下:sudo named-checkzone ,第一个参数 是域名,参考 2.4 中配置的域名,第二参数 是 zone 文件,参考 2.5 中配置的 zone 文件。
$ sudo named-checkzone example.com /etc/bind/zones/db.example.com
zone example.com/IN: loaded serial 2
OK
如果输出结果如上,恭喜,配置正确,如果有问题的话,还是要根据提示具体问题具体分析。
2.7 验证
经过这些配置,终于可以验证一下 DNS 是否能正常工作了,先重启 bind9。
$ sudo systemctl restart bind9.service
接下来要用 nslookup 检查刚刚配置的域名能否正常解析,如果系统里没有这个命令,输入一下命令安装:
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. 参考资料
ubuntu 局域网dns服务器_如何在 Ubuntu 16.04 服务器上配置内网 DNS 服务相关推荐
- 配置内网DNS实现内部域名解析
服务器 实战目的: ü 配置内网的DNS服务器实现内网服务器的域名解析. ü 配置内网的DNS服务器减少到Internet的域名解析流量. ü 配置内网的DNS服务器实现Internet上服务器的域名 ...
- 使用跳板机在Pycharm上配置内网服务器
使用跳板机在Pycharm 上使用内网服务器环境 最近遇到一个问题:实验室服务器仅限内网访问,无法在家(外网)访问实验室的所有内部服务器,但同时实验室又提供了一个外网可以访问的跳板机,虽然可以先s ...
- ubuntu ftp服务器_如何在Ubuntu上安装FTP服务器?
ubuntu ftp服务器 In this tutorial, let's learn how to install FTP server on Ubuntu. FTP or File Transfe ...
- ubuntu的web服务器_如何在Ubuntu上安装OpenLiteSpeed Web服务器?
ubuntu的web服务器 Want to install OpenLiteSpeed Webserver on Ubuntu? Today we're going to do just that. ...
- ubuntu安装zlib库_如何在Ubuntu中安装zlib库?
ubuntu安装zlib库 On Ubuntu (18.04), installing zlib reported unable to locate package zlib: 在Ubuntu(18. ...
- tde数据库加密_如何在TDE加密的数据库上配置SQL Server镜像
tde数据库加密 Securing and encrypting sensitive data stored in your production databases is a big concern ...
- ubuntu安装python百度经验_如何在Ubuntu 20.04上安装Python 3.9(含python编译安装和使用Apt命令安装)...
在本文中,我们将向您展示在Ubuntu 20.04上安装Python 3.9的两种方法.第一种使用APT命令安装Python3.9,第二种是在Ubuntu20.04上编译安装Python 3.9.本教 ...
- ubuntu取消主目录加密_如何在Ubuntu上恢复加密的主目录
ubuntu取消主目录加密 Access an encrypted home directory when you're not logged in – say, from a live CD – a ...
- ubuntu软件包降级命令_如何在Ubuntu上降级软件包
ubuntu软件包降级命令 Ubuntu's Update Manager keeps your packages at the latest version, but occasionally a ...
最新文章
- winform动态的文字效果
- 推荐8个高质量的小众实用APP,解决你的痛点需求
- 大厂动态规划面试汇总,提升内功
- 交叉编译 FLTK1.3.0
- opengl加载显示3D模型gltf类型文件
- boost::sort模块float_sort 右移函子排序示例
- 演示FileInputStream案例演示
- jQuery Ajax - ajax()方法,参数注释
- 路径规划之RRT类算法简述
- [bzoj2594][Wc2006]水管局长数据加强版
- 字节跳动重大宣布:取消!员工炸了:直接降薪1
- 数据库中几个基本概念 主码 外码
- android官方自带下拉刷新功能
- 巨量引擎宣布DouCar2021升级计划,将探索更多商业模式
- 人生不是故事,人生是世故,摸爬滚打才不会辜负功名尘土
- URP——着色器和材质——复杂光照Complex Lit
- 大搜车Java面试 2017.10.30
- 知云文献翻译打不开_PDF翻译/PDF边划边译,最好的PDF翻译软件
- 汽车之家数据 下载合集
- 2017今年CSDN博客排名