如果未成熟的ncc管理的IP地址块,如何检查国家/地区名称?

问题描述 投票:0回答:1

我正在检查成熟的ncc db中是否存在IP地址的国家/地区代码,以防止来自某些国家的注册。

/**
 * Get country code from Ip.
 * @input IP number
 * @output Country Code.
*/

function parse_ip($ip){
    $DATABASE = "whois.ripe.net";
    $info = '' ;
    $sk= @fsockopen($DATABASE, 43, $errno, $errstr, 1) or  error_log('Unable to connect to whois server');
    if(!empty($sk)){
        @fputs ($sk, $ip ."\r\n") or error_log ('Unable to send data to whois server in act_functions.inc from parse_ip()');
        while (!feof($sk)){
          $info.= fgets ($sk, 2048);
        }       
        preg_match( '/^\x20*country\x20*:\x20*(\w{2})/im',$info, $country_code);
        return $country_code[1];
    } 
    else return false;
}

有些地址似乎不受他们管理,这怎么可能?

inetnum:         135.197.0.0 - 136.142.255.255
netname:         NON-RIPE-NCC-MANAGED-ADDRESS-BLOCK
descr:           IPv4 address block not managed by the RIPE NCC

https://apps.db.ripe.net/db-web-ui/#/query?bflag=true&dflag=false&rflag=false&searchtext=136.0.0.150&source=RIPE#resultsSection

如果不对块进行管理,如何实现替代方案?

security dns ip whois
1个回答
0
投票

RIPE数据库不提供由另一个区域Internet注册表(RIR)管理的IP地址的详细信息,在本例中为ARIN。您可以尝试使用whois.iana.org作为WHOIS源来找出相应的RIR(并执行第二次WHOIS查找,这次是对RIR的查找)。但是请记住,您当前正在解析的country属性是not reliable at RIPE,因为“从未指定该国家代表什么。它可以是跨国公司总部的位置,也可以是服务器中心所在的位置,也可以是最终用户的家。因此,它不能以任何可靠的方式用于将IP地址映射到国家/地区。另一方面,如果您要查找IP地理位置,则使用现有的和维护的地理位置数据库而不是重新设计轮子可能会有所帮助,因为WHOIS服务也有查找限制。

© www.soinside.com 2019 - 2024. All rights reserved.