近期,需要在无网络的ubuntu环境下搭建内部可用的dns内网,总共花费3个工作日晚上,总算成功搭建,做个记录,记录踩坑记录,同时方便以后翻阅。
安装软件包:
有网络环境下,比较简单:
在终端提示符下,输入以下命令安装 dns:
sudo apt install bind9
dnsutils 软件包是测试和解决 DNS 问题非常有用的。 这些工具通常已经安装,但是要检查或安装 dnsutils,请输入以下内容:
sudo apt install dnsutils
重点讲下无网络环境:
在有网络的虚拟机下载好相关依赖包,笔主是安装vmtools安装一模一样的虚拟机环境下载相关软件包。
要下载软件包而不安装它们,只需运行
sudo apt-get install --download-only <package_name>
apt-get install --download-only udev_249.11
要安装下载的软件包,
请转到缓存文件夹/var/cache/apt/archives并按如下所示安装它们。
sudo dpkg -i *
如果尚未安装 apt-rdepends,请使用以下命令进行安装:
sudo apt install apt-rdepends
然后使用以下命令下载主包(即我们的例子中的 Vim)以及所有依赖项:
apt download $(apt-rdepends vim | grep -v "^ ")
此命令将递归下载所有必需的依赖包。
如果遇到如下错误:
E: Can't select candidate version from package debconf-2.0 as it has no candidate
1
可以使用以下命令:
apt-get download $(apt-rdepends vim | grep -v "^ " | sed 's/debconf-2.0/debconf/g')
此命令将成功下载 Vim 和所有需要的包并将它们保存在/var/cache/apt/archives目录中。
如果还是不行,可以使用如下代码
for i in $(apt-cache depends modemmanager| grep -E 'Depends|Recommends|Suggests' | cut -d ':' -f 2,3 | sed -e s/'<'/''/ -e s/'>'/''/); do sudo apt-get download $i 2>>errors.txt; done
:
以上是笔者安装的各种包,可能还有更多的,自己按需下载
记得设置vmstools共享文件夹,方便copy相关安装包到另外的环境中,
虚拟机-设置-选项-共享文件夹
有时候挂在不生效,记得在虚拟机上挂载一下 一般共享目录在 、/mnt/huge/目录下
$ sudo mount -t fuse.vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other
、如图,之前挂载过,不知道为啥总是会掉,重新挂载后显示
记得加chmod 777 dir权限
配置dns:
参考这篇博文:
Ubuntu Server 安装配置 bind9 - 简书
named 配置 · DNS
主服务器
在本节中,将BIND9配置为域的主服务器 example.com
。只需 example.com
用您的FQDN(完全合格的域名)替换即可。
转发区域文件
要将DNS区域添加到BIND9,将BIND9变成主服务器,请首先编辑 vim /etc/bind/named.conf.local
:
zone "wa.com" {
type master;
file "etc/bind/db.wa.com";};
使用现有的区域文件作为模板来创建 /etc/bind/db.example.com
文件:
sudo cp /etc/bind/db.local /etc/bind/db.example.com
cp db.local db.wa.com
vim db.wa.com
每次更改区域文件时,都必须增加序列号(Serial)。如果在重新启动BIND9之前进行了多次更改,只需增加一次串行。
现在,您可以将DNS记录添加到区域文件的底部。有关详细信息,请参阅公共记录类型。
注意,许多管理员喜欢使用最后编辑的日期作为区域的序列号(Serial),例如2020012100,它是yyyymmddss(其中ss是序列号)
对区域文件进行了更改之后,需要重新启动BIND9以使更改生效
反向区域文件
现在已经设置了区域并将名称解析为IP地址,现在需要添加反向区域以允许DNS将地址解析为名称。
编辑 /etc/bind/named.conf.local
并添加以下内容:
zone "10.168.192.in-addr.arpa" {
type master;
file "/etc/bind/db.192";
};
注意:
将 1.168.192
替换为所用网络的前三个八位位组。 另外,适当命名区域文件 /etc/bind/db.192
。 它应与网络的第一个八位位组匹配。
现在创建 /etc/bind/db.192
文件:
sudo cp /etc/bind/db.127 /etc/bind/db.192
接下来编辑 /etc/bind/db.192
,更改与/etc/bind/db.example.com
相同的选项:
注意128 改成自己实际的末尾ip
每次更改时,“反向”区域中的序列号也需要增加。 对于您在/etc/bind/db.example.com
中配置的每个A记录(即针对另一个地址),您需要在/etc/bind/db.192
中创建一个PTR记录。
创建反向区域文件后,重新启动BIND9
sudo systemctl restart bind9.service
辅助服务器,本文不搭了,需要搭的参考资料
测试
resolv.conf
测试BIND9的第一步是将名称服务器的IP地址添加到主机解析器。应该配置主要名称服务器以及另一个主机,以仔细检查。有关将名称服务器地址添加到网络客户端的详细信息,请参阅DNS客户端配置。最后,您的nameserver
一行/etc/resolv.conf
应指向,127.0.0.53(dns服务器ip)
并且您应该search
为您的域指定一个参数。像这样:
nameserver 127.0.0.53
search example.com
/etc/resolv.conf它是DNS客户机配置文件,用于设置DNS服务器的IP地址及DNS域名,还包含了主机的域名搜索顺序。该文件是由域名解析器(resolver,一个根据主机名解析IP地址的库)使用的配置文件。
-
nameserver #定义DNS服务器的IP地址
-
domain #定义本地域名
-
search #定义域名的搜索列表
-
sortlist #对返回的域名进行排序
/etc/resolv.conf的一个示例:
要检查您的本地解析器正在使用哪个DNS服务器,请运行:
systemd-resolve --status
本机验证:
报错
提示2:检查绑定区域文件
要检查区域文件使用命令的语法如下。它会在两种情况下显示的结果。
# named-checkzone wa.com db.wa.com
同样,要测试反向区域文件,请输入以下内容:
named-checkzone 10.168.192.in-addr.arpa /etc/bind/db.192
bind配置检查:
named-checkconf /etc/bind/named.conf
发现有报错,不要慌,打开文件看看,发现只有三个include文件,并没有报错的内容,笔者这里也是一头雾水,报错内容不符,后面查了好多资料,才明白,依次打开三个文件检查。
注释掉
在此运行无报错:
配置结束验证
配置完,记得在自己电脑刷新dns
windows刷新:
ipconfig /flushdns 刷新dns缓存
ubuntu刷新:
nmcli dev show 查看dns信息
/etc/init.d/dns-clean 刷新
/etc/init.d/networking restart # 最好重启一下网络
systemctl status network-manager
要检查您的本地解析器正在使用哪个DNS服务器,请运行:
systemd-resolve --status
验证是否成功: