1.核心思想
配置动态DNS服务器的核心思想是:在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,因此每个BIND都应具有不同的配置文件和域文件,并且分别监听在不同的端口。在接到客户端DNS请求时,根据客.户的ip地址将请求重定向不同的BIND服务端口。BIND响应时,再改写相应包的服务端.口为标准的53端口。这样就可以根据客户端的ip地址将不同的解析结果.返回给客户端。整个过程对于客户端来说都是透明的。实现的关键在于运行不同的BIND及运用iptables进行ip.地址.及端口改写操.作。 乙肝
关于iptables更为详细的信息,请参考解决方案中作者的两篇文章——《用ip.tales实现包过虑型防火墙》及《用ip.tables实现NAT》。.
2.配置过程
2.1.配置内核
netfilter要求内核版本不低于2.3.5,.在编译新内核时,要求选择和.netfilter相关的项目。这些项目通常都是位于"Networking options"子项下。以2.4..0内核为例,我们应该选中的项目有: 婚庆
Kernel/User netlin.k .socket 乙肝
[ ] Routing messages ..
..<*>; Netlink device emulation .
Network packet filt..ering (replaces ipchains) 女人
.......
然后,.在"IP: Netfilter Configuration ----.>;"选中:.
<M>; Connection .tracking (requ.ired for masq/NAT) 外汇
<M>; FTP protoc.ol supp.ort--------------彩票
<M>; IP tables support (req.u.ired for filtering/masq/NAT).
<M>; lim.it match .support 外汇
<M>; MAC address m..atch support
<M>; Netfilter M.ARK mat.ch support 外贸
<M>..; Multiple port match support
<M>; .TOS match support (广告)
<M>; Connection state m.at.ch support --------------彩票
<M>; Packet fi.ltering 外汇
<M>; REJE.CT target sup.port.
<M>.; Full NAT .
<M>; MASQUE.RADE target supp.ort 外汇
<M>; REDIRECT target sup.po.rt 鲜花
. <M>; Packet mangling .
<M>; TOS target. suppor.t 虚拟主机
<..M>; MARK target support 服务器
<M>; LOG .target support.
<M>.; ipchains. (2.2-style) support.
<M>; ipfwadm (2.0.-st.yle) support--- 印刷
其中最后两个项目可以不选,.但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是,iptab.les是和ipchians/ipfwadm相对立的,.在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这.些模块文件.都位于以下目录中--------------彩票
/lib/mod.ules/2.4.0./kernel/net/ipv4/netfilter投资
编译2.4.0的新内核时还应该注意要在"rocessor type and features"中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。http://upload.bbs.csuboy.com/Mon_1004/126_6764_4f4b5a14d6d2379.gif[/img](广告)
2.2.配置BIND服务
.缺省地,BIND服务监听在53端口,我们可以通过配置让BIND运行在不同的ip及端.口上。实现这一点并不复杂,假设我们的DNS服务器的.ip地址是211.163.76.1,并且我们想区分CERNET及非C.ERN.ET的客户,这时我们必须运行两个BIND,使用不同的配置文件。可以在使用非标准监听端口的BIND的配置文件中用listen-on指定BIND监听的端口,比如: 电子
options {
liste.n-on port 54 .{211.163.76.1;} 健康
d.irectory ."/var/named_cernet"; 美容
};
.可以用named的-c 选项指.定named读入不同的配置文件,比如:.
/usr/sbi.n/named -u named -c /et.c/named_cernet.conf.
2.3.配置重定向规则
假设监听在.标准端口的BIND服务.器为非CERNET客户提供DN.S解析,监听在54端口的BIND服务器为CERNET服务器提供DNS解析,我们可以建立如下的规则脚本: 建材
#!/bin/bash
#打开端口转发
echo 1 >; /proc/sys/net/.ip.v4/ip_forward 电子
#加载相关的内核模块
/sbin/modprobe iptabl.e_filt.er 外汇
/sbin/mod.probe ip_tables.学习
/sbin/m.odpr.obe iptables_nat学习
#刷新所有规则
/sbin/iptables -t n.at -F. 外汇
#加入来自C..ERNET的DNS请求转发规则,将其转发到本地54端口,电脑
#CERNE.T地址列表可从.
www.nic.edu.cn/RS/ipstat/获得
/sbin/iptables -t nat -A PREROUTING -p ud..p -s 163.105.0.0/16.
--dport 53 -i eth0 -.j REDIRECT 5.4 教育
/sbin../iptables -t nat -A PREROUTING -p tcp -s 163.105.0.0/16.
--dpo.rt 53 -i eth0 -j REDIRE.CT 54 建材
/sbin/iptabl.es -t nat -A PREROUTING -.p udp -s 166.111.0.0/16 外汇
--dport 53 -i eth0 -j. .REDIRECT 54 ( 游戏 )
/sbin./iptables -t nat -A PREROU.TING -p tcp -s 166.111.0.0/16学习
--dport 53 -i eth0 -j .R.EDIRECT 54电影
/sbin/i.pt.ables -t nat -A PREROUTING -p udp -s 202.4.128.0/19 乙肝
. --dport 53 -i eth0 -.j REDIRECT 54 --------------彩票
/sbin/.iptables -.t nat -A PREROUTING -p tcp -s 202.4.128.0/19 外汇
--dport 53 -i eth0 -j REDI.R.ECT 54服务器
/sbin/ipta.bles. -t nat -A PREROUTING -p udp -s 202.112.0.0/15.
--dport 53 -i eth0 -j RED.IRE.CT 54 健康
/sbin/iptables -t nat. -A .PREROUTING -p tcp -s 202.112.0.0/15 乙肝
. . --dport 53 -i eth0 -j REDIRECT 54[成人用品]
…
#将返回给.CERNET DNS客户数据包的源.端口(54端口)伪装成53端口.
/sbin/ip.tables -t nat -A POSTROUTING .-p udp--------------彩票
.. --sport 54 -o eth0 -j SNAT --to 211.163.76.1:53--------------彩票
/sbin/iptables -t nat -A POSTROUTING -p t..cp.
-.-sport 54 -o eth0 -j SNAT --to 21.1.163.76.1:53 电子
教育网网的朋友可以从这里这里.下.载该脚本,将脚本中的DNS_IP及CNET_PORT参数改成你自己的DNS服务器地址及监听端口即可。.
2.4.运行动态DNS
配置完成后我们启.动DNS服务器,并且运行相应的规则脚本,我.们的动态DNS服务器就可以正常工作了。外贸
. . linuxAid和bye2000健康