traceroute -A
命令是如何工作的?程序如何查找ASN?查询依赖于哪些协议或数据库?我可以重新创建-A
选项吗?
我正在使用这个版本:Modern traceroute for Linux, version 2.0.18, Jun 30 2012
.
traceroute -A
命令是如何工作的?程序如何查找ASN?查询依赖于哪些协议或数据库?我可以重新创建-A
选项吗?
我正在使用这个版本:Modern traceroute for Linux, version 2.0.18, Jun 30 2012
.
对每个 IP 返回值都进行 whois 查询。
这是一个手动示例。获取 networkengineering.stackexchange.com 的 IP 之一
> host networkengineering.stackexchange.com
networkengineering.stackexchange.com has address 104.16.12.128
networkengineering.stackexchange.com has address 104.16.14.128
networkengineering.stackexchange.com has address 104.16.15.128
networkengineering.stackexchange.com has address 104.16.13.128
networkengineering.stackexchange.com has address 104.16.16.128
并检查IP属于哪个AS:
> whois 104.16.12.128 | grep -i origin
OriginAS: AS13335
Whois 输出更多信息。该协议在RFC3912 中指定
请注意,区域注册管理机构的 whois 输出有所不同,并非所有注册机构都会提供来源。所以traceroute -A 不会提供所有地址的AS 信息。
--as-path-lookups 基于 RADB IRR 数据,这些数据很可能不正确/缺失。
traceroute/as_lookups.c in traceroute-2.1.0 Dmitry Butskoy
/*
Copyright (c) 2006, 2007 Dmitry Butskoy
<buc@citadel.stu.neva.ru>
License: GPL v2 or any later
See COPYING for the status of this software.
*/
#define DEF_RADB_SERVER "whois.radb.net"
#define DEF_RADB_SERVICE "nicname"
...
if (!ra_addr.sa.sa_family) {
const char *server, *service;
struct addrinfo *res;
int ret;
server = getenv ("RA_SERVER");
if (!server) server = DEF_RADB_SERVER;
service = getenv ("RA_SERVICE");
if (!service) service = DEF_RADB_SERVICE;
ret = getaddrinfo (server, service, NULL, &res);
if (ret) {
fprintf (stderr, "%s/%s: %s\n", server, service,
gai_strerror(ret));
exit (2);
}
memcpy (&ra_addr, res->ai_addr, res->ai_addrlen);
freeaddrinfo (res);
}
...
错误信息示例
* 203.208.171.202 (203.208.171.202) [AS19905] 180.570 ms 203.208.153.254 (203.208.153.254) [AS19905] 187.246 ms
基于 RADB IRR
$ whois -h whois.radb.net 203.208.171.202
route: 203.208.171.0/24
descr: AC_SINGTEL
origin: AS19905
mnt-by: MAINT-AS7786
changed: wan.engineering@neustar.biz 20150730 #02:53:10Z
source: RADB
这个故事的寓意是,没有办法在任何静态数据库(IRR、注册表等)中可靠地获取路由的源 AS。根据您在 DFZ 中的有利位置,原点很可能会有所不同。