双重DNS的配置

简介:
相信现在有不少地方都是起双重DNS的,即对外解析成公网地址,对内解析成内网地址。一般的做法是用两台DNS服务器分开来做的,但如果机器紧张,只有一台的话,或出于安全考虑的话,其实也是可以做的。在这里又分两种情况:使用Bind8和Bind9的做法是不一样的。
Bind8的话,原理很简单
在DNS服务器上运行两个BIND,分别为来自内部网络和外部网络的域名请求提供解析,每个BIND具有不同的配置文件和域名数据库文件,并分别在不同的端口监听。DNS服务器在接到客户端请求时,根据客户的IP地址将请求重定向到不同的BIND服务端口,这样就可以根据客户端的IP地址将不同的解析结果返回给客户端,而整个过程对于客户端来说都是透明的。实现的关键在于运行两个BIND及运用iptables命令进行IP地址及端口改写操作。
具体配置的话:
在/etc/下生成两个named配置文件named.in与named.out
named.in

## named.conf - configuration for bind(named.in)
#
# Generated automatically by redhat-config-bind, alchemist et al.
# Any changes not supported by redhat-config-bind should be put 
# in /etc/named.custom
#
include "/etc/named.custom";

include "/etc/rndc.key";

options { 
 directory "/var/named_in/"; 
 datasize 2098;
 ......
};


#Log Files
logging {
 category queries {
  default_syslog;
 };
};

#DataBase Files
zone "0.0.127.in-addr.arpa" { 
 type master; 
 file "0.0.127.in-addr.arpa.zone"; 
};
zone "10.in-addr.arpa" { 
 type master; 
 file "10.in-addr.arpa.zone"; 
};


zone "localhost" { 
 type master; 
 file "localhost.zone"; 
};
zone "xxu.edu.cn" { 
 type master; 
 file "xxu.edu.cn.zone"; 
};

named.out

## named.conf - configuration for bind(named.out)
#
# Generated automatically by redhat-config-bind, alchemist et al.
# Any changes not supported by redhat-config-bind should be put 
# in /etc/named.custom
#
include "/etc/named.custom";

include "/etc/rndc.key";

options { 
 directory "/var/named_out/";
 datasize 2098;
 ... ...
};
# 注意这里监听的端口不一样了
listen-on port 8053 {
 # 本机IP地址
 10.xx.xx.xx;
}; 


#Log Files
logging {
 category queries {
 default_syslog;
};


#DataBase Files
zone "0.0.127.in-addr.arpa" { 
 type master; 
 file "0.0.127.in-addr.arpa.zone"; 
};
zone "xx.xx.210.in-addr.arpa" { 
 type master; 
 file "xx.xx.210.in-addr.arpa.zone"; 
};


zone "localhost" { 
 type master; 
 file "localhost.zone"; 
};
zone "xxu.edu.cn" { 
 type master; 
 file "xxu.edu.cn.zone"; 
};

为什么选对外发布的做重定向呢,当时的考虑是对内解析的流量大,可以减少一个环节。

然后做iptables的重定向,在iptable配置文件中添加

-A PREROUTING -s ! 10.0.0.0/255.0.0.0 -i eth0 -p udp -m udp --dport 53 -j REDIRECT --to-ports 8053

-A POSTROUTING -o eth0 -p udp -m udp --sport 8053 -j SNAT --to-source 10.xx.xx.xx:53

COMMIT

最后在做一个启动脚本:

#!/bin/sh

echo "Enabling IP Forwarding ..."
echo 1 > /proc/sys/net/ipv4/ip_forward

echo "Enabling DNS(outside) Service ..."
/usr/sbin/named -u named -c /etc/named.out

echo "Enabling DNS(inside) Service ..."
/usr/sbin/named -u named -c /etc/named.in

重启机器就OK了!

如果是用的Bind9的话,那就简单多了!
只需要一个named.conf文件就搞定
具体配置:

include "/etc/rndc.key";

options { 
 directory "/var/named/"; 
 ... ...
};

#Log Files
logging {
 category queries {
  default_syslog;
 };
};

#DataBase Files
#注意view和match-clients的用法,就是它们在起作用
view "internal" {
 match-clients { 10.0.0.0/8; };
 recursion yes;
 zone "." { 
  type hint; 
  file "named.ca";
 };
 zone "0.0.127.in-addr.arpa" { 
  type master; 
  file "0.0.127.in-addr.arpa.zone"; 
 };
 zone "localhost" { 
  type master; 
  file "localhost.zone"; 
 };
 zone "xxu.edu.cn" { 
  type master; 
  file "xxu.edu.cn.in.zone"; 
 };
 zone "10.in-addr.arpa" { 
  type master; 
  file "10.in-addr.arpa.zone"; 
 };
};

view "external" {
 match-clients { any; };
 recursion yes;
 zone "." { 
  type hint; 
  file "named.ca";
 };
 zone "0.0.127.in-addr.arpa" { 
  type master; 
  file "0.0.127.in-addr.arpa.zone"; 
 };
 zone "localhost" { 
  type master; 
  file "localhost.zone"; 
 };
 zone "xxu.edu.cn" { 
  type master; 
  file "xxu.edu.cn.out.zone"; 
 };
 zone "xx.xx.210.in-addr.arpa" {
  type master;
  file "xx.xx.210.in-addr.arpa.zone";
 };
};

这样就配置好了!

至于具体的数据文件,我想大家都应该会配置了,我这里就不多说了!



本文转自 firehare 51CTO博客,原文链接:http://blog.51cto.com/firehare/588159,如需转载请自行联系原作者

相关文章
|
存储 缓存 网络协议
阿里云特惠云服务器99元与199元配置与性能和适用场景解析:高性价比之选
2025年,阿里云长效特惠活动继续推出两款极具吸引力的特惠云服务器套餐:99元1年的经济型e实例2核2G云服务器和199元1年的通用算力型u1实例2核4G云服务器。这两款云服务器不仅价格亲民,而且性能稳定可靠,为入门级用户和普通企业级用户提供了理想的选择。本文将对这两款云服务器进行深度剖析,包括配置介绍、实例规格、使用场景、性能表现以及购买策略等方面,帮助用户更好地了解这两款云服务器,以供参考和选择。
|
域名解析 应用服务中间件 Shell
使用nps配置内网穿透加域名解析
使用nps配置内网穿透加域名解析
1385 77
|
域名解析 网络协议 Ubuntu
DHCP与DNS的配置
通过这些步骤,您可以在Linux环境下成功配置和验证DHCP和DNS服务。希望这些内容对您的学习和工作有所帮助。
1590 27
|
监控 Shell Linux
Android调试终极指南:ADB安装+多设备连接+ANR日志抓取全流程解析,覆盖环境变量配置/多设备调试/ANR日志分析全流程,附Win/Mac/Linux三平台解决方案
ADB(Android Debug Bridge)是安卓开发中的重要工具,用于连接电脑与安卓设备,实现文件传输、应用管理、日志抓取等功能。本文介绍了 ADB 的基本概念、安装配置及常用命令。包括:1) 基本命令如 `adb version` 和 `adb devices`;2) 权限操作如 `adb root` 和 `adb shell`;3) APK 操作如安装、卸载应用;4) 文件传输如 `adb push` 和 `adb pull`;5) 日志记录如 `adb logcat`;6) 系统信息获取如屏幕截图和录屏。通过这些功能,用户可高效调试和管理安卓设备。
11076 2
|
Java 数据库 开发者
详细介绍SpringBoot启动流程及配置类解析原理
通过对 Spring Boot 启动流程及配置类解析原理的深入分析,我们可以看到 Spring Boot 在启动时的灵活性和可扩展性。理解这些机制不仅有助于开发者更好地使用 Spring Boot 进行应用开发,还能够在面对问题时,迅速定位和解决问题。希望本文能为您在 Spring Boot 开发过程中提供有效的指导和帮助。
2638 12
|
存储 人工智能 并行计算
2025年阿里云弹性裸金属服务器架构解析与资源配置方案
🚀 核心特性与技术创新:提供100%物理机性能输出,支持NVIDIA A100/V100 GPU直通,无虚拟化层损耗。网络与存储优化,400万PPS吞吐量,ESSD云盘IOPS达100万,RDMA延迟<5μs。全球部署覆盖华北、华东、华南及海外节点,支持跨地域负载均衡。典型应用场景包括AI训练、科学计算等,支持分布式训练和并行计算框架。弹性裸金属服务器+OSS存储+高速网络综合部署,满足高性能计算需求。
|
域名解析 存储 缓存
DNS是什么?内网电脑需要配置吗?
【10月更文挑战第22天】DNS是什么?内网电脑需要配置吗?
3084 1
|
弹性计算 网络协议 Ubuntu
如何在阿里云国际版Linux云服务器中自定义配置DNS
如何在阿里云国际版Linux云服务器中自定义配置DNS
|
网络协议 Docker 容器
docker中的DNS配置
【10月更文挑战第5天】
4436 1
|
机器学习/深度学习 调度
mmseg配置解析 Polynomial Decay 多项式衰减
Polynomial Decay(多项式衰减)是一种常用的学习率调度方法,通过多项式函数逐步减少学习率,帮助模型更好地收敛。公式为:\[ lr = (lr_{initial} - \eta_{min}) \times \left(1 - \frac{current\_iter}{max\_iters}\right)^{power} + \eta_{min} \]。参数包括初始学习率、最小学习率、当前迭代次数、总迭代次数和衰减指数。适用于需要平滑降低学习率的场景,特别在训练后期微调模型参数。
710 0
mmseg配置解析 Polynomial Decay 多项式衰减

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS