我有以下设置:
适配器: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 地下室版主和权力狂,也不会为了吹毛求疵和控制欲而改变我的帖子:冷静,你唯一可以删除的就是包裹在“()”中的这个,所以享受吧。)