首页 > 学技术 > 技术网文 > 网络技术 > 正文

[精彩] [號外] 自動產生 CHINANET/CNCGROUP 最新IPv4地址列表


来源 chinaunix.net 酷勤网整理

download script: http://211.72.210.251/images/cn_isp.sh

#!/bin/sh
FILE=/root/study/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
        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'`
        case $NETNAME in
        CHINANET|CNCGROUP)
                echo $ip/$mask >;>; $NETNAME
        ;;
#如果你還要其他 ISP , 請在這邊加上去即可,透過 apnic whois , 你可以知道他的 NETNAME
        OTHER_NETNAME_here)
        ;;
        esac
done

再來,你只要看 CHINANET 或 CNCGROUP 這兩個檔案內容即可以知道其所有的 IP List 了

[root@log images]# cat CHINANET

58.32.0.0/13
58.40.0.0/15
58.42.0.0/16
58.44.0.0/14
58.48.0.0/13
58.208.0.0/12
59.32.0.0/13
59.40.0.0/15
59.42.0.0/16
59.44.0.0/14
59.48.0.0/16
...以下略


有了這個,就看你如何發揮了..iptable/iproute/dns/squid...firewall 很多東西都會有需要的

我放了一份今天做出來的 List 在下面,日後永不更新,所以你要最新的就得
自己做了
http://211.72.210.251/images/CHINANET
http://211.72.210.251/images/CNCGROUP

教育網(CERNET) ? 我不知道,他的 IP Source 很亂,由 ARIN 的也有 APNIC
的,而且 NETNAME 還不太一致, 就懶得做了



 Iva 回复于:2005-07-14 19:24:51

以下是我前几天从SMTH搞到的Cernet的地址分配表:
引用:
58.192.0.0/15
58.194.0.0/15
58.196.0.0/15
58.200.0.0/13
59.64.0.0/14
59.68.0.0/14
59.72.0.0/15
59.74.0.0/15
59.76.0.0/16
59.77.0.0/16
59.78.0.0/15
162.105.0.0/16
166.111.0.0/16
202.112.0.0/18
202.112.128.0/17
202.112.64.0/18
202.113.0.0/16
202.114.0.0/16
202.115.0.0/16
202.116.0.0/16
202.117.0.0/16
202.118.0.0/16
202.119.0.0/16
202.120.0.0/15
202.127.216.0/21
202.127.224.0/19
202.192.0.0/15
202.194.0.0/15
202.196.0.0/15
202.198.0.0/15
202.200.0.0/15
202.202.0.0/15
202.204.0.0/14
202.38.140.0/23
202.38.184.0/21
202.38.192.0/18
202.38.64.0/19
202.38.96.0/19
202.4.128.0/19
210.25.0.0/17
210.25.128.0/18
210.26.0.0/15
210.28.0.0/15
210.30.0.0/16
210.31.0.0/16
210.32.0.0/14
210.36.0.0/14
210.40.0.0/15
210.42.0.0/15
210.44.0.0/15
210.46.0.0/15
211.64.0.0/15
211.66.0.0/16
211.67.0.0/16
211.68.0.0/16
211.69.0.0/16
211.70.0.0/16
211.71.0.0/16
211.80.0.0/16
211.81.0.0/16
211.82.0.0/16
211.83.0.0/16
211.84.0.0/15
211.86.0.0/15
218.192.0.0/16
218.193.0.0/16
218.194.0.0/16
218.195.0.0/16
218.196.0.0/14
219.216.0.0/15
219.218.0.0/15
219.220.0.0/16
219.221.0.0/16
219.222.0.0/15
219.224.0.0/17
219.224.128.0/18
219.224.192.0/18
219.225.0.0/16
219.226.0.0/16
219.227.0.0/16
219.228.0.0/15
219.230.0.0/15
219.242.0.0/16
219.243.0.0/17
219.243.128.0/18
219.243.192.0/18
219.244.0.0/14
222.16.0.0/15
222.18.0.0/15
222.192.0.0/14
222.196.0.0/15
222.198.0.0/16
222.199.0.0/16
222.20.0.0/15
222.200.0.0/14
222.204.0.0/15
222.206.0.0/15
222.22.0.0/16
222.23.0.0/16
222.24.0.0/15
222.26.0.0/15
222.28.0.0/14





 cnadl 回复于:2005-07-14 22:11:31

顶下下,对部分同志还是挺有用的。


 剑心通明 回复于:2005-07-15 08:33:47

引用:原帖由 "abel" 发表:

有了這個,就看你如何發揮了..iptable/iproute/dns/squid...firewall 很多東西都會有需要的

我放了一份今天做出來的 List 在下面,日後永不更新,所以你要最新的就得
自己做了
http://211.72.210.251/images/CHI..........


怎么我执行的提示有错误啊?


 abel 回复于:2005-07-15 09:49:52

引用:原帖由 "剑心通明" 发表:

怎么我执行的提示有错误啊?


什麼樣的環境下 ?
什麼錯誤?


 abel 回复于:2005-07-15 09:57:57

引用:原帖由 "Iva"]
 发表:


CERNET 的列表您的有缺 (我也不知道我用程式跑出來有沒有缺,但 APNIC 給的基本上不會錯)
您可看看
CERNET 上會有更新列表,但更新前有什麼 CERNET 並沒有公布
http://www.edu.cn/20050630/3142190.shtml


 Iva 回复于:2005-07-15 10:00:48

引用:原帖由 "abel" 发表:

有了這個,就看你如何發揮了..iptable/iproute/dns/squid...firewall 很多東西都會有需要的

我放了一份今天做出來的 List 在下面,日後永不更新,所以你要最新的就得
自己做了
http://211.72.210.251/images/CHI..........



你这段代码有两个问题:
一、EOF后面那个“)”一定要换行。
二、通过whois查询ISP部分有问题,中国电信有部分网段注册的是"CHINATELECOM”,比如:
inetnum:      222.222.0.0 - 222.223.255.255
netname:      CHINATELECOM-HE
descr:        CHINANET hebei province network
descr:        China Telecom
还有可能有其它不规范的netname,我觉得这应该把所有netname和descr字段做为查询目标,你那么多sed搞得太复杂了,grep足够了……:-)


 abel 回复于:2005-07-15 10:20:29

引用:原帖由 "Iva" 发表:


你这段代码有两个问题:
一、EOF后面那个“)”一定要换行。
二、通过whois查询ISP部分有问题,中国电信有部分网段注册的是"CHINATELECOM”,比如:
inetnum:      222.222.0.0 - 222.223.255.255
netname:   ..........


EOF 不見得一定要換行,因為後面巳經 end of file 了

至於 CHINATELECOM 與 CHINANET 有什麼差別,我並不清楚(我不住在CN)
如果是一樣的,那在 case 那段補上就好

case $NETNAME in
       CHINANET|CNCGROUP)
               echo $ip/$mask >;>; $NETNAME
       ;;
#如果你還要其他 ISP , 請在這邊加上去即可,透過 apnic whois , 你可以知道他的 NETNAME
       OTHER_NETNAME_here)
       ;;
#如果兩個是一樣的
       CHINATELECOM)
                echo $ip/$mask >;>; CHINANET
       esac 


至於只用 grep 怎麼做,您倒可以試看看怎麼做,我只是提供我的 idea ,並開啟 在 apnic 一般人不知道的 IP 位址發放資訊而以,shell 的做法本來就有很多種可能


 Iva 回复于:2005-07-15 11:29:31

反正我在freebsd下,EOF后面的)不换行就铁定出错……:-)

我的修正版本:
引用:
#!/bin/sh

cat cnnet | while read ip cnt
do

mask=$(bc <<END | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt);
END
)

resultext=`whois -p $ip | grep -e ^netname -e ^descr | cut -f 2 -d ':' | sed 's/ *//'`
echo '----------------------------------------------'
echo $resultext
echo '..............................................'

if echo $resultext | grep -i -e 'chinanet' -e 'chinatel'
  then echo $ip/$mask >;>; CHINANET
fi

if echo $resultext | grep -i -e 'unicom'
  then echo $ip/$mask >;>; UNICOM
fi

if echo $resultext | grep -i -e 'cncgroup'
  then echo $ip/$mask >;>; CNC
fi

echo '----------------------------------------------'
echo ''

done




这个脚本应该手工抓那个apnic的文件,然后:
grep 'CN|ipv4' delegated-apnic-latest | cut -f 4,5 -d '|' | tr '|' ' ' >; cnnet
再执行。


 hsboy 回复于:2005-10-10 02:26:39

abel兄,今天发现您提供的脚本似乎有一点问题,举例来说:
从apnic下载的delegated-apnic-latest中有如下一行:
apnic|CN|ipv4|210.32.0.0|262144|19960904|allocated

按我的理解这一行表示的是210.32.0.0~210.35.255.255的分配。实际上它确实被分配给了中国教育与科研计算机网(CNNIC)。
在您的脚本中会使用:
whois -h 202.12.29.13 210.32.0.0 | sed -e '/./{H;$\!d;}' -e 'x;/netnum/\!d'

这一命令来查询whois以得到它所属ISP,但是实际上whois查询出来的结果却是一个更为细化后的结果:
引用:
inetnum:      210.32.0.0 - 210.32.15.255
netname:      ZJMU-CN
descr:        ~{Uc=-R=?F4sQ'~}
descr:        Zhejiang University (merged former Zhejiang Medical University)
descr:        Hangzhou, Zhejiang 310027, China
country:      CN
admin-c:      HY465-AP
tech-c:       HY465-AP
tech-c:       CER-AP
remarks:      origin AS4538
changed:      hm-changed@net.edu.cn 19961128
changed:      hostmaster@net.edu.cn 20040716
mnt-by:       MAINT-CERNET-AP
status:       ASSIGNED NON-PORTABLE
source:       APNIC


这一段确实是分配给浙江大学的,查询结果没有错误,但是得到的网络名却是“ZJMU"而不是期望中的“CERNET”,这应该与您的本意不一致,请问这是否是一个bug?又该如何解决?谢谢。

类似情况还有
apnic|CN|ipv4|210.78.0.0|8192|19980811|allocated
表示210.78.0.0~210.78.31.255,本来应该属于CNCGROUP,但是在脚本中却查出为SHHY(即210.78.0.0~210.78.0.255的分配)。


 abel 回复于:2005-10-12 14:52:56

引用:原帖由 "hsboy" 发表:

这一段确实是分配给浙江大学的,查询结果没有错误,但是得到的网络名却是“ZJMU"而不是期望中的“CERNET”,这应该与您的本意不一致,请问这是否是一个bug?又该如何解决?谢谢。

类似情况还有
apnic|CN|ipv4|2..........


有些問題你可以在這裏找到
http://bbs.chinaunix.net/forum/viewtopic.php?t=577601&highlight=abel

本文主要針對 cnc/ct , 像 cernet 這種東西有講過,它的 netname 太亂,沒有規則可尋
至於 SHHY 屬 CNC 或原來的 SHHY 這我個人就不知道了,


 我爱臭豆腐 回复于:2005-10-12 16:44:28

引用:原帖由 "abel" 发表:

有些問題你可以在這裏找到
http://bbs.chinaunix.net/forum/viewtopic.php?t=577601&highlight=abel

本文主要針對 cnc/ct , 像 cernet 這種東西有講過,它的 netname 太亂,沒有規則可尋
至於 SHHY 屬 CNC 或原..........



这个确实是对一些人有用.楼主辛苦了. :em02:


 abel 回复于:2005-10-12 17:08:49

引用:原帖由 "我爱臭豆腐" 发表:


这个确实是对一些人有用.楼主辛苦了. :em02:


臭豆腐兄過獎了,在台灣是沒有這方面這種需求,
ISP 間的互連互通雖難免存在瓶頸,但總體而言,速度上都在可以接受的範圍內
對於中國大陸特有之現象實非 Internet 之福,不知增加了多少企業的成本


 我爱臭豆腐 回复于:2005-10-12 17:30:09

引用:原帖由 "abel" 发表:

臭豆腐兄過獎了,在台灣是沒有這方面這種需求,
ISP 間的互連互通雖難免存在瓶頸,但總體而言,速度上都在可以接受的範圍內
對於中國大陸特有之現象實非 Internet 之福,不知增加了多少企業的成本



这样的事情不光光是在大陆实际上在有一些地方也存在这样的问题.成本确实是高了.但是也成全了一些销售和厂家了.当然也锻炼了咱们的技术啊.不然咱们怎么能想出这样的方法啊.你说是不是啊 :em17: 
希望能够这样的日子早日结束.


 wxw2004gl 回复于:2006-03-21 09:39:20

#!/bin/sh
#filename cn_isp.sh;auto get the IP of CHINANET and CNC;
#rm delegated-apnic-latest
#fetch http://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest
grep 'CN|ipv4' delegated-apnic-latest | cut -f 4,5 -d '|' | tr '|' ' ' >> cnnet
cat cnnet | while read ip cnt
do
mask=$(bc <<END | tail -1
pow=32;
define log2(x) {
if (x<=1) return (pow);
pow--;
return(log2(x/2));
}
log2($cnt);
END
)

resultext=`whois -A $ip | grep -e ^netname -e ^descr | cut -f 2 -d ':' | sed 's/ *//'`
echo '................Search for '$ip/$mask' .........................'

if echo $resultext | grep -i -e 'chinanet' -e 'chinatel'
  then echo $ip/$mask >> IP_CHINANET
fi

if echo $resultext | grep -i -e 'unicom'
  then echo $ip/$mask >> IP_UNICOM
fi

if echo $resultext | grep -i -e 'cncgroup'
  then echo $ip/$mask >> IP_CNC
fi

echo '----------------------------------------------'
echo ''

done

cn_isp.rar


 feelone 回复于:2006-06-03 11:51:04

谢谢abel.


从本贴中学到很多东西!


 strongxxxx 回复于:2006-06-06 16:01:33

好程序,收藏,谢谢~




原文链接:http://bbs.chinaunix.net/viewthread.php?tid=577598
转载请注明作者名及原文出处



收藏本页到: