如何在命令行上将 IPv4 地址转换为 ASN(自治系统编号)?

如何在命令行上将 IPv4 地址转换为 ASN(自治系统编号)?

给定一个 IPv4 地址,如何仅使用命令行工具判断哪个 ASN(自治系统编号)托管该地址?

答案1

找出谁是现在宣布一个地址,您必须查看 BGP 连接的路由器(例如 routeservers.org 上的公共路由器)的路由表,或者查询定期收集公告的在线数据库。

常用的服务是威尔士 IP 到 ASN 映射数据库,可通过各种协议访问,如 DNS(用于自动查询)、HTTP 或 WHOIS(仅用于手动查询):

$ dig +short google.com
172.217.x.y

$ dig +short -t TXT y.x.217.172.origin.asn.cymru.com
"15169 | 172.217.0.0/16 | US | arin | 2012-04-16"

$ whois -h whois.cymru.com 172.217.x.y
AS      | IP               | AS Name
15169   | 172.217.x.y      | GOOGLE, US

另一项服务是RIPE RISwhois(与常规 RIPE WHOIS DB 不同):

$ whois -h riswhois.ripe.net 172.217.x.y
...
route:        172.217.0.0/16
origin:       AS15169
descr:        GOOGLE, US
lastupd-frst: 2019-10-31 10:45Z  198.32.243.219@rrc16
lastupd-last: 2020-03-05 23:53Z  80.81.192.244@rrc12
...

(请注意,AS 位置并不总是与设备的物理位置相对应;它可能位于不同的国家/地区。在此示例中,地址范围位于不同的大陆完全。)

请注意,在某些情况下,可能会有多个 AS 宣布相同的前缀,并且哪个 AS 可见可能取决于您(或数据库)的位置。尝试查询 AS 编号192.88.99.1

甚至可能是某个 AS 宣布了该地址,不是应该宣布它(BGP 劫持)。要找出谁是预计公布地址,查询路由数据库,例如 RADb 或 RIPE WHOIS 服务器。

$ whois -T route -h whois.ra.net 172.217.x.y
route:      172.217.169.0/24
descr:      Google
origin:     AS15169
...

答案2

您可以使用另一个数据库来确定这一点知识产权指南,每 8 小时更新一次。例如,您可以使用以下curl命令确定宣布 8.8.8.8 的 ASN:

$ curl -sL https://ip.guide/8.8.8.8 | jq .network.autonomous_system.asn
15169

(请注意,这jq不是必需的,但可以从响应中提取 JSON 的特定部分)

相关内容