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

(责任编辑:kiah)

http://www.dnstx.com/DNS/dnstech/2011083024.html

转载于:https://www.cnblogs.com/kiah/archive/2011/11/20/2255696.html

什么是动态DNS 动态DNS有什么用相关推荐

  1. 一文搞懂常用的网络概念:域名、动态IP、DNS、DDNS

    人呐,眼光放得长远一些,看到的东西也会多一些,生活也就会过得更有意义一点. 本文已被https://yourbatman.cn收录:女娲Knife-Initializr工程可公开访问啦:程序员专用网盘 ...

  2. 在DNS服务器上动态注册失败,DNS 注册的动态更新延迟 - Windows Server | Microsoft Docs...

    DNS 注册的 DHCP 动态更新延迟或未处理 09/08/2020 本文内容 本文讨论 DHCP 域名系统 (DNS) 行为中的更改可能会延迟 DNS 注册并提供解决此问题的帮助. 适用于:  Wi ...

  3. 阿里云DNS动态解析:解决内网服务外网访问

    阿里云DNS动态解析:解决内网服务外网访问 目录 注册阿里云账号获取AccessKeyId,AccessKeySecret并授权 阿里云关于DNS解析的SDK及API文档 代码实现 目录 注册阿里云账 ...

  4. 构建企业级DNS系统(六)DNS动态更新

    DNS动态更新 什么是DNS动态更新 DNS动态更新与BIND软件的关系 如何使用DNS动态更新 bind9环境nsupdate工具动态更新权威区数据举例 nsupdate入门 nsupdate使用细 ...

  5. linux 查看dhcp dns,RHEL6 DNS+DHCP+DDNS

    p { margin-bottom: 0.08in; }a:link { } DNS & DHCP及其动态更新 一DNS简易设置 1安装相关软件包 #yum install bind bind ...

  6. 计算机id dns知识,DNS 事件 ID 4013 疑难解答 - Windows Server | Microsoft Docs

    DNS 事件 ID 4013 (DNS 服务器无法加载与 AD 集成的 DNS 区域) 09/08/2020 本文内容 本文解析在 DNS 服务器角色启动后承载 DNS 服务器角色的域控制器的 DNS ...

  7. 裂脑DNS(Split DNS)的那点旧事研究

    裂脑DNS(Split DNS)的那点旧事研究     昨天夜里发生的事情        今天看到了老黄在夜里1点多更新了blog,并针对运维业务知识谈来自己的看法,这种很好的理念促动了我懒惰的双手. ...

  8. 什么是DNS?DNS端口号是多少?什么是DNS服务,DNS服务器?DNS域名解析原理

    什么是DNS? DNS全称是domain name service即:域名解析服务. DNS端口号是多少? 53 什么是DNS服务,DNS服务器? DNS服务器就是域名服务器,即提供域名解析的服务器. ...

  9. java 设置dns_通过代码直接设置Java的DNS - Java Dns Cache Manipulator

    通过代码直接设置Java的DNS - Java Dns Cache Manipulator 通过代码直接设置Java的DNS(实际上设置的是DNS Cache),支持JDK 6+. 通过代码直接设置J ...

最新文章

  1. 哈希表哪家强?几大编程语言吵起来了!
  2. bem什么意思_BEM命名法
  3. (王道408考研操作系统)第三章内存管理-第二节1:虚拟内存管理基本概念
  4. 【进阶技术】一篇文章搞掂:OAuth2
  5. 轻松生成ip地址的姿势,最快得到批量***目标
  6. transmute[推荐小软件]
  7. Microsoft Office Mobile 2010 Beta 于 4 月 5 日过期
  8. java的colt矩阵操作_colt-1.2.0
  9. android 系统相册调用,各版本的区别总结
  10. 《人月神话》之外科手术队伍
  11. matlab2012b破解版安装
  12. 完美解决.CHM文件打不开或者打开以后显示空白的情况
  13. R语言ggplot2可视化条形图:通过双色渐变配色颜色主题可视化条形图
  14. html5置顶标签css样式,html5 header标签 html header css布局教程 /header
  15. IBUS-WARNING **: 09:23:08.407: The owner of /home/cl/.config/ibus/bus is not root!
  16. GPT系列论文精读-GPT1
  17. 机器学习 笔记04 ---决策树(DT):理论+代码实现
  18. 手机屏幕如何投屏到电脑显示器上?
  19. 车载计算机维修,车载电脑硬件故障及检修
  20. 中小型软件开发项目管理

热门文章

  1. 怎么逐步突破,成为Python高手?
  2. 这五款Python工具都是最常用的,尤其是第三种,初学者必须掌握的
  3. java导入包大全_eclipse快速导入jar包的相关操作步骤
  4. labuladong的算法小抄pdf_推荐两个学算法的 GitHub 项目
  5. python dataframe 计算上下两行的差值_用Python进行数据清洗!
  6. 用WWWGrep来检查你的网站元素安全
  7. MySQL触发器的使用规则
  8. 兄弟连html5在线画板,IT兄弟连 HTML5教程 HTML5做到了与之前版本的兼容
  9. oracle打印乘法口诀,ORACLE中实现输出乘法口诀
  10. Power Network [POJ - 1459]