linux 配置dns server

配置 Linux DNS 服务器需安装 BIND,编辑配置文件(如 /etc/named.conf),设置正向、反向解析区域,重启服务生效。

一、安装DNS服务器软件

在Linux上,最常用的DNS服务器软件是BIND(Berkeley Internet Name Domain)。

基于Debian的系统(如Ubuntu)

sudo aptget update
sudo aptget install bind9 bind9utils bind9doc

基于Red Hat的系统(如CentOS)

sudo yum install bind bindutils
或者使用dnf包管理器
sudo dnf install bind

二、配置DNS服务器

(一)主配置文件

路径:通常位于/etc/bind/named.conf(Debian系)或/etc/named.conf(Red Hat系)。

主要设置选项

directory:指定BIND的工作目录,一般默认即可。

forwarders:如果需要将无法解析的域名转发给其他DNS服务器,可在此设置转发器的IP地址。

      forwarders {
          8.8.8.8;  // Google Public DNS
          8.8.4.4;
      };

allowquery:用于设置访问控制列表(ACL),限制哪些IP地址可以查询DNS服务。

      acl "trusted" {
          192.168.1.0/24;
      };
      options {
          allowquery { trusted; };
      };

(二)区域文件

创建区域文件:区域文件包含DNS区域的详细信息,通常位于/etc/bind目录下(Debian系)或/var/named目录下(Red Hat系),文件名通常与区域名称相关,对于example.com区域,可创建db.example.com文件。

区域文件内容示例

    $TTL    86400
    @       IN      SOA     ns1.example.com. admin.example.com. (
                          2023010101  ; Serial
                          3600        ; Refresh
                          1800        ; Retry
                          604800      ; Expire
                          86400 )     ; Negative Cache TTL
    @       IN      NS      ns1.example.com.
    @       IN      A       192.0.2.1
    ns1     IN      A       192.0.2.1
    www     IN      A       192.0.2.2

三、配置DNS客户端

(一)修改/etc/resolv.conf文件

linux 配置dns server

操作步骤:使用文本编辑器打开/etc/resolv.conf文件,添加或修改nameserver行来指定DNS服务器地址。

    nameserver 8.8.8.8
    nameserver 114.114.114.114

注意事项:在某些系统中,/etc/resolv.conf可能由网络管理工具(如NetworkManager或systemdresolved)自动生成,直接修改可能会在系统重启或网络重新连接后被覆盖。

(二)使用NetworkManager配置DNS

图形界面方式:点击网络图标,选择“编辑连接”或“网络设置”,找到对应的网络连接,进入其设置界面,在相关选项中设置DNS服务器地址。

命令行方式

    nmcli connection show  # 查看网络连接名称
    sudo nmcli connection modify <connection_name> ipv4.dns "8.8.8.8 8.8.4.4"  # 编辑指定连接的DNS设置
    sudo nmcli connection up <connection_name>  # 应用更改

(三)使用systemdresolved配置DNS

操作步骤:编辑/etc/systemd/resolved.conf文件,找到DNS=行,取消注释(如果被注释掉的话)并添加DNS服务器地址,多个地址用空格分隔。

    DNS=8.8.8.8 8.8.4.4

保存并退出编辑器后,重启systemdresolved服务以使配置生效:

    sudo systemctl restart systemdresolved

(四)使用dhclient配置DNS

操作步骤:编辑/etc/dhcp/dhclient.conf文件,添加或修改supersede行来指定DNS服务器地址,多个地址用逗号分隔。

linux 配置dns server

    supersede domainnameservers 8.8.8.8, 8.8.4.4;

保存并退出编辑器后,先释放当前的DHCP租约,然后重新获取:

    sudo dhclient r
    sudo dhclient

(五)使用resolvconf配置DNS

操作步骤:编辑/etc/resolvconf/resolv.conf.d/head文件,在文件中添加nameserver行指定DNS服务器地址。

    nameserver 8.8.8.8
    nameserver 8.8.4.4

保存并退出编辑器后,更新resolv.conf文件以应用更改:

    sudo resolvconf u

四、验证配置

(一)检查DNS服务器配置是否正确

在DNS服务器上,使用namedcheckconfnamedcheckzone工具检查配置文件和区域文件的语法是否正确。

    namedcheckconf /etc/bind/named.conf  # 检查主配置文件语法
    namedcheckzone example.com /etc/bind/db.example.com  # 检查区域文件语法

如果语法正确,重启BIND服务以应用更改,对于基于Systemd的系统:

    sudo systemctl start bind9
    sudo systemctl enable bind9
    # 或者对于较旧的系统可能使用service命令
    sudo service named start
    sudo chkconfig named on

(二)测试DNS解析是否正常工作

使用dig命令测试dig是一个命令行工具,用于查询DNS记录,测试example.com域名的解析:

    dig example.com

使用nslookup命令测试:测试www.example.com域名的解析:

linux 配置dns server

    nslookup www.example.com 192.168.1.1  # 192.168.1.1为DNS服务器的IP地址

五、相关问题与解答

问题1:如何更改DNS服务器的监听地址?

解答:在BIND的主配置文件named.conf中,通过options块中的listenonlistenonv6选项来指定监听的IP地址,要使DNS服务器只监听在192.168.1.100地址上,可添加以下配置:

    options {
        listenon { 192.168.1.100; };
        // 其他配置选项...
    };

问题2:如何提高DNS服务器的安全性?

解答:可以从以下几个方面提高DNS服务器的安全性:

限制访问:通过设置访问控制列表(ACL),仅允许特定的IP地址范围或网络查询DNS服务,在named.conf文件中使用allowquery选项进行设置,只允许本地网络查询:

      acl "localnet" {
          192.168.1.0/24;
      };
      options {
          allowquery { localnet; };
      };

使用DNSSEC:DNSSEC(域名系统安全扩展)可以增加DNS查询的安全性,防止DNS缓存中毒等攻击,需要在区域文件中配置相关的DNSSEC记录,并在主配置文件中启用DNSSEC功能,具体配置方法可参考BIND的官方文档。

最小化安装和服务:仅安装和运行必要的DNS服务软件和功能,减少潜在的安全风险,避免在DNS服务器上运行不必要的服务和应用程序。

来源互联网整合,作者:小编,如若转载,请注明出处:https://www.aiboce.com/ask/194075.html

Like (0)
小编小编
Previous 2025年4月26日 02:34
Next 2025年4月26日 02:52

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注