• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • iptables應用之動態DNS

    發表于:2007-05-25來源:作者:點擊數: 標簽:
    一. 核心思想 配置動態DNS 服務器 的核心思想是:在DNS服務器上運行多個BIND,每個BIND為來自不同區域的用戶提供解析,因此每個BIND都應具有不同的配置文件和域文件,并且分別監聽在不同的端口。在接到客戶端DNS請求時,根據客戶的ip地址將請求重定向不同的B
    一. 核心思想

      配置動態DNS服務器的核心思想是:在DNS服務器上運行多個BIND,每個BIND為來自不同區域的用戶提供解析,因此每個BIND都應具有不同的配置文件和域文件,并且分別監聽在不同的端口。在接到客戶端DNS請求時,根據客戶的ip地址將請求重定向不同的BIND服務端口。BIND響應時,再改寫相應包的服務端口為標準的53端口。這樣就可以根據客戶端的ip地址將不同的解析結果返回給客戶端。整個過程對于客戶端來說都是透明的。實現的關鍵在于運行不同的BIND及運用iptables進行ip地址及端口改寫操作。

    二. 配置過程

      步驟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,使用不同的配置文件??梢栽谑褂梅菢藴时O聽端口的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


      步驟三、配置重定向規則

      假設監聽在標準端口的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服務器地址及監聽端口即可。

      步驟四、運行動態DNS

      配置完成后我們啟動DNS服務器,并且運行相應的規則腳本,我們的動態DNS服務器就可以正常工作了。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>