iptables應用之動態DNS(轉)
iptables應用之動態DNS(轉)[@more@]一、核心思想配置動態DNS伺服器的核心思想是:在DNS伺服器上執行多個BIND,每個BIND為來自不同區域的使用者提供解析,因此每個BIND都應具有不同的配置檔案和域檔案,並且分別監聽在不同的埠。在接到客戶端DNS請求時,根據客戶的ip地址將請求重定向不同的BIND服務埠。BIND響應時,再改寫相應包的服務埠為標準的53埠。這樣就可以根據客戶端的ip地址將不同的解析結果返回給客戶端。整個過程對於客戶端來說都是透明的。實現的關鍵在於執行不同的BIND及運用iptables進行ip地址及埠改寫操作。關於iptables更為詳細的資訊,請參考解決方案中作者的兩篇文章——《用iptales實現包過慮型防火牆》及《用iptables實現NAT》。二、配置過程步驟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步驟三、配置重定向規則假設監聽在標準埠的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地址列表可從獲得/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伺服器就可以正常工作了
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/8225414/viewspace-940663/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- iOS應用之間的跳轉解析iOS
- iptables應用
- 利用iptables實現埠對映(支援動態域名)
- Nacos釋出0.5.0版本,輕鬆玩轉動態 DNS 服務DNS
- postgresql高階應用之行轉列&彙總求和SQL
- 頁面和應用之間的互動
- iptables 配置埠及轉發
- MongoDB高階應用之資料轉存與恢復MongoDB
- Iptables防火牆應用防火牆
- 轉載 iptables 禁用與 解封ip
- MongoDB高階應用之資料轉存與恢復(5)MongoDB
- iOS 應用之間跳轉傳輸資料以及跳回源程式iOS
- iptables(三)網路地址轉換NAT
- DEDE整站動態/靜態轉換
- VS生成CordovaforAndroid應用之GradleAndroidGradle
- mysql動態行轉列MySql
- 亞馬遜和谷歌DNS服務存在嚴重漏洞!動態DNS更新可遭洩露亞馬遜谷歌DNS
- 海爾的JIT應用之旅
- presto 轉換靜態catlog為動態catlogREST
- [20020226]iptables PREROUTING POSTROUTING 應用測試.txt
- 什麼是DNS劫持?如何應對DNS劫持?DNS
- ubuntu 配置靜態IP 和 DNSUbuntuDNS
- Android 7.0應用之間共享檔案Android
- ThreadX——IPC應用之訊息佇列thread佇列
- DNS服務應用DNS
- lcx iptables rinetd 三個埠轉發流量分析
- Aluma Insights:1/6的成年SVOD使用者在應用之間不斷跳轉
- C++ 動態型別轉換C++型別
- 轉:DNS解析過程詳解DNS
- Sass應用之實現主題切換
- join方法應用之—查詢航班資訊
- 快應用之開發體驗紀要
- debian 12設定靜態ip、dnsDNS
- iptables重置
- iptables詳解及docker的iptables規則Docker
- cglib動態代理和jdk動態代理的區別與應用CGLibJDK
- gstreamer教程(7)——構建應用之Bus的使用
- postgresql高階應用之合併單元格SQL
- 6.2.初識Flutter應用之路由管理Flutter路由