準確生成電信、聯通、移動IP地址段
APNIC是管理亞太地區IP地址分配的機構,它有著豐富準確的IP地址分配庫,同時這些資訊也是對外公開的!下面就讓我們看看如何在Linux下獲得一些電信運營商的IP地址分配情況:
程式碼:
shell> wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz
shell> tar xzvf ripe-dbase-client-v3.tar.gz
shell> cd whois-3.1
shell> ./configure
shell> make
完成上述編譯安裝工作後,我們開始獲取IP地址段;
程式碼:
中國網通:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /var/cnc
中國電信:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /var/chinanet
中國鐵通:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /var/crtc
中國移動:shell> ./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CMCC > /var/CMCC
開啟獲取後的檔案可以看到裡面的資訊非常詳細,甚至可以看到各個分公司的負責人、電話、電子郵件等等資訊。如果想得到一份整齊乾淨的IP地址段檔案,只要用grep和awk簡單過濾就可以了。
程式碼:
#自動生成IP段指令碼
#自動生成IP段指令碼
vi apnic
貼入以下的內容是一個相當優秀的指令碼)
#自動生成IP段指令碼
vi apnic
貼入以下的內容是一個相當優秀的指令碼)
#!/bin/sh
FILE=./ip_apnic
rm -f $FILE
wget http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest -O $FILE
grep 'apnic|CN|ipv4|' $FILE | cut -f 4,5 -d'|'|sed -e 's/|/ /g' | while read ip cnt
do
echo $ip:$cnt
mask=$(cat << EOF | bc | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt)
EOF)
echo $ip/$mask>> cn.net
NETNAME=`whois
NETNAME=`echo $NETNAME | sed -e 's/cJ/ /g' | awk -F' ' '{ printf $1; }'`
case $NETNAME in
CNC)
echo $ip/$mask >> CNCGROUP
;;
CHINANET|CNCGROUP)
echo $ip/$mask >> $NETNAME
;;
CHINATELECOM)
echo $ip/$mask >> CHINANET
;;
*)
echo $ip/$mask >> OTHER
;;
esac
done
chmod 744 apnic
./apnic
#注:紅色部分為網路名可通過WHOIS查詢該網段的網路名是什麼,即查詢是電信還是網通或移動或其它網路的標式,因此我們可以簡單地修改這個指令碼就可以得到中國其它運營商的網路IP段分配列表,
在當目前目錄就會成以下三個檔案
CHINANET CNCGROUP OTHER
#命令列獲得IP地址段並生成DNS需要ACL.CONF檔案方法,以獲得移動IP段為例
/path/whois3 -h whois.apnic.net -l -i mb MAINT-CN-CMCC | grep "descr" | grep "Reverse" | awk -F "for" '{if ($2!="") print $2}'| sort -n | awk 'BEGIN{print "acl \"MOBILE\" '{'"}{print $1";"}END{print "'}';"}' > /var/mobile_acl.conf
#紅色部分很重要,這個值是代表哪個網路的如"MAINT-CN-CMCC"是移動,"MAINT-CHINANET"是電信,以此類推