分享
 
 
 

动态DNS

王朝other·作者佚名  2008-05-19
窄屏简体版  字體: |||超大  

1.核心思想

配置动态DNS服务器的核心思想是:在DNS服务器上运行多个BIND,每个BIND为来自不同区域的用户提供解析,因此每个BIND都应具有不同的配置文件和域文件,并且分别监听在不同的端口。在接到客户端DNS请求时,根据客户的ip地址将请求重定向不同的BIND服务端口。BIND响应时,再改写相应包的服务端口为标准的53端口。这样就可以根据客户端的ip地址将不同的解析结果返回给客户端。整个过程对于客户端来说都是透明的。实现的关键在于运行不同的BIND及运用iptables进行ip地址及端口改写操作。

关于iptables更为详细的信息,请参考解决方案中作者的两篇文章――《用iptales实现包过虑型防火墙》及《用iptables实现NAT》。

2.配置过程

2.1.配置内核

netfilter要求内核版本不低于2.3.5,在编译新内核时,要求选择和netfilter相关的项目。这些项目通常都是位于"Networking options"子项下。以2.4.0内核为例,我们应该选中的项目有:

[*] Kernel/User netlink socket

[ ] Routing messages

Netlink device emulation

[*] Network packet filtering (replaces ipchains)

.......

然后,在"IP: Netfilter Configuration ----"选中:

Connection tracking (required for masq/NAT)

FTP protocol support

IP tables support (required for filtering/masq/NAT)

limit match support

MAC address match support

Netfilter MARK match support

Multiple port match support

TOS match support

Connection state match support

Packet filtering

REJECT target support

Full NAT

MASQUERADE target support

REDIRECT target support

Packet mangling

TOS target support

MARK target support

LOG target support

ipchains (2.2-style) support

ipfwadm (2.0-style) support

其中最后两个项目可以不选,但是如果你比较怀念ipchains或者ipfwadm,你也可以将其选中,以便在2.4内核中使用ipchians或ipfwadm。但是需要注意的是,iptables是和ipchians/ipfwadm相对立的,在使用iptables的同时就不能同时使用ipchains/ipfwadm。编译成功后,这些模块文件都位于以下目录中

/lib/modules/2.4.0/kernel/net/ipv4/netfilter

编译2.4.0的新内核时还应该注意要在"Processor type and features"中选择和你的CPU相对应的正确的CPU选项,否则新内核可能无法正常工作。

2.2.配置BIND服务

缺省地,BIND服务监听在53端口,我们可以通过配置让BIND运行在不同的ip及端口上。实现这一点并不复杂,假设我们的DNS服务器的ip地址是211.163.76.1,并且我们想区分CERNET及非CERNET的客户,这时我们必须运行两个BIND,使用不同的配置文件。可以在使用非标准监听端口的BIND的配置文件中用listen-on指定BIND监听的端口,比如:

options {

listen-on port 54 {211.163.76.1;}

directory "/var/named_cernet";

};

可以用named的-c 选项指定named读入不同的配置文件,比如:

/usr/sbin/named -u named -c /etc/named_cernet.conf

2.3.配置重定向规则

假设监听在标准端口的BIND服务器为非CERNET客户提供DNS解析,监听在54端口的BIND服务器为CERNET服务器提供DNS解析,我们可以建立如下的规则脚本:

#!/bin/bash

#打开端口转发

echo 1

/proc/sys/net/ipv4/ip_forward

#加载相关的内核模块

/sbin/modprobe iptable_filter

/sbin/modprobe ip_tables

/sbin/modprobe iptables_nat

#刷新所有规则

/sbin/iptables -t nat -F

#加入来自CERNET的DNS请求转发规则,将其转发到本地54端口,

#CERNET地址列表可从www.nic.edu.cn/RS/ipstat/获得

/sbin/iptables -t nat -A PREROUTING -p udp -s 163.105.0.0/16

--dport 53 -i eth0 -j REDIRECT 54

/sbin/iptables -t nat -A PREROUTING -p tcp -s 163.105.0.0/16

--dport 53 -i eth0 -j REDIRECT 54

/sbin/iptables -t nat -A PREROUTING -p udp -s 166.111.0.0/16

--dport 53 -i eth0 -j REDIRECT 54

/sbin/iptables -t nat -A PREROUTING -p tcp -s 166.111.0.0/16

--dport 53 -i eth0 -j REDIRECT 54

/sbin/iptables -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 REDIRECT 54

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.112.0.0/15

--dport 53 -i eth0 -j REDIRECT 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/iptables -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 tcp

--sport 54 -o eth0 -j SNAT --to 211.163.76.1:53

脚本

#!/bin/bash

DNS_IP=211.163.76.1

CNET_PORT=54

#打开端口转发

echo 1

/proc/sys/net/ipv4/ip_forward

#加载相关的内核模块

/sbin/modprobe iptable_filter

/sbin/modprobe ip_tables

/sbin/modprobe iptables_nat

#刷新所有规则

/sbin/iptables -t nat -F

#加入来自CERNET的DNS请求转发规则,将其转发到本地54端口,CERNET地址列表可从#www.nic.edu.cn/RS/ipstat/获得

/sbin/iptables -t nat -A PREROUTING -p udp -s 162.105.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 166.111.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.4.128.0/19 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.112.0.0/15 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.38.96.0/19 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.204.0.0/14 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 210.25.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 210.31.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 211.68.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 211.71.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.200.0.0/15 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 210.26.0.0/15 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.115.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.202.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 210.40.0.0/15 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.203.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.116.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.192.0.0/15 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 210.36.0.0/14 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 202.38.192.0/18 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p udp -s 211.66.0.0/16 --dport 53 -i eth0 -j REDIRECT --to-port $CNET_PORT

/sbin/iptables -t nat -A PREROUTING -p

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有