linux搭建dns分离解析

安装BIND,配置区域文件,设置分离规则,重启服务生效

Linux搭建DNS分离解析详细指南

什么是DNS分离解析?

DNS分离解析(Split DNS)是指根据客户端请求的来源(如IP地址、地理位置等),返回不同的解析结果,典型应用场景包括:

  • 内网用户访问域名时解析为内网服务地址(如192.168.1.100)
  • 外网用户访问同一域名时解析为公网服务地址(如203.0.113.100)
  • 实现内外网服务隔离,提升安全性

环境准备

组件 版本要求 说明
操作系统 CentOS 7+/Ubuntu 20+ 支持BIND 9.11+
BIND软件包 bindutils bind 主程序+工具包
网络环境 双网卡/NAT 需区分内外网网络
域名 example.com 示例域名(需提前注册)

安装BIND服务

1 CentOS系统安装

yum install y bind bindutils
systemctl enable named
systemctl start named

2 Ubuntu系统安装

apt update
apt install y bind9 bind9utils bind9doc
systemctl enable bind9
systemctl start bind9

核心配置文件结构

BIND主要配置文件为/etc/named.conf,包含:

  1. 全局配置(global options)
  2. 控制访问策略(access control)
  3. 视图配置(view)
  4. 区域声明(zone)

配置分离解析

1 定义地址匹配列表(ACL)

acl "internalclients" {
    192.168.1.0/24;       // 内网IP段
    10.0.0.0/8;           // 其他内网段
};
acl "externalclients" {
    !192.168.1.0/24;      // 排除内网IP
    !10.0.0.0/8;          // 排除其他内网段
};

2 配置双向视图

views {
    // 内网视图
    view "internal" {
        matchclients { "internalclients" };
        zone "example.com" {
            type master;
            file "db.example.com.internal";
        };
    };
    // 外网视图
    view "external" {
        matchclients { "externalclients" };
        zone "example.com" {
            type master;
            file "db.example.com.external";
        };
    };
};

3 区域文件配置对比

文件名 内容示例 适用场景
db.example.com.internal NS记录指向内网DNS服务器 内网解析
db.example.com.external NS记录指向公网DNS服务器 外网解析

内网区域文件示例

linux搭建dns分离解析

$TTL 86400
@   IN SOA  ns1.example.com. admin.example.com. (
            2023100101 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400 )    ; Minimum TTL
    IN NS    ns1.example.com.
    IN NS    ns2.example.com.
www IN A     192.168.1.100

外网区域文件示例

$TTL 86400
@   IN SOA  dns1.example.com. hostmaster.example.com. (
            2023100101 ; Serial
            3600       ; Refresh
            1800       ; Retry
            604800     ; Expire
            86400 )    ; Minimum TTL
    IN NS    dns1.example.com.
    IN NS    dns2.example.com.
www IN A     203.0.113.100

安全加固配置

named.conf中添加:

linux搭建dns分离解析

// 限制递归查询权限
options {
    allowquerycache { any; };
    allowquery {
        internalclients;      // 允许内网递归查询
        externalclients;      // 允许外网递归查询
        localhost;             // 本地回环地址
    };
};

测试验证

1 内网测试

dig @192.168.1.1 www.example.com +short
# 应返回:192.168.1.100

2 外网测试

dig @203.0.113.1 www.example.com +short
# 应返回:203.0.113.100

常见问题排查

现象 可能原因 解决方案
内外网均解析为同IP 视图匹配规则错误/区域文件路径错误 检查view配置和file路径
外网无法解析 防火墙阻挡DNS端口(53) 开放防火墙UDP/TCP 53端口
递归查询失败 allowquery配置过严 调整access控制列表

相关问题与解答

Q1:如何添加更多的内部客户端IP段?

A:在named.conf的ACL配置中新增IP段,

acl "internalclients" {
    192.168.1.0/24;
    10.0.0.0/8;
    172.16.0.0/16;       // 新增网段
};

修改后需重新加载配置:rndc reload

linux搭建dns分离解析

Q2:如何实现基于地理位置的分离解析?

A:需结合GeoIP库实现,步骤如下:

  1. 安装GeoIP数据库:yum install geoipdat
  2. 在视图配置中使用matchdestination匹配地理信息:
    view "asia" {
     matchdestination { "Asia/"; };
     zone "example.com" { ... }
    };
  3. 根据需求配置不同地区的解析记录

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

Like (0)
小编小编
Previous 2025年4月30日 18:07
Next 2025年4月30日 18:16

相关推荐

发表回复

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