在企业网络环境中,常常需要为不同来源的客户端提供不同的DNS解析结果。例如,内网用户访问公司官网应解析到内网IP,而外网用户则解析到公网IP。这种需求可以通过DNS视图(View)功能实现。本文将详细讲解如何在RockyLinux系统上使用BIND9配置DNS视图,即使是Linux新手也能轻松上手。
DNS视图是BIND(Berkeley Internet Name Domain)提供的一项高级功能,它允许根据客户端的IP地址范围返回不同的DNS记录。通过定义多个视图(如“internal”和“external”),你可以为内网和外网用户提供差异化的解析服务。
在开始之前,请确保你已完成以下步骤:
首先,我们需要在RockyLinux上安装BIND DNS服务器:
sudo dnf install bind bind-utils -y 在修改任何配置前,建议先备份原始文件:
sudo cp /etc/named.conf /etc/named.conf.bak 编辑主配置文件 /etc/named.conf,我们将删除原有的zone定义,并添加两个视图:internal(内网)和external(外网)。
使用你喜欢的编辑器打开配置文件:
sudo vi /etc/named.conf 清空原有内容(或注释掉),然后粘贴以下配置:
options { listen-on port 53 { any; }; listen-on-v6 port 53 { any; }; directory "/var/named"; dump-file "/var/named/data/cache_dump.db"; statistics-file "/var/named/data/named_stats.txt"; memstatistics-file "/var/named/data/named_mem_stats.txt"; allow-query { any; }; recursion yes; dnssec-validation no; // 测试环境可关闭,生产环境建议开启};// 内网视图view "internal" { match-clients { 192.168.1.0/24; localhost; }; zone "example.com" IN { type master; file "internal/example.com.zone"; }; zone "." IN { type hint; file "named.ca"; };};// 外网视图view "external" { match-clients { any; }; zone "example.com" IN { type master; file "external/example.com.zone"; }; zone "." IN { type hint; file "named.ca"; };}; 上面的配置中:
match-clients 定义了哪些客户端属于该视图192.168.1.0/24 和本地回环地址any)example.com 的zone,但指向不同的区域文件首先创建所需的目录:
sudo mkdir -p /var/named/internalsudo mkdir -p /var/named/external 创建内网区域文件 /var/named/internal/example.com.zone:
sudo vi /var/named/internal/example.com.zone 内容如下(注意替换为你自己的域名和IP):
$TTL 86400@ IN SOA ns1.example.com. admin.example.com. ( 2024060101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL@ IN NS ns1.example.com.ns1 IN A 192.168.1.10www IN A 192.168.1.20 ; 内网解析到内网IPmail IN A 192.168.1.30 创建外网区域文件 /var/named/external/example.com.zone:
sudo vi /var/named/external/example.com.zone 内容如下:
$TTL 86400@ IN SOA ns1.example.com. admin.example.com. ( 2024060101 ; Serial 3600 ; Refresh 1800 ; Retry 604800 ; Expire 86400 ) ; Minimum TTL@ IN NS ns1.example.com.ns1 IN A 203.0.113.10www IN A 203.0.113.20 ; 外网解析到公网IPmail IN A 203.0.113.30 确保BIND进程有权限读取这些文件:
sudo chown -R named:named /var/named/internalsudo chown -R named:named /var/named/externalsudo chmod 644 /var/named/internal/example.com.zonesudo chmod 644 /var/named/external/example.com.zone sudo systemctl enable named --nowsudo systemctl status named 从内网客户端(如192.168.1.50)测试:
dig @your_dns_server_ip www.example.com 应返回 192.168.1.20。
从外网客户端(如另一台非192.168.1.0/24网段的机器)测试:
dig @your_dns_server_ip www.example.com 应返回 203.0.113.20。
setenforce 0)journalctl -u named -fsudo firewall-cmd --add-service=dns --permanent && sudo firewall-cmd --reload通过本教程,你已经成功在RockyLinux上配置了基于BIND9的DNS视图服务。这项技术对于实现内外网分离解析、提升安全性和灵活性非常有用。记住定期更新序列号(Serial)并在修改区域文件后重载服务(sudo rndc reload)。
掌握RockyLinux DNS视图配置、DNS视图原理、BIND9配置技巧以及RockyLinux DNS服务器部署方法,将为你的网络管理能力带来质的飞跃!
本文由主机测评网于2025-12-27发表在主机测评网_免费VPS_免费云服务器_免费独立服务器,如有疑问,请联系我们。
本文链接:https://vpshk.cn/20251213078.html