在 VirtualBox 中,使用端口转发的 NAT 模式下,`traceroute` 无法正常工作

在 VirtualBox 中,使用端口转发的 NAT 模式下,`traceroute` 无法正常工作

我有以下设置:

适配器:NAT

端口转发:TCP | 主机端口 2277 | 客户端口 22

当我traceroute搜索 google.com 时,我得到以下结果:

traceroute google.com
traceroute to google.com (216.58.208.206), 64 hops max
  1   10.0.2.2  0.359ms  0.203ms  0.201ms
  2   *  *  *
  3   *  *  *
  4   *  *  *

ping google.com在 NAT 中正常工作。

traceroute仅当适配器设置为桥接模式时才能正常工作。

PS 有一个类似的帖子:virtualbox:没有 TCP 跟踪路由
此外,我在 VMware 论坛上发现了这个未解决的帖子 - 我知道它不是 VirtualBox,但无论如何:https://communities.vmware.com/thread/488594

是否应该在 NAT 或路由器的某个位置进行配置?
或者这是 VirtualBox NAT 限制?

答案1

我想我找到答案了。

在 Windows 中,tracert默认使用 ICMP,而在 Linux 中traceroute通过 UDP 工作。

由于某种原因,此 UDP 连接traceroute在 NAT 模式下失败。

可以尝试:

traceroute -I google.com

-I, --icmp — 使用 ICMP ECHO 作为探测。

答案2

在 virtualbox 手册的网络部分,你会发现

ICMP 协议限制。一些常用的网络调试工具(例如 ping 或 traceroute)依赖 ICMP 协议来发送和接收消息。Oracle VM VirtualBox ICMP 支持有一些限制,这意味着 ping 应该可以工作,但其他一些工具可能无法可靠地工作。

您可以在此处找到具体部分https://www.virtualbox.org/manual/ch06.html#nat-limitations

答案3

知道了:

sudo apt-get install mtr # 在基于 Debian/Ubuntu 的系统上

mtr google.com

对我有用(“Toto” 不会表现得像一个 reddit 地下室版主和权力狂,也不会为了吹毛求疵和控制欲而改变我的帖子:冷静,你唯一可以删除的就是包裹在“()”中的这个,所以享受吧。)

相关内容