当前位置: 主页 > 服务器技术 > DNS服务器 > 配置防火墙环境中DNS服务器

配置防火墙环境中DNS服务器

时间:2009-10-26来源:互联网 点击:
在一般防火墙下,都是采用DMZ区内放服务器,外部访问DMZ区得到外部的IP,内部访问DMZ区时得到内部的IP。

  如一个, 内部IP地址<--->放在DMZ的web服务器的IP<----->外部IP地址 192.168.1.1<--->192.168.0.1<----->211.202.49.1 从DNS上可以从以下四个方面解决:

  一、iptables应用

  1、 核心思想

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

  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选项,否则新内核可能无法正常工作。

步骤二、 配置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

  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

  教育网网的朋友可以从这里下载该脚本,将脚本中的DNS_IP及CNET_PORT参数改成你自己的DNS服务器地址及监听端口即可。

1、要加入CDN服务的网站,需要域名(如www.linuxaid.com.cn,地址202.99.11.120)解析权提供给CDN运营商,Linuxaid的域名解析记录只要把www主机的A记录改为CNAME并指向cache.cdn.com即可。cache.cdn.com是CDN网络自定义的缓存服务器的标识。在/var/named/linuxaid.com.cn域名解析记录中,由:

www       IN   A    202.99.11.120
改为
www       IN   CNAME  cache.cdn.com.

  2、CDN运营商得到域名解析权以后,得到域名的CNAME记录,指向CDN网络属下缓存服务器的域名,如cache.cdn.com,CDN网络的全局负载均衡DNS,需要把CNAME记录根据策略解析出IP地址,一般是给出就近访问的Cache地址。 Bind 9的基本功能可以根据不同的源IP地址段解析对应的IP,实现根据地域就近访问的负载均衡,一般可以通过Bind 9的sortlist选项实现根据用户端IP地址返回最近的节点IP地址,具体的过程为:
  
  1)为cache.cdn.com设置多个A记录,/var/named/cdn.com 的内容如下:

$TTL 3600
@    IN   SOA       ns.cdn.com.   root.ns.cdn.com. (
         2002090201   ;Serial num
         10800      ;Refresh after 3 hours
         3600      ;Retry
         604800     ;Expire
         1800      ;Time to live
         
    IN   NS       ns
www   IN   A        210.33.21.168
ns   IN   A        202.96.128.68
cache  IN   A        202.93.22.13  ;有多少个CACHE地址
cache  IN   A        210.21.30.90  ;就有多少个CACHE的A记录
cache  IN   A        211.99.13.47


 

站长资讯网
. TAG: 防火墙 服务器 DNS 环境
推荐内容最近更新人气排行
关于我们 | 友情链接 | 网址推荐 | 常用资讯 | 网站地图 | RSS | 留言