中國地理區域IP庫整理

1、前言
    此文應朋友需求進行整理,內容爲中國行政地理區域IP庫整理第一步:根據apnic分配給中國的IPv4地址,進行whois信息篩選劃分出ISP、及地域IP庫,以及生成腳本。網上以前也有相似處理IP庫的腳本,思路差很少,本文較深刻根據IP劃分紅行政區域、運營商IP庫及生成bind view 所需的acl ip庫文件,第一步實現基礎IP庫還不算很準確,你們能夠根據需求在修改定製。
  第二步:使用whois3根據mnt-by關鍵字反向查詢運營商IP段及運營商路由表,將第一步與第二步的IP庫進行對比將差別的IP段加入完善IP庫
  第三步:利用生產中的DNS查詢日誌獲取IP及view定義,使用第三方IP庫查詢校驗結果與分配的view進行對比,若是匹配不作調整,若是不匹配,再進行人工使用多個第三方IP庫查詢覈對,若是的確不匹配調整對應acl ip庫文件。
   一點整理思路,如此IP庫相對比較完整、精確。有興趣的同窗能夠一塊兒進行研究,完善,交流,今天將第一步實現的腳本及簡要說明。
bash


2、ISP英文簡稱說明
一、cnc   聯通
二、ctc   電信
三、cmn   移動
四、ctt   鐵通
五、cer   教育網
六、other 其餘ISP
ide


3、腳本修改完善說明
一、對ISP及涉及文件按照規範命名
二、增長中國地理區域劃分腳本,並自動生成view所需acl ip庫文件
二、對whois出的netname進行篩選並找出主要ISP的名稱,詳見netname_isp文件
三、根據中國地理區域劃分,將ISP劃分紅不一樣的區域
   區域劃分參考:
http://baike.baidu.com/view/2304312.htm
四、202.97.128.0/18這個IP段是劃分給中國後的掩碼,whois時獲得的adress是「address:        6 Cordelia Street」,劃區域時取關鍵字Cordelia,這個網段大部分在山西太原聯通,因此劃入華北聯通
五、由於whois信息篩選的address通常有三段,大多數分配給地方的IP,第一段地址都含有Beijing,因此進行區域IP篩選時,先篩選地方,最後在篩選含有北京的華北地區。
函數


4、文件說明
一、ip_apnic:爲Apanic提供的亞太地區IPv4,IPv6,AS號分配的信息表
二、cn.net:apnic分配給中國的IPv4 IP段
三、ISP IP庫文件爲ISP名稱,例如「ctc」即爲爲聯通的IP庫文件
四、ISP IP庫及所屬地址描述文件,例如「cnc.address 」
五、篩選後的ISP區域IP庫文件,例如「cnc_zhb」即運營商_地理區域
六、acl IP庫文件,  acl_cnc_zdb格式爲acl_運營商_區域命名(網通_中國_東北地區)
學習


5、腳本說明
一、whois_ip.sh 爲獲取中國IPv4地址段及篩選ISP腳本,這個網上有,我根據需求稍微修改了一下,內容以下ui

#!/bin/sh
FILE=./ip_apnic
rm -f $FILE
#rm -f  cn.net UNICOM  CHINANET CMNET CRTC CERNET OTHER
for ipfile in cn.net cnc   ctt  cmn ctt cer other
do
mv $ipfile  $ipfile-$(date "+%F-%H:%M")
done
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
#zone=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:\(.*\)/\1/g'`
NETNAME=`whois $ip@whois.apnic.net | sed -e '/./{H;$!d;}' -e 'x;/netnum/!d' |grep ^netname | sed -e 's/.*:      \(.*\)/\1/g'| sed -e 's/-.*//g'|sed 's: ::g'`
echo "$NETNAME" >> netname
case $NETNAME in
CNC|CNCGROUP|UNICOM|Chinaunicom)
echo "$ip/$mask " >> cnc
#echo "$ip/$mask $zone" >> cnc-zone
;;
CHINANET|CHINATELECOM)
echo "$ip/$mask" >>  ctc
#echo "$ip/$mask $zone" >> ctc-zone
;;
CMNET)
echo "$ip/$mask " >> cmn
#echo "$ip/$mask $zone" >> cmn-zone
;;
CRTC)
echo "$ip/$mask " >> ctt
#echo "$ip/$mask $zone" >> ctt-zone
;;
*CERNET*)
echo "$ip/$mask " >> cer
#echo "$ip/$mask $zone" >> cer-zone
;;
*)
echo "$ip/$mask" >> other
#echo "$ip/$mask $zone" >> other-zone
;;
esac
done


二、gen_china_area.sh 根據中國地理區域劃分生成的區域IP庫,並生成view所需的acl ip庫文件spa

#!/bin/sh
#update date:20130307
#QQ:335623998
#generate china area ip
gen_cnc(){
FILE=$PWD/cnc
#rm -f  $FILE.address
while read LINE;do
echo "$LINE"
echo -n "$LINE @ " >> $FILE.address
whois  $LINE @whois.apnic.net |egrep "address|descr"|xargs  echo >> $FILE.address
echo  "-----------------"  >> $FILE.address
sleep 1
done < $FILE
egrep -i "Hunan|Changsha|Hubei|Wuhan|Henan|Zhenzhou|Jiangxi|Nanchang" $FILE.address > cnc_zhz
egrep -i -v "Hunan|Changsha|Hubei|Wuhan|Henan|Zhenzhou|Jiangxi|Nanchang" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Sichuan|Chengdu|Yunnan|Kunming|Guizhou|Guiyang|Xizang|Lasa|Chongqing" $FILE.address > cnc_zxn
egrep -i -v "Sichuan|Chengdu|Yunnan|Kunming|Guizhou|Guiyang|Xizang|Lasa|Chongqing" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Shandong|Jinan|Jiangsu|Suzhou|Nanjing|Anhui|hefei|Zhejiang|Ningbo|Hangzhou|Fujian|Futian|Pudong|Shanghai" $FILE.address > cnc_zhd
egrep -i -v "Shandong|Jinan|Jiangsu|Suzhou|Nanjing|Anhui|hefei|Zhejiang|Ningbo|Hangzhou|Fujian|Futian|Pudong|Shanghai" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Guangxi|Nanning|Guangzhou|Guangdong|Shenzhen|Hainan|Haikou" $FILE.address > cnc_zhn
egrep -i -v "Guangxi|Nanning|Guangzhou|Guangdong|Shenzhen|Hainan|Haikou" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Heilongjiang|Harbin|Jilin|ChangChun|Liaoning|Shenyang" $FILE.address > cnc_zdb
egrep -i -v "Heilongjiang|Harbin|Jilin|ChangChun|Liaoning|Shenyang" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Ningxia|Yichuan|Xinjiang|Urumqi|Qinghai|Shaanxi|Xining|Xian|Gansu|Lanzhou" $FILE.address > cnc_zxb
egrep -i -v "Ningxia|Yichuan|Xinjiang|Urumqi|Qinghai|Shaanxi|Xining|Xian|Gansu|Lanzhou" $FILE.address > addtmp
mv addtmp $FILE.address
egrep -i "Mongolia|Cordelia|Beijing|Hebei|Shijiazhuang|Tianjin|Taiyuan|Shanxi|GuangDe" $FILE.address > cnc_zhb
egrep -i -v "Mongolia|Cordelia|Beijing|Hebei|Shijiazhuang|Tianjin|Taiyuan|Shanxi|GuangDe" $FILE.address > addtmp
mv addtmp $FILE.address
sed -r -i '/-----/d' $FILE.address
#cat $FILE.address >>  cnc_zhb
sed -r -i 's#@.*##g' cnc_*
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zhz | awk 'BEGIN{print "acl acl_cnc_zhz '{' "}{print $1";"}END{print "'}';"}' > acl_cnc_zhz
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4  cnc_zxn| awk 'BEGIN{print "acl acl_cnc_zxn '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zxn
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zhd | awk 'BEGIN{print "acl acl_cnc_zhd '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zhd
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zhn | awk 'BEGIN{print "acl acl_cnc_zhn '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zhn
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zdb | awk 'BEGIN{print "acl acl_cnc_zdb '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zdb
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zxb | awk 'BEGIN{print "acl acl_cnc_zxb '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zxb
sort -n -t.  -k 1,1 -k 2,2 -k 3,3 -k 4,4 cnc_zhb | awk 'BEGIN{print "acl acl_cnc_zhb '{' "}{print $1";"}END{print "'}';"}'  >acl_cnc_zhb
}
#其餘五個運營商函數定義相似,詳見腳本內容,腳本請下載http://down.51cto.com/data/873530
gen_cnc
gen_cmn
gen_ctt
gen_ctc
gen_cer
gen_other

三、whois_mb.sh 獲取mnt-by關鍵字,爲第二步處理作準備
四、主要主要根據中共區域劃分生成的acl ip庫文件,若是你根據運營商劃分直接對篩選的ISP IP庫文件(cnc ctt cer……)進行處理生成acl ip庫文件便可,通常小企業DNS定義三個view(cnc,ctt,other)便可。.net

  自動生成的acl ip文件內容日誌

cat acl_cnc_zdb
acl acl_cnc_zdb {
1.56.0.0/13;
1.188.0.0/14;
42.4.0.0/14;
42.52.0.0/14;
42.56.0.0/14;
42.84.0.0/14;
42.176.0.0/13;
58.21.0.0/16;
58.244.0.0/15;
…略…
……
221.207.128.0/17;
221.208.0.0/14;
221.212.0.0/16;
222.160.0.0/15;
222.162.0.0/16;
222.163.0.0/19;
222.163.32.0/19;
222.163.64.0/18;
};

 

 


相關參考資料:http://rdc.taobao.com/blog/cs/?p=908htm

 中國行政區域IP庫整理腳本及文件下載地址:http://down.51cto.com/data/873530blog

 此文思路基本能夠知足中小企業使用,還請你們指點、溝通,一塊兒學習。

相關文章
相關標籤/搜索