我尝试过获取 ASN 号下的 IP 列表,例如 AS8167,但我没有这样的运气。我看到 cymru 团队有一个 ASN 的 IP,但这与我实际需要的相反。
RADb 有一个提供此功能的 whois 服务器。它包含的信息不仅仅是 IP 块,因此如果您只对这些感兴趣,则需要 grep 来查找这些信息:
$ whois -h whois.radb.net -- '-i origin AS8167' | grep -Eo "([0-9.]+){4}/[0-9]+" | head
189.11.64.0/18
189.31.0.0/16
189.72.128.0/18
189.73.192.0/18
189.74.0.0/18
189.74.64.0/18
189.64.0.0/11
189.0.0.0/11
187.52.192.0/18
187.52.0.0/17
Hurricane Electric 有一项专门为此目的和其他知识产权相关目的而提供的服务。
您可以使用 IP Guide 查找 ASN 公布的 IP,如下所示:
curl -sL https://ip.guide/as16509 | jq .routes
这将返回类似以下内容:
{
"v4": [
"1.44.96.0/24",
"2.57.12.0/24",
...
],
"v6": [
"2001:4f8:b::/48",
"2001:4f8:11::/48",
]
}
(这里不需要 jq,但它有助于遍历基于 JSON 的响应)
或者如果您正在寻找一种在 PHP 中执行此操作的方法:
<?php
// Initialize cURL session
$curl = curl_init('https://ip.guide/as16509');
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$response = curl_exec($curl);
curl_close($curl);
$data = json_decode($response, true);
if (isset($data['v4']) && isset($data['v6'])) {
echo "IPv4 Routes:\n";
foreach ($data['v4'] as $route) {
echo $route . "\n";
}
echo "\nIPv6 Routes:\n";
foreach ($data['v6'] as $route) {
echo $route . "\n";
}
} else {
echo "Error: Invalid response from API";
}
?>