转:获取电信,网通,铁通APNIC权威IP数据集[PHP源程序]
本文来自死性不改的博客 http://www.clxp.net.cn 转载请保留此申明!
其实我们可以通过whois查询电信网通铁通的官方权威IP集数据现写个程序,能生成三方IP集,及自动生成路由表
把下面的程序保存为 xxx.php 然后运行 php xxx.php需要PHP的环境,FreeBSD下测试的,在WINDOWS下跑不起来。
原文地址:
http://bbs.routerclub.com/thread-33346-1-1.html
$iplist=file_get_contents(" ftp://ftp.apnic.net/apnic/stats/apnic/delegated-apnic-latest");
$ipsplit=split("[/n]+",$iplist);
foreach($ipsplit as $val){
if(preg_match("/apnic/|CN/|ipv4/|/",$val)){
list($nic,$CN,$ver,$ip,$mask)=preg_split("//|/",$val);
$iparray['set'][]=array("ip"=>$ip,"mask"=>$mask);
}
}
foreach($iparray['set'] as $val){
echo $val['ip']."/t".(32-log($val['mask'],2))."/n";
$flag=GetWhois($val['ip']);
switch($flag){
case "CHINANET":
//$fpc=fopen("CHINANET.lst","a+");
//fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
$CHINANET[]=$val['ip']."/".(32-log($val['mask'],2));
break;
case "CNC":
//$fpc=fopen("CNC.lst","a+");
//fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
$CNC[]=$val['ip']."/".(32-log($val['mask'],2));
break;
break;
case "CRTC":
//$fpc=fopen("CRTC.lst","a+");
//fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
$CRTC[]=$val['ip']."/".(32-log($val['mask'],2));
break;
default:
//$fpc=fopen("OTHERS.lst","a+");
//fwrite($fpc,$val['ip']."/".(32-log($val['mask'],2))."/n");
$OTHERS[]=$val['ip']."/".(32-log($val['mask'],2));
break;
}
}
//去掉重复数据
$CHINANET = array_unique($CHINANET);
$CNC = array_unique($CNC);
$CRTC = array_unique($CRTC);
$OTHERS = array_unique($OTHERS);
//生成IP集表 CHINANET
$MaxCount = count($CHINANET);
$fpc_lst=fopen("CHINANET.lst","a+");
$fpc_routes_rsc=fopen("CHINANET_routes.rsc","a+");
$fpc_address_rsc=fopen("CHINANET_address.rsc","a+");
fwrite($fpc_routes_rsc,"/ ip route rule/n");
fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
for ($iCount=0;$iCount< $MaxCount;$iCount++){
fwrite($fpc_lst,$CHINANET[$iCount]."/n");
fwrite($fpc_routes_rsc,"add dst-address=".$CHINANET[$iCount]." action=lookup table=Route_ChinaNet disabled=no/n");
fwrite($fpc_address_rsc,"add list=ChinaNet address=".$CHINANET[$iCount]." disabled=no/n");
}
fclose($fpc_address_rsc);
fclose($fpc_routes_rsc);
fclose($fpc_lst);
//生成IP集表 CNC
$MaxCount = count($CNC);
$fpc_lst=fopen("CNC.lst","a+");
$fpc_routes_rsc=fopen("CNC_routes.rsc","a+");
$fpc_address_rsc=fopen("CNC_address.rsc","a+");
fwrite($fpc_routes_rsc,"/ ip route rule/n");
fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
for ($iCount=0;$iCount< $MaxCount;$iCount++){
fwrite($fpc_lst,$CNC[$iCount]."/n");
fwrite($fpc_routes_rsc,"add dst-address=".$CNC[$iCount]." action=lookup table=Route_CNC disabled=no/n");
fwrite($fpc_address_rsc,"add list=CNC address=".$CNC[$iCount]." disabled=no/n");
}
fclose($fpc_address_rsc);
fclose($fpc_routes_rsc);
fclose($fpc_lst);
//生成IP集表 CRTC
$MaxCount = count($CRTC);
$fpc_lst=fopen("CRTC.lst","a+");
$fpc_routes_rsc=fopen("CRTC_routes.rsc","a+");
$fpc_address_rsc=fopen("CRTC_address.rsc","a+");
fwrite($fpc_routes_rsc,"/ ip route rule/n");
fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
for ($iCount=0;$iCount< $MaxCount;$iCount++){
fwrite($fpc_lst,$CRTC[$iCount]."/n");
fwrite($fpc_routes_rsc,"add dst-address=".$CRTC[$iCount]." action=lookup table=Route_CRTC disabled=no/n");
fwrite($fpc_address_rsc,"add list=CRTC address=".$CRTC[$iCount]." disabled=no/n");
}
fclose($fpc_address_rsc);
fclose($fpc_routes_rsc);
fclose($fpc_lst);
//生成IP集表 OTHERS
$MaxCount = count($OTHERS);
$fpc_lst=fopen("OTHERS.lst","a+");
$fpc_routes_rsc=fopen("OTHERS_routes.rsc","a+");
$fpc_address_rsc=fopen("OTHERS_address.rsc","a+");
fwrite($fpc_routes_rsc,"/ ip route rule/n");
fwrite($fpc_address_rsc,"/ ip firewall address-list/n");
for ($iCount=0;$iCount< $MaxCount;$iCount++){
fwrite($fpc_lst,$OTHERS[$iCount]."/n");
fwrite($fpc_routes_rsc,"add dst-address=".$OTHERS[$iCount]." action=lookup table=Route_OTHERS disabled=no/n");
fwrite($fpc_address_rsc,"add list=ChinaNet address=".$OTHERS[$iCount]." disabled=no/n");
}
fclose($fpc_address_rsc);
fclose($fpc_routes_rsc);
fclose($fpc_lst);
function GetWhois($IP){
$rootwhois = 'whois.apnic.net';
$buffer1 = ReadSocket($rootwhois,$IP);
$flag="";
$buffer_result=nl2br($buffer1);
if(preg_match("/CHINANET/",$buffer_result)){
$flag="CHINANET";
return $flag;
}
if(preg_match("/CNC/",$buffer_result)){
$flag="CNC";
return $flag;
}
if(preg_match("/CRTC/",$buffer_result)){
$flag="CRTC";
return $flag;
}
if(!preg_match("/CHINANET|CRTC|CNC/",$buffer_result)){
$flag="OTHERS";
return $flag;
}
}
function ReadSocket($whois,$ip)
{
$buffer = '';
if (!$sock = fsockopen( $whois, 43, $errNum, $errStr, 20))
{
echo "Sorry,Can't fsockopen it";
}
else
{
fputs($sock,"$ip/n");
//$buffer = fread($sock, 8192);
while(!feof($sock)) $buffer.=fgets($sock, 8192);
fclose($sock);
}
return $buffer;
}
?>
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
