我偶尔会审核计算机上的开放端口,以确保我完全了解我的攻击面。当我今天这样做时,我发现 mtr 正在侦听高 UDP 端口(每次运行时该端口似乎都会改变)。有谁知道为什么会这样?我简要浏览了手册并进行了一些谷歌搜索,但我找不到对此的讨论
重现步骤:
mtr 8.8.8.8
在一个窗口中运行,在另一个窗口中运行sudo lsof -i udp | grep mtr
更新:
为了澄清我的意思,我的监听 UDP 端口,lsof 的输出如下所示
mtr 31791 user 8u IPv4 221685 0t0 UDP *:39850
答案1
简短的回答:这就是traceroute 的工作原理。
长答案:traceroute 是通过发送初始 TTL 为 1 的 UDP 数据包(大多数 Traceroute 程序默认情况下,通常可以在命令行上修改为使用 TCP 或 ICMP)来进行的,并且它们单调增加 TTL 值。这使得原始发送者能够在 TTL 沿途过期时从每个后续路由器获取“数据包超时消息”,最终(希望)返回“数据包使其安全可靠!”。原始发送者(mtr
在本例中)只是侦听这些数据包过期消息,并打印跟踪由于 TTL 过期而终止的每个位置的信息。