如果需要做联通电信的智能DNS,必然需要知道这两个ISP分配到的IP段。我们可以通过apnic下载完整的IP段,再查询IP的whois,再根据各运营商的关键词(如联通的netname是unicom,电信是chinanet或telecom)筛选出IP段。
下面是实现这一功能的脚本:
在执行脚本之前先安装jwhois,bc
- #!/bin/sh
- FILE=/root/apnic/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
- if whois $ip@whois.apnic.net | grep -i ".*chinanet.*\|.*telecom.*">/dev/null;then
- echo $ip/$mask >> chinanet
- elif whois $ip@whois.apnic.net | grep -i ".*unicom.*">/dev/null;then
- echo $ip/$mask >> unicom
- else
- echo $ip/$mask >> others
- fi
- done
直接执行这脚本就会开始进行IP段筛选,这需要一定的时间,等完成后会在当前目录下生成三个文件unicom,chinanet,others。
下面提供联通电信ip段acl文件:
电信:CHINANET.acl
联通:CNC.acl
脚本参考:http://bbs.chinaunix.net/thread-577601-1-1.html