5154

Good Luck To You!

ubuntu+局域网dns

Ubuntu 系统中,可通过配置 /etc/resolv.

Ubuntu局域网DNS配置指南

在Ubuntu系统搭建的局域网环境中,DNS(域名系统)的配置对于实现网络中设备通过域名访问彼此至关重要,它能够将易于记忆的域名转换为对应的IP地址,方便用户在局域网内进行资源访问和共享,本文将详细介绍在Ubuntu系统中配置局域网DNS的方法,包括使用BIND和dnsmasq两种常见的DNS服务器软件,以及相关的测试和注意事项。

使用BIND配置局域网DNS

(一)安装BIND软件包

在终端中以root身份登录,然后运行以下命令安装BIND9:

sudo aptget install bind9 dnsutils

这将安装BIND9 DNS服务器软件以及一些常用的DNS工具,如dignslookup,用于后续的测试和诊断。

(二)全局配置

编辑/etc/bind/named.conf.options文件,进行全局配置,以下是一些常见的配置选项: |配置项|说明|示例| |||| |directory|指定BIND的工作目录,用于存储缓存文件等。|directory "/var/cache/bind";| |listenon port 53|设置监听端口为53,并指定监听的IP地址范围,若想监听所有IP,可设置为any;;若只监听特定IP,如168.10.3;。|listenon port 53 { any;};listenon port 53 { 192.168.10.3;};| |allowquery|定义允许进行DNS查询的客户端地址范围。any;表示允许所有客户端查询。|allowquery {any;};| |forwarders|指定上游DNS服务器的IP地址,当本地DNS服务器无法解析域名时,将查询转发给这些上游DNS服务器。|forwarders { 223.5.5.5; 223.6.6.6; };| |dnssecvalidation|设置是否启用DNSSEC验证,可选值为autoyesnoauto表示自动根据域名的DNSSEC状态进行验证。|dnssecvalidation auto;| |authnxdomain|控制当请求的域名不存在时是否返回"不存在"的响应,设置为no可避免返回不必要的信息。|authnxdomain no;|

(三)配置区域文件

  1. 正向解析配置
    • 复制示例区域文件db.0为自定义的正向解析区域文件,例如db.demo.com
      cp db.0 /etc/bind/db.demo.com
    • 编辑/etc/bind/db.demo.com文件,配置域名与IP地址的映射关系,以下是一个简单的示例:
      ;
      ; BIND data file for local loopback interface
      ;
      $TTL    604800
      @       IN      SOA     demo.com. root.demo.com. (
                            2         ; Serial
                        604800         ; Refresh
                           86400         ; Retry
                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL
      ;
      @       IN      NS      localhost.
      @       IN      A       192.168.10.10
      * IN  A  192.168.10.10   ;泛解析,将所有子域名都解析到同一IP地址
    • /etc/bind/named.conf.local文件中添加正向解析区域的定义:
      zone "demo.com" {
          type master;
          file "/etc/bind/db.demo.com";
      };
  2. 反向解析配置
    • 复制示例反向解析区域文件db.127为自定义的反向解析区域文件,例如db.168.192
      cp db.127 /etc/bind/db.168.192
    • 编辑/etc/bind/db.168.192文件,配置IP地址与域名的反向解析关系,以下是一个简单的示例:
      ;
      ; BIND reverse data file for local loopback interface
      ;
      $TTL    604800
      @       IN      SOA     demo.com. root.demo.com. (
                            1         ; Serial
                          604800         ; Refresh
                           86400         ; Retry
                         2419200         ; Expire
                          604800 )       ; Negative Cache TTL
      ;
      @       IN      NS      localhost.
      1.0.0   IN      PTR     localhost.
      10 IN PTR demo.com   ;将IP地址192.168.10.10反向解析为demo.com
    • /etc/bind/named.conf.local文件中添加反向解析区域的定义:
      zone "168.192.inaddr.arpa"  {
          type master;
          file "/etc/bind/db.168.192";
      };

(四)重启BIND服务

完成配置文件的编辑后,需要重启BIND服务使配置生效:

sudo service bind9 restart

(五)测试BIND DNS服务器

  1. 检查区域文件语法
    • 使用namedcheckzone命令检查正向和反向解析区域文件的语法是否正确:
      namedcheckzone demo.com /etc/bind/db.demo.com
      namedcheckzone 168.192.inaddr.arpa /etc/bind/db.168.192
    • 如果没有任何错误提示,表示区域文件语法正确。
  2. 使用dig命令测试正向解析
    • 编辑/etc/resolv.conf文件,将DNS服务器设置为本地BIND服务器的IP地址(假设为192.168.10.10):
      nameserver 192.168.10.10
      options edns0 trustad
      search demo.com
    • 运行dig命令查询域名:
      dig www.demo.com
    • 如果配置正确,将返回正确的IP地址解析结果。
  3. 使用nslookup命令测试反向解析
    • 在终端中运行以下命令进行反向解析测试:
      nslookup 192.168.10.10
    • 如果配置正确,将返回对应的域名解析结果。

使用dnsmasq配置局域网DNS

(一)安装dnsmasq

如果系统中没有安装dnsmasq,可以使用以下命令进行安装:

ubuntu+局域网dns

sudo aptget install dnsmasq

(二)生成核心配置文件

创建自定义的配置文件目录,例如/home/xg/soft/dnsmasq,然后在该目录下创建相关配置文件:

  1. 创建banner_add_hosts文件
    • 使用touch命令创建文件:
      touch /home/xg/soft/dnsmasq/banner_add_hosts
    • 编辑该文件,添加域名与IP地址的映射关系,
      168.1.5    xg.com
      192.168.2.21   km.xg.com
      192.168.2.22   kn.xg.com
  2. 创建resolv.conf文件
    • 使用touch命令创建文件:
      touch /home/xg/soft/dnsmasq/resolv.conf
    • 编辑该文件,指定上游DNS服务器,
      nameserver 114.114.114.114
      nameserver 8.8.8.8
  3. 复制dnsmasq默认配置文件
    • 从docker容器中复制默认的dnsmasq.conf文件到自定义目录:
      docker cp dnsmasq:/etc/dnsmasq.conf /home/xg/soft/dnsmasq/dnsmasq.conf

(三)更改配置文件

编辑/home/xg/soft/dnsmasq/dnsmasq.conf文件,修改以下两个配置项: |配置项|说明|示例| |||| |addnhosts|指定包含额外主机记录的文件路径。|addnhosts=/etc/banner_add_hosts| |resolvfile|指定用于解析外部域名的上游DNS服务器配置文件路径。|resolvfile=/etc/resolv.conf|

(四)启动dnsmasq服务

使用以下命令启动dnsmasq服务:

sudo docker run d \
p 127.0.0.1:53:53/tcp  \
p 127.0.0.1:53:53/udp  \
v /home/xg/soft/dnsmasq/banner_add_hosts:/etc/banner_add_hosts \
v /home/xg/soft/dnsmasq/resolv.conf:/etc/resolv.conf \
v /home/xg/soft/dnsmasq/dnsmasq.conf:/etc/dnsmasq.conf \
capadd=NET_ADMIN \
name dnsmasq \
andyshinn/dnsmasq

这将在后台启动dnsmasq容器,并将本地的配置文件挂载到容器中相应的位置。

(五)测试dnsmasq DNS服务器

  1. 在本机测试
    • 编辑/etc/resolv.conf文件,添加本地dnsmasq服务器的IP地址(此处为127.0.0.1):
      nameserver 127.0.0.1
    • 使用dignslookup命令查询在banner_add_hosts文件中配置的域名,
      dig xg.com
      nslookup km.xg.com
    • 如果配置正确,将返回相应的IP地址解析结果。
  2. 在虚拟机测试
    • 确保虚拟机的网络设置与宿主机在同一局域网内,并且将虚拟机的DNS服务器设置为本地dnsmasq服务器的IP地址(如果虚拟机与宿主机不在同一网段,需要根据实际情况进行网络配置)。
    • 在虚拟机上使用dignslookup命令查询配置的域名,检查是否能正确解析。

(六)配置新域名

如果在后期需要配置新的域名,只需在banner_add_hosts文件中新增一行,指定IP地址和域名,

ubuntu+局域网dns

168.2.11 kmaster01.xg.com

然后保存文件即可,无需重启dnsmasq服务。

注意事项

  1. 防火墙设置
    • 确保防火墙允许DNS服务器监听的端口(UDP和TCP的53端口)的入站流量,可以使用以下命令检查和配置防火墙(以UFW为例):
      sudo ufw allow 53
  2. DHCP配置

    如果局域网中使用DHCP服务器分配IP地址,建议在DHCP服务器的配置中将首选DNS服务器设置为搭建的DNS服务器的IP地址,这样客户端在获取IP地址时会自动获取正确的DNS服务器地址,无需手动配置每个客户端的DNS,具体配置方法因DHCP服务器软件而异,一般可以在DHCP服务器的配置文件中找到相关的DNS设置选项进行修改。

  3. 缓存清理
    • 在对DNS服务器的配置进行修改后,客户端可能会因为缓存原因仍然使用旧的解析结果,可以通过重启客户端的网络服务或清除DNS缓存来确保客户端获取最新的DNS解析结果,在Linux系统中,可以使用以下命令清除DNS缓存:
      sudo systemdresolve flushcaches

      在Windows系统中,可以通过命令提示符运行以下命令清除DNS缓存:

      ipconfig /flushdns

相关问题与解答

(一)问题1:如何在Ubuntu系统中查看当前正在使用的DNS服务器地址?

解答:在Ubuntu系统中,可以通过查看/etc/resolv.conf文件来获取当前正在使用的DNS服务器地址,使用以下命令打开该文件:

cat /etc/resolv.conf

文件中以nameserver开头的行后面的IP地址即为当前正在使用的DNS服务器地址,对于使用systemdresolved服务的系统,还可以使用以下命令查看DNS服务器信息:

ubuntu+局域网dns

resolvectl dns

这将显示当前系统使用的DNS服务器列表以及其他相关的DNS配置信息。

(二)问题2:在配置BIND DNS服务器时,为什么需要设置allowquery选项?如果不设置会有什么影响?

解答allowquery选项用于定义允许进行DNS查询的客户端地址范围,在局域网环境中,为了安全起见,通常只允许局域网内的客户端访问DNS服务器,防止外部非法访问和滥用DNS服务,如果不设置allowquery选项,默认情况下BIND DNS服务器可能会允许任何客户端进行查询,这存在安全风险,例如可能会被外部攻击者利用进行DNS放大攻击等恶意行为,影响网络安全和DNS服务器的正常运行。

发表评论:

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

«    2025年8月    »
123
45678910
11121314151617
18192021222324
25262728293031
控制面板
您好,欢迎到访网站!
  查看权限
网站分类
搜索
最新留言
    文章归档
    网站收藏
    友情链接

    Powered By Z-BlogPHP 1.7.3

    Copyright Your WebSite.Some Rights Reserved.