首页 > 系统应用 > DNS > 做智能DNS的时候DNS views的IP库生成脚本get_apnic.sh
2015
08-12

做智能DNS的时候DNS views的IP库生成脚本get_apnic.sh

InfoQ 读一篇安全关于CDN的文章时看到这个脚本,作者是杭州的shaohaiyang。
优势:
1.思路非常好。从apnic拿最准的IP分配库,取出中国的部分;然后whois通过注册地址获取地域。
劣势:
1.whois查询效率。
2.地域注册信息的准确性。国内有借IP的情况。cnnic直接申请的ip段,不好归类。
脚本基本能解决90%的问题。(sinuo同学评估)

https://github.com/shaohaiyang

 

#!/bin/sh
FILE=`pwd`/ip_apnic
TMP=/dev/shm/ip.tmp
CNC_FILE=`pwd`/CNC
CTC_FILE=`pwd`/CTC
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
)
 
whois $ip@whois.apnic.net > $TMP.tmp
sed -n '/^inetnum/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' >  $TMP
NETNAME=`grep ^netname $TMP | sed -e 's/.*:      \(.*\)/\1/g' | sed -e 's/-.*//g'|sed 's: ::g'`
 
egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
sed -n '/^route/,/source/p' $TMP.tmp | awk '(/mnt-/ || /netname/)' >  $TMP
egrep -qi "(CNC|UNICOM|WASU|NBIP|CERNET|CHINAGBN|CHINACOMM|FibrLINK|BGCTVNET|DXTNET|CRTC)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CNC_FILE
else
egrep -qi "(CHINATELECOM|CHINANET)" $TMP
if [ $? = 0 ];then
echo $ip/$mask >> $CTC_FILE
else
echo "$ip/$mask $NETNAME" >> `pwd`/OTHER
fi
fi
fi
fi
done
 
rm -rf $TMP $TMP.tmp
最后编辑:
作者:saunix
大型互联网公司linux系统运维攻城狮,专门担当消防员

留下一个回复