当前位置: 首页 > article >正文

Linux——DNS服务器正向解析搭建教程

系统:CentOS7

1. 安装BIND服务程序(安装YUM服务可看上一篇)

CentOS 上使用 yum 安装BIND服务程序:

sudo yum install bind -y

2. 配置正向解析

编辑主配置文件 /etc/named.conf

  • listen-onallow-query 改为 any,使DNS服务器监听所有接口,并允许所有主机查询。

配置示例

options {
    listen-on port 53 { any; };       # 监听所有网络接口
    allow-query     { any; };         # 允许所有主机进行查询
    recursion yes;                    # 启用递归查询
};

定义正向解析区域 /etc/named.rfc1912.zones

  • 添加域名的区域配置,并指定存放数据文件的路径。allow-update 参数可根据需求设置为 none 或允许更新。

配置示例

zone "example.com" IN {
    type master;
    file "xample.com.zone";
    allow-update { none; };           # 禁止动态更新
};

3. 创建正向解析数据文件

复制模板文件并编辑

  • 你可以从系统自带的 named.localhost 模板文件复制一份新的区域数据文件:

    sudo cp -a /var/named/named.localhost /var/named/example.com.zone
    

<aside> 💡

在配置 named 服务时,务必使用 cp -a 复制关键配置文件,确保文件的权限和所有者不发生变化,避免服务无法正常运行。

问题原因:

复制文件时,如果没有使用 cp -a,文件的所有者和权限信息不会被保留,导致 named 进程(以 named 用户运行)无法访问文件。 比如从 root 用户复制出来的文件,其所有者默认为 root,这会导致 named 用户没有权限读取该文件,从而导致 DNS 解析服务失败。 解决办法:

使用 cp -a 来复制文件,以确保保留文件的所有者、权限、时间戳等信息。 cp -a 可以避免因权限和所有权变化导致的服务访问问题。

</aside>

编辑数据文件 /var/named/example.com.zone

  • 修改内容以匹配你的域名和IP地址:

示例

$TTL 86400
@   IN  SOA  example.com. root.example.com. (
        2023100801 ; Serial
        3600       ; Refresh
        1800       ; Retry
        604800     ; Expire
        86400 )    ; Minimum TTL
        IN  NS      ns.example.com.
ns      IN  A       192.168.1.10
www     IN  A       192.168.1.20

4. 防火墙和安全配置

清空 iptables 规则并关闭 firewalld

  • 清空 iptables 的规则以确保防火墙不会阻止DNS流量:

    sudo iptables -F
    
  • 停止并禁用 firewalld 服务,以确保防火墙不会干扰DNS请求:

    sudo systemctl stop firewalld.service
    sudo systemctl disable firewalld.service
    

关闭 SELinux

  • 临时关闭 SELinux(仅在本次系统运行期间有效):

    sudo setenforce 0
    
  • 或者你也可以通过编辑 /etc/selinux/config 文件永久关闭 SELinux:

    sudo nano /etc/selinux/config
    # 将 SELINUX=enforcing 改为 SELINUX=disabled
    

5. 重新启动BIND服务并配置为开机启动

重新启动BIND服务并设置为开机自启:

sudo systemctl restart named  (启动服务)

sudo systemctl enable named  (改为开机自启)

6. 设置网卡为仅主机模式

如果使用宿主机进行测试,将虚拟机的网卡设置为“仅主机模式(Host-Only)”,这样虚拟机和宿主机在同一网络环境中。

  1. 修改虚拟机的网络设置:
    • 在虚拟机软件(如 VirtualBox 或 VMware)中,找到虚拟机的网络设置。
    • 将虚拟机网卡的模式修改为 Host-Only Adapter(仅主机模式),使虚拟机和宿主机处于同一网络环境。
  2. 确保虚拟机和宿主机在同一子网中:
    • 确认虚拟机和宿主机的 IP 地址在同一子网中。例如,虚拟机的 IP 地址为 192.168.56.101,宿主机的 IP 地址为 192.168.56.1,确保它们可以通过同一子网进行通信。
  3. 设置 DNS 解析:
    • 修改宿主机的 vment1 网卡(对应虚拟机的 Host-Only 模式)的 DNS 地址,设置为虚拟机的 IP 地址。例如,将宿主机的 vment1 网卡的 DNS 设置为 192.168.56.101(虚拟机的 IP 地址)。
  4. 禁用其他网卡(可选):
    • 为了避免其他网络干扰,可以暂时禁用宿主机的其他网卡,确保仅通过 vment1 网卡(Host-Only 模式)进行通信和测试。

    • 如果不想禁用其他网卡,可以在执行 DNS 查询时指定 DNS 服务器。使用 nslookup 工具时,通过命令指定虚拟机的 IP 地址作为 DNS 服务器:例如:

      nslookup <域名> <虚拟机的IP地址>
      
      nslookup example.com 192.168.56.101
      

测试说明:

  • 设置完成后,使用宿主机进行网络测试,如 Ping 或 nslookup,确保虚拟机和宿主机的网络通信顺畅。
  • 如不禁用其他网卡,使用 nslookup 时明确指定 DNS 服务器以避免干扰。

7. 测试DNS解析

使用 nslookupdig 工具测试

在虚拟机或宿主机上,使用 nslookupdig 命令测试 DNS 解析:

nslookup www.example.com   #需禁用其他使用中的网卡,如无线网卡、以太网卡

nslookup www.example.com 192.168.1.10  #明确指定DNS服务器 

该命令将会发送域名 www.example.com 的解析请求到你的DNS服务器(IP:192.168.1.10),并返回相应的IP地址。


http://www.kler.cn/news/353280.html

相关文章:

  • Windows远程桌面到Ubuntu
  • 10.23六级翻译
  • 思科网络设备命令
  • JavaScript 中怎么判断前端各种运行环境
  • 【目标检测2024】DetCLIP
  • 深入理解与优化 Java JVM
  • Java使用原生HttpURLConnection实现发送HTTP请求
  • Scala的flatten函数
  • Spring Boot构建高效医疗病历B2B交互平台
  • 1992-2022年全国各省产业集聚水平测算数据(含原始数据+计算过程+结果)(无缺失)
  • 【ROS实操六】launch的使用
  • python yfinance 下载金融数据,股票数据
  • 设计模式02-桥接模式(Java)
  • MySQL数据的导出
  • IJKPlayer源码分析-整体结构
  • 智慧园区管理:构建高效、安全、智能的园区环境
  • 当你不会介绍自己的产品和系统时,不妨看看大厂是如何做的
  • Python 如何处理大规模数据库表的迁移与数据迁移的高效执行
  • 微信小程序使用wx.navigateTo路由跳转层级限制
  • 2024-10-16 问AI: [AI面试题] 描述遗传算法的概念
  • MATLAB基础应用精讲-【数模应用】Bland-Altman图(附python和R语言代码实现)
  • Python 3.13 中的 7 个新类型特性
  • 第五课:Python学习之if语句
  • 小型洗衣机什么牌子好又便宜?诚意盘点五款绝佳内衣洗衣机!
  • 【开源免费】基于SpringBoot+Vue.JS时装购物系统(JAVA毕业设计)
  • 复试经验分享《三、计算机学科专业基础综合》- 数据结构篇