%20%E5%9C%A8%E8%BF%90%E8%A1%8C%E6%97%B6%E7%BB%91%E5%AE%9A%E4%BA%86%20UDP%20%E7%AB%AF%E5%8F%A3%EF%BC%9F.png)
我偶尔会审核计算机上的开放端口,以确保我完全了解我的攻击面。当我今天这样做时,我发现 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 过期而终止的每个位置的信息。