引言:


自从中国电信拆分成北网通、南电信以后,开始了各自资源的垄断.成就了目前这种互联不互通的奇怪局面,连信产部都无能为力.为了解决南北互联互通的问题,开始出现了智能DNS,这需要准确的知道电信和网通及其它运营商的IP分段情况。

一般有如下两种办法可以得到各运营商的IP段:
1 通过导出各BGP路由器的路由表,得到各运营商的IP段.
2 通过whois查询APNIC数据库信息.APNIC是管理亚太地区IP地址分配的机构,它有着丰富准确的IP地址分配库,同时这些信息也是对外公开的!


下面就让我们看看如何在Linux下获得一些电信、网通、等运营商的IP地址分配情况:
首先:确保Linux系统可以上Internet
[root@rhel6-client ~]# ping www.baidu.com
PING www.a.shifen.com (180.97.33.107) 56(84) bytes of data.
64 bytes from 180.97.33.107: icmp_seq=1 ttl=55 time=8.36 ms
64 bytes from 180.97.33.107: icmp_seq=2 ttl=55 time=5.98 ms
64 bytes from 180.97.33.107: icmp_seq=3 ttl=55 time=6.33 ms
64 bytes from 180.97.33.107: icmp_seq=4 ttl=55 time=10.6 ms
64 bytes from 180.97.33.107: icmp_seq=5 ttl=55 time=8.84 ms
64 bytes from 180.97.33.107: icmp_seq=6 ttl=55 time=8.80 ms
^C
--- www.a.shifen.com ping statistics ---
6 packets transmitted, 6 received, 0% packet loss, time 5481ms
rtt min/avg/max/mdev = 5.980/8.155/10.608/1.586 ms

其次:下载whois客户端工具
[root@rhel6-client ~]# wget http://ftp.apnic.net/apnic/dbase/tools/ripe-dbase-client-v3.tar.gz
然后解压、编译和安装
[root@rhel6-client ~]# tar -zxvf ripe-dbase-client-v3.tar.gz
[root@rhel6-client ~]#cd whois-3.1/
[root@rhel6-client ~]#./configure
[root@rhel6-client ~]#make && make install
最后:获取运营商IP段
[root@rhel6-client ~]#./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP > /root/cnc
[root@rhel6-client ~]#./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET > /root/chinanet
[root@rhel6-client ~]#./whois3 -h whois.apnic.net -l -i mb MAINT-CN-CRTC > /root/crtc
[root@rhel6-client ~]# ls -al
total 1640
dr-xr-x---.  6 root root    4096 May 28 06:08 .
dr-xr-xr-x. 22 root root    4096 May 27 20:21 ..
-rw-r--r--   1 root root  420038 May 28 06:08 chinanet
-rw-r--r--   1 root root  408469 May 28 06:05 cnc
-rw-r--r--   1 root root  384472 May 28 06:10 crtc
-rw-r--r--   1 root root   26342 Dec 10  2014 ripe-dbase-client-v3.tar.gz
drwxrwxrwx   2  512  5020   4096 May 28 06:03 whois-3.1
依次获取电信、网通、铁通IP地址段信息

如果想得到具体的服务商比如江苏省电信的IP池,就把mb的值改为MAINT-CHINANET-JS,或者是辽宁网通,那就改为MAINT-CNCGROUP-LN。可以先查看各运营商的网络IP地址,然后在官方网站上查看这个地址归属的运营商组名。

打开获取后的文件可以看到里面的信息非常详细,甚至可以看到各个分公司的负责人、电话、电子邮件等等信息。如果想得到一份整齐干净的IP地址段文件,只要用grep和awk简单过滤就可以了。

获取中国CNC网通地址列表字段

./whois3 -h whois.apnic.net -l -i mb MAINT-CNCGROUP | grep "descr" | grep "Reverse" | awk -F "for" '{if ($2!="") print $2}'| sort -n | awk 'BEGIN{print "acl \"CNC\" '{'"}{print $1";"}END{print "'}';"}' > /var/named/cnc_acl.conf

获取中国电信CTC 地址列表字段

./whois3 -h whois.apnic.net -l -i mb MAINT-CHINANET | grep "descr" | grep "Reverse" | awk -F "for" '{if ($2!="") print $2}'| sort -n | awk 'BEGIN{print "acl \"CTC\" '{'"}{print $1";"}END{print "'}';"}' > /var/named/ctc_acl.conf

grep过程:

grep "inetnum" cnc-he > cnc-grep

最终结果出来前把inetnum字段去掉会更清楚一些:(sed过程)

sed 's/inetnum: //g' cnc-grep

sed 's/inetnum: //g' chinanetgrep

sed 's/inetnum: //g' crtcgrep

more cnc-he | grep "descr" | grep "Reverse" | awk -F "for" '{if ($2!="") print $2}'| sort -n | awk 'BEGIN{print "acl \"cnc-he\" '{'"}{print $1";"}END{print "'}';"}' > /var/named/cnc.he 使用ripe-whois3获得电信,网通等运营商的ip地址