如何绑定域名到特定的NS服务器?
使用BIND命令绑定域名NS
背景介绍
BIND(Berkeley Internet Name Domain)是互联网上最广泛使用的DNS(域名系统)软件之一,它负责将域名转换为IP地址,使用户可以通过名称访问网站而不是输入复杂的IP地址,本文将详细介绍如何使用BIND配置和管理一个基本的DNS服务器,包括安装、配置文件解析和测试等内容。
一、BIND和named简介
BIND的作用
BIND是互联网上使用最广泛的DNS软件之一,它负责将域名转换为IP地址,通过BIND,用户可以方便地通过域名访问网站,而不需要记住复杂的IP地址。
named的角色
在BIND中,named是一个守护进程,负责处理所有的DNS请求,它读取配置文件并响应客户端的查询请求。
二、安装BIND
这里以Rocky9.3操作系统为例,演示如何安装BIND。
sudo dnf install bind bind-utils
验证是否安装成功:
named -v
三、配置文件介绍
安装完成后,会生成一些重要的文件和目录,以下是需要关注的两个主要文件:
`/etc/named.conf`
这是BIND的主配置文件,定义了服务器的运行参数,如监听的IP地址、日志文件位置等。
示例配置:
options { listen-on port 53 { 127.0.0.1; }; // 监听IPv4地址127.0.0.1上的53端口 listen-on-v6 port 53 { ::1; }; // 监听IPv6地址::1上的53端口 directory "/var/named"; // 指定存放区域文件和其他相关文件的目录 dump-file "/var/named/data/cache_dump.db"; // 指定DNS缓存转储文件的位置 statistics-file "/var/named/data/named_stats.txt"; // 指定统计数据文件的存放位置 memstatistics-file "/var/named/data/named_mem_stats.txt"; // 指定内存统计数据文件的存放位置 secroots-file "/var/named/data/named.secroots"; // 指定安全根文件的存放位置 recursing-file "/var/named/data/named.recursing"; // 指定递归查询数据文件的存放位置 allow-query { localhost; }; // 允许从localhost发起查询 recursion yes; // 启用递归查询 dnssec-enable yes; // 启用DNSSEC验证 dnssec-validation yes; // 启用DNSSEC验证 managed-keys-directory "/var/named/dynamic"; // 指定动态密钥文件的存放目录 geoip-directory "/usr/share/GeoIP"; // 指定GeoIP数据库文件的存放目录 pid-file "/run/named/named.pid"; // 指定named进程PID文件的存放位置 session-keyfile "/run/named/session.key"; // 指定会话密钥文件的存放位置 include "/etc/crypto-policies/back-ends/bind.config"; // 引入加密策略配置文件 }; logging { channel default_debug { file "data/named.run"; // 日志文件位置 severity dynamic; // 动态日志级别 }; }; zone "." IN { type hint; // 类型为“hint”,意味着这是根域的提示 file "named.ca"; // 指向根域的文件 }; include "/etc/named.rfc1912.zones"; // RFC1912推荐的区域文件 include "/etc/named.root.key"; // 根密钥文件,用于DNSSEC
`/var/named`目录文件
该目录包含多个子目录和文件,其中最重要的是:
data: 存储BIND运行时生成的数据,如DNS查询日志和统计信息。
dynamic: 存放动态DNS更新的记录,用于DDNS服务。
named.ca: 根提示文件,包含根DNS服务器地址,用于互联网DNS解析。
named.empty: 空的DNS区域文件,用于特殊配置。
named.localhost: 定义localhost
的DNS记录,包含本地回环地址。
named.loopback: 用于定义回环地址的DNS区域,通常用于DNS服务器内部查询。
slaves: 存放从主DNS服务器同步的区域文件,用于备份或辅助解析。
四、开始配置named
编辑/etc/named.conf
文件:
sudo vi /etc/named.conf
查找以下行:
listen-on port 53 { 127.0.0.1; };
添加主DNS服务器的IP地址,如下所示:
listen-on port 53 { 127.0.0.1; 192.168.1.160; };
查找以下行:
allow-query { localhost; };
添加本地网络范围,该示例系统使用的IP地址在192.168.1.X的范围内:
allow-query { localhost; 192.168.1.0/24; };
指定转发和反向区域,区域文件(Zone file)就是具有系统上DNS信息(例如IP地址和主机名)的文本文件,转发区域文件使得将主机名转换为IP地址成为可能,反向区域文件则相反,它允许远程系统将IP地址转换为主机名。
在/etc/named.conf
文件的底部查找以下行:
include "/etc/named.rfc1912.zones";
在此处,你将在该行的正上方指定区域文件信息,如下所示:
zone "dns01.fedora.local" IN { type master; file "forward.fedora.local"; allow-update { none; }; }; zone "1.168.192.in-addr.arpa" IN { type master; file "reverse.fedora.local"; allow-update { none; }; };
forward.fedora.local和reverse.fedora.local文件是要创建的区域文件的名称,它们可以是任意名字。
保存并退出。
五、创建区域文件
创建你在/etc/named.conf
文件中指定的转发和反向区域文件:
$ sudo vi /var/named/forward.fedora.local
添加以下行:
$TTL 86400 @ IN SOA ns.fenglm.yy. hostmaster.fenglm.yy. ( 2001062501 ; serial 3600 ; refresh after 6 hours 1800 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL of IN NS ns.fenglm.yy. IN A 192.168.1.160 ns IN A 192.168.1.160 client IN A 192.168.1.136
保存文件并退出,编辑reverse.fedora.local文件:
$ sudo vi /var/named/reverse.fedora.local
添加以下行:
$TTL 86400 @ IN SOA ns.fenglm.yy. hostmaster.fenglm.yy. ( 2001062501 ; serial, same as above 3600 ; refresh after 6 hours 1800 ; retry after 1 hour 604800 ; expire after 1 week 86400 ) ; minimum TTL, same as above IN NS ns.fenglm.yy. IN PTR fedora.local.dns01 dns01 IN A 192.168.1.160 client IN A 192.168.1.136
所有粗体内容都特定于你的环境,保存文件并退出。
六、配置SELinux并为配置文件添加正确的所有权
sudo chgrp named -R /var/named sudo chown -v root:named /etc/named.conf sudo restorecon -rv /var/named sudo restorecon /etc/named.conf
七、配置防火墙
sudo firewall-cmd --add-service=dns --permanent sudo firewall-cmd --reload
八、检查配置是否存在语法错误并启动服务
sudo named-checkconf /etc/named.conf
如果没有输出或返回错误,那么你的配置有效,检查转发和反向区域文件:
sudo named-checkzone forward.fedora.local /var/named/forward.fedora.local sudo named-checkzone reverse.fedora.local /var/named/reverse.fedora.local
你应该看到 “OK” 的响应:
zone forward.fedora.local/IN: loaded serial 2001062501 OK zone reverse.fedora.local/IN: loaded serial 2001062501 OK
启用并启动DNS服务:
sudo systemctl enable named sudo systemctl start named
九、配置resolv.conf文件
编辑/etc/resolv.conf
文件:
$ sudo vi /etc/resolv.conf
查找你当前的nameserver行,在示例系统上,使用调制解调器/路由器充当名称服务器,因此当前看起来像这样:
nameserver 192.168.1.1 ```这需要更改为主DNS服务器的IP地址:
nameserver 192.168.1.160
``保存更改并退出,需要注意的是,如果系统重启或网络重启,NetworkManager可能会覆盖
/etc/resolv.conf,要避免这种情况,可以使用
nmcli`命令来配置NetworkManager:
nmcli con mod "System eth0" ipv4.dns "192.168.1.160" nmcli con up "System eth0" ``这样设置后,重启网络也不会丢失配置,还可以在
/etc/resolv.conf`中添加以下行来防止被覆盖: ``plaintext[prepend global] nameserver 192.168.1.160
`保存并退出编辑器,至此,BIND的基本配置已经完成,你可以通过以下命令测试DNS解析是否正常工作:
`bash dig @192.168.1.160 fenglm.yy
`如果一切正常,你应该会看到类似于以下的输出:
`plaintext;; QUESTION SECTION:; ;fenglm.yy. IN A;; ANSWER SECTION:fenglm.yy. 86400 IN A 192.168.1.160;; AUTHORITY SECTION:fenglm.yy. 86400 IN NS ns.fenglm.yy.
`这表明你的DNS服务器已经正确解析了域名
fenglm.yy到IP地址
192.168.1.160`,至此,你已经成功配置了一个基本的BIND DNS服务器,如果你有任何问题或需要进一步的帮助,请随时提问。
小伙伴们,上文介绍了“bind 域名 ns”的内容,你了解清楚吗?希望对你有所帮助,任何问题可以给我留言,让我们下期再见吧。
暂无评论,1人围观