Ubuntu环境下Bind双重域名配置
Bind 双重域名配置[编辑]双重DNS 的配置本文作者:Firehare授权许可:创作共用协议你可以免费:拷贝、分发、呈现和表演当前作品∙ 制作派生作品 ∙ 是必须基于以下条款:署名。你必须明确标明
Bind 双重域名配置
[编辑]双重DNS 的配置
本文作者:Firehare
授权许可:创作共用协议
你可以免费:
拷贝、分发、呈现和表演当前作品
∙ 制作派生作品 ∙ 是必须基于以下条款:
署名。你必须明确标明作者的名字。.
非商业用途。 你不可将当前作品用于商业目的。
保持一致。 如果你基于当前作品更改、变换或构造新作品,你应当按照与当前协议完全相同的协议分发最终作品。 对于任何二次使用或分发,你必须让其他人明确当前作品的授权条款
∙ 在得到作者的明确允许下,这里的某些条款可以放弃


∙


相信现在有不少地方都是起双重DNS 的,即对外解析成公网地址,对内解析成内网地址。一般的做法是用两台DNS 服务器分开来做的,但如果机器紧张,只有一台的话或出于安全考虑只用一台的话,其实也是可以做的,具体作法可以分以下两种情况: 使用Bind8和Bind9的做法是不一样的,

[编辑]Bind8下的实现方法 在DNS 服务器上运行两个BIND ,分别为来自内部网络和外部网络的域名请求提供解析,每个BIND 具有不同的配置文件和域名数据库文件,并分别在不同的端口监听。DNS 服务器在接到客户端请求时,根据客户的IP 地址将请求重定向到不同的BIND 服务端口,这样就可以根据客户端的IP 地址将不同的解析结果返回给客户端,而整个过程对于客户端来说都是透明的。实现的关键在于运行两个BIND 及运用iptables 命令进行IP 地址及端口改写操作。 具体配置的话: 在/etc/下生成两个named 配置文件named.in 与named.out 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";nnzone file }; zone file };nn"localhost" { "localhost.zone"; "xxu.edu.cn" { "xxu.edu.cn.zone";nntype master;nntype master;nnnamed.outnn# # 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 {nn
default_syslog; }; }; #DataBase Files zone file }; zone file }; "xx.xx.210.in-addr.arpa" { "xx.xx.210.in-addr.arpa.zone"; type master; "0.0.127.in-addr.arpa" { "0.0.127.in-addr.arpa.zone"; type master;nnzone file }; zone file };nn"localhost" { "localhost.zone"; "xxu.edu.cn" { "xxu.edu.cn.zone";nntype master;nntype master;nn为什么选对外发布的做重定向呢,当时的考虑是对内解析的流量大,可以减少一个环节。 然后做 iptables 的重定向,在 iptable 配置文件中添加nn-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 COMMITnn最后在做一个启动脚本:nn#!/bin/shnn
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.innn重启机器就 OK 了!nn[编辑]Bind9nn下的实现方法nn只需要一个 named.conf 文件就搞定 具体配置:nninclude "/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 file }; zone "0.0.127.in-addr.arpa" { "." { "named.ca"; type hint;nn
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"; };
};
这样就配置好了! 至于具体的数据文件,我想大家都应该会配置了,我这里就不多说了!
,