搭建Linux DNS服务器,实现高效网络解析 (linux dnsfuwuqi)

随着互联网的发展,网络解析已经成为了网络通信中不可或缺的一部分。而DNS(Domn Name System)服务器正是解析网址和IP地址之间映射关系的关键。自建DNS服务器可以提高网络解析的效率,减少DNS解析造成的延迟,加快网络速度。

在Linux系统上,搭建DNS服务器可以使用多种软件,其中较为常见的是BIND(Berkeley Internet Name Domn),也就是伯克莱互联网命名域名服务。本文将以BIND为例,介绍如何。

一、安装BIND

首先需要安装BIND软件,可以通过以下命令安装:

sudo apt-get install bind9

安装完成后,可以使用以下命令确认BIND是否已启动:

systemctl status bind9

如下图所示,终端会显示BIND的状态以及监听端口。

二、配置BIND

接着需要建立BIND的配置文件,该配置文件通常位于/etc/bind/named.conf中。可以先备份该文件,然后使用以下命令打开编辑:

sudo cp /etc/bind/named.conf /etc/bind/named.conf.bak

sudo nano /etc/bind/named.conf

在该文件中可以配置域名解析的相关信息。在此示例中,我们将配置本地DNS服务器解析两个域名:example.com和sub.example.com。

在named.conf的options段中添加以下内容:

acl trusted {

127.0.0.0/8;

192.168.0.0/16;

};

options {

directory “/var/cache/bind”;

// The following can be uncommented to enable IPv6 support.

// listen-on-v6 { any; };

recursion yes;

allow-query { trusted; };

};

上述代码中,trusted字段用于定义信任列表,也就是允许访问DNS服务器的IP地址范围。在options段中,directory定义了BIND服务器缓存文件存储的路径,recursion表示开启递归查询模式,allow-query则定义了允许访问本地DNS服务器的IP地址范围。

接着需要添加zone段,也就是需要解析的域名信息。在named.conf的末尾添加以下内容:

zone “example.com” {

type master;

file “/etc/bind/db.example.com”;

allow-transfer { trusted; };

};

zone “sub.example.com” {

type master;

file “/etc/bind/db.sub.example.com”;

allow-transfer { trusted; };

};

上述代码中,定义了两个zone段,用于解析example.com和sub.example.com两个域名。type master表示本地DNS服务器为该域名的主机,file则指定了该域名的解析文件位置,allow-transfer表示允许哪些IP地址从本地DNS服务器上载该域名的配置文件。

接着,需要创建两个文件,分别存储example.com和sub.example.com的详细解析信息。可以使用以下命令创建文件:

sudo nano /etc/bind/db.example.com

将以下内容复制粘贴至该文件中:

$TTL 604800

@ IN SOA ns1.example.com. admin.example.com. (

7 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS ns1.example.com.

ns1 IN A 192.168.0.1

www IN A 192.168.0.2

ml IN A 192.168.0.3

上述代码中,$TTL定义了DNS服务器中记录的信息生存周期,@定义了域名解析信息的起始位置,SOA定义了开始的主机和管理者信息,NS则指定了本地DNS服务器的名称解析器,A则是将主机名映射到IP地址的资源记录。

同样的,可以使用以下命令创建sub.example.com的解析文件:

sudo nano /etc/bind/db.sub.example.com

文件内容如下:

$TTL 604800

@ IN SOA ns1.example.com. admin.example.com. (

1 ; Serial

604800 ; Refresh

86400 ; Retry

2419200 ; Expire

604800 ) ; Negative Cache TTL

;

@ IN NS ns1.example.com.

ns1 IN A 192.168.0.1

www IN A 192.168.0.4

ml IN A 192.168.0.5

三、测试DNS服务器

以上定制的配置文件和解析文件后,需要重新启动 BIND 服务,以使其读取这些新的配置文件。可以运行以下命令启动BIND:

sudo systemctl restart bind9

接着可以使用nslookup命令测试本地DNS服务器是否已正确解析example.com和sub.example.com域名。在命令行中输入以下命令:

nslookup example.com

命令输出如下:

Server: 192.168.0.1

Address: 192.168.0.1#53

Name: example.com

Address: 192.168.0.2

上述结果说明,应用使用了本地DNS服务器192.168.0.1查询example.com域名,并正确地将其解析为IP地址192.168.0.2。

同样的,输入以下命令测试sub.example.com的解析情况:

nslookup sub.example.com

命令输出如下:

Server: 192.168.0.1

Address: 192.168.0.1#53

Name: sub.example.com

Address: 192.168.0.4

以上结果说明,本地DNS服务器成功解析了sub.example.com域名,并将其解析为IP地址192.168.0.4。

四、

本文介绍了如何安装并配置BIND作为Linux DNS服务器,以实现域名和IP地址之间的高效网络解析。搭建DNS服务器需要一定的技术巧妙,但是随着互联网的蓬勃发展,越来越多的网站和企业将自己的DNS服务器纳入到自己的使用当中,以提高网络通信的效率,并为网站的安全性提供保护。在实际使用中,可以根据需要进行灵活调整身体配置,以更好地满足自己的需求。

相关问题拓展阅读:

linux安装dns没有已启用的源

2023年5月16日在安装Oracle 12c时,使用yum安装依赖包时提示: 没有已启用喊升的源。 这是因为没有配置本地yum源 # yum install -y binuti…

CSDN编程社区

在Linux系统上安装配置DNS服务器的教程 – 番茄系统家园

9月4日DNS服务器起动后,建议关注一下日志文闭余件/var/log/messages,这里头包含了后台运行的一些有用信息。如果没有发现郑态老错误,我们可以开始测试

linux怎么配置dns缓存服务器和主从服务器

BIND安装

软件下载地址:

,目前最新版本是BIND 9.8.1-P1。

安装依赖:

yum -y install gcc openssl-devel

开始安ind.

wget

tar xzf bind-9.8.1-P1.tar.gz

cd bind-9.8.1-P1

./configure –prefix=/usr/local/bind

make && make install

执行完成后,bind已经安装到了/usr/local/bind目录。

配置主dns服务器

配置bind主要是两种文件,一是主配置文件named.conf,二是区域文件zone(包括正解析,反解析)。

在下面的配置中,我们的主dns服务器是ns1.qbtop.com 23.19.81.191,从dns服务器是ns2.qbtop.com 23.19.81.194(这两个dns都已经在godaddy注册好了)。

下面操作仅在主dns服务器23.19.81.191执行。

主配置文件named.conf

首先执行rndc-confgen -a生成/etc/rndc.key密钥文件。

/usr/local/bind/in/rndc-confgen -a

vi /usr/local/bind/etc/named.conf

写入如下内容:

include “/usr/local/bind/etc/rndc.key”;

controls { inet 127.0.0.1 port 953 allow { 127.0.0.1; } keys { “rndckey”; }; };

logging {

channel default_syslog { syslog local2; severity notice; };

channel audit_log { file “/var/log/bind.log”蠢脊; severity notice; print-time yes; };

category default { default_syslog; };

category general { default_syslog; };

category security { audit_log; default_syslog; };

category config { default_syslog; };

category resolver { audit_log; };

category xfer-in { audit_log; };

category xfer-out { audit_log; };

category notify { audit_log; };

category client { audit_log; };

category network { audit_log; };

category update { audit_log; };

category queries { audit_log; };

category lame-servers { audit_log; };

};

options {

directory “/usr/local/bind/etc”;

pid-file “/usr/local/bind/var/run/bind.pid”凯档棚;

transfer-format many-answers;

interface-interval 0;

allow-query { any; };

};

zone “qbtop.com” {

type master;

file “qbtop.com.zone”;

allow-transfer { 23.19.81.194; };

};

zone “81.19.23.in-addr.arpa” {

type master;

file “81.19.23.in-addr.arpa”;

allow-transfer { 23.19.81.194; };

};

named.conf文件说明:

上面的named.conf文件包括三部分:key,controls,logging,options,zone。

logging:设置日志服务器和日志信盯则息的发送地。

options:控制服务器的全局配置选项和为其它语句设置默认值

zone:定义一个域,比如正解析域和反解析域。

logging是定义日志的,不需要深究,主要是options和zone。

在options中:

directory “/usr/local/bind/etc”:定义bind的工作目录为/usr/local/bind/etc,配置文件中所有使用的相对路径,指的都是在这里配置的目录下。

pid-file “/usr/local/bind/var/run/bind.pid”:把bind程序运行的pid写入文件bind.pid。

transfer-format many-answers:使用更加有效的域传输格式many-answers。

allow-query { any; }:允许所有用户查询dns。

在zone中:

这里定义了两个zone,一个是正解析zone qbtop.com,一个是反解析zone 81.19.23.in-addr.arpa。

他们的参数基本相同:

type master:定义dns服务器为主dns。

file “qbtop.com.zone”:定义此zone的文件名。

allow-transfer { 23.19.81.194; }:允许向从dns 23.19.81.194传输dns数据。

唯一不同的是zone名称的定义,正解析zone名称的定义是受权的域名,可以是顶级域名,也可以是二级域名,或多级。反解析zone名称定义规定前部分ip倒着写。如ip 192.168.1.2,名称定义为1.168.192.in-addr.arpa。

正解析qbtop.com.zone

vi /usr/local/bind/etc/qbtop.com.zone

写入如下内容:

$TTL 3600

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

; Serial

3600; Refresh

900; Retry

; Expire

3600 ); Minimum

@ IN NS ns1.qbtop.com.

@ IN NS ns2.qbtop.com.

ns1 IN A 23.19.81.191

ns2 IN A 23.19.81.194

aaa IN A 23.19.81.191

bbb IN A 23.19.81.191

文件说明:

$TTL 3600:指示为每个没有特殊TTL设置的RR给出了一个默认的TTL。

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

; Serial

3600; Refresh

900; Retry

; Expire

3600 ); Minimum

定义SOA记录,包括Zone的名字,一个技术联系人和各种不同的超时值。

@ IN NS ns1.qbtop.com.

@ IN NS ns2.qbtop.com.

设置两个ns记录ns1.qbtop.com和ns2.qbtop.com。

ns1 IN A 23.19.81.191

ns2 IN A 23.19.81.194

aaa IN A 23.19.81.191

bbb IN A 23.19.81.191

设置主机为ns1,ns2,aaa和bbb的A记录。

反解析文件81.19.23.in-addr.arpa

反解析zone可以不设置。

vi /usr/local/bind/etc/81.19.23.in-addr.arpa

写入如下内容:

$TTL 3600

@ IN SOA ns1.qbtop.com. hostmaster.qbtop.com. (

; Serial

3600; Refresh

900; Retry

; Expire

3600 ); Minimum

@IN NS ns1.qbtop.com.

@IN NS ns2.qbtop.com.

191INPTRns1.qbtop.com.

194INPTRns2.qbtop.com.

说明:

上部分是定义SOA记录,下部分是设置IP反解析。

如设置IP 23.19.81.191反解析成ns1.qbtop.com,23.19.81.194反解析成ns2.qbtop.com。

配置从DNS服务器

下面我们来配置从DNS服务器。配置从DNS服务器只需要配置主配置文件named.conf,zone文件不需配置,因为这是从主DNS服务器获取的。

首先建立目录slaves用来存放从主dns获取的zone文件。

mkdir /usr/local/bind/etc/slaves

写入如下内容:

logging {

channel default_syslog { syslog local2; severity notice; };

channel audit_log { file “/var/log/bind.log”; severity notice; print-time yes; };

category default { default_syslog; };

category general { default_syslog; };

category security { audit_log; default_syslog; };

category config { default_syslog; };

category resolver { audit_log; };

category xfer-in { audit_log; };

category xfer-out { audit_log; };

category notify { audit_log; };

category client { audit_log; };

category network { audit_log; };

category update { audit_log; };

category queries { audit_log; };

category lame-servers { audit_log; };

};

options {

directory “/usr/local/bind/etc”;

pid-file “/usr/local/bind/var/run/bind.pid”;

transfer-format many-answers;

interface-interval 0;

allow-query { any; };

};

zone “qbtop.com” {

type slave;

file “slaves/qbtop.com.zone”;

masters { 23.19.81.191; };

};

zone “81.19.23.in-addr.arpa” {

type slave;

file “slaves/81.19.23.in-addr.arpa”;

masters { 23.19.81.191; };

};

文件说明:

从dns跟主dns主要的区别是zone的定义,type slave定义此dns服务器为从dns,masters { 23.19.81.191; }定义主dns的IP。

启动BIND

1、在启动BIND之前,我们需要执行/usr/local/bind/in/named-checkconf检查named.conf配置文

件,和执行/usr/local/bind/in/named-checkzone zone名称

zone文件名,如/usr/local/bind/in/named-checkzone qbtop.com

/usr/local/bind/etc/qbtop.com.zone。

然后调试模式启动bind,/usr/local/bind/in/named -g,g参数的意思是前台执行bind,这会输出启动的信息,发现没有严重的错误后,再把g参数删除重新以/usr/local/bind/in/named方式后台启动bind。

2、设置开机启动,在/etc/rc.d/rc.local中加入/usr/local/bind/in/named。

手动添加记录

1、直接添加删除或修改zone文件里的记录

2、执行rndc reload zone名称重载,如rndc reload qbtop.com

linux dnsfuwuqi的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于linux dnsfuwuqi,搭建Linux DNS服务器,实现高效网络解析,linux安装dns没有已启用的源,linux怎么配置dns缓存服务器和主从服务器的信息别忘了在本站进行查找喔。


数据运维技术 » 搭建Linux DNS服务器,实现高效网络解析 (linux dnsfuwuqi)