总结

总结

总结

我有两个本地网络(一个是 VirtualBox 内部 LAN)和一个充当它们之间路由器的 Win2K VM。我可以从一个网络 ping 通另一个网络的主机,但反之则不行。

概括

我正在运行 VirtualBox 4.3.6,在内部的网络 (10.0.42.x)。所有虚拟机都是 Windows 2000 Server SP4(不是我的首选,但可以凑合着用)。我的笔记本电脑运行的是 Windows 7 Home Premium。我正在尝试配置其中一台服务器以在 VirtualBox 的内部网络和物理 LAN 之间路由(192.168.1.x)我将其称为外部的这个问题的答案是肯定的。路由器有第二个桥接网卡(因此看起来好像是在外部 LAN 上)。

在任何人询问之前(他们不可避免地会问),这是一个学习练习。

现在

  • 路由器虚拟机可以 ping 两个网络中的任何目的地。
  • 我的笔记本电脑可以 ping 虚拟网络中的任何客户机。我确实必须手动添加路由才能实现此目的:route add 10.0.42.0 MASK 255.255.255.0 192.168.1.42。路由器似乎正常工作,以便从进入内部网络。
  • 访客可以 ping 内部网络中的任何目标以及路由器的外部接口。但是,他们无法访问外部网络中的任何主机,例如我的笔记本电脑或 DSL 路由器(它们都不会阻止 ping 请求)。

Ping 请求失败,Request timed out.结果为tracert

跟踪到 192.168.1.69 的路由,最多 30 个跳数

  1 <10毫秒 <10毫秒 <10毫秒 10.0.42.1
  2 * * * 请求超时。
  3 * * * 请求超时。
  ...

192.168.1.69我的笔记本电脑在哪里10.0.42.1?是路由器外部接口的地址。这说明路由器配置有问题,但我所做的只是为 LAN 路由配置 RRAS 并保持原样,但这并没有阻止我 ping进入内部网络。

思考我可以排除

  • 防火墙(涉及的每个主机都会响应来自某处)。
  • 错别字(为了避免错误,我大量复制粘贴,甚至到了偏执的地步)。

我尝试过的方法

  • 删除并重新配置 RRAS。
  • 为访客添加了默认路线(route add 192.168.1.0 MASK 255.255.255.0 10.0.42.1)。
  • 向路由器的 NIC 添加了默认网关(没想到它会有帮助,而且事实也确实如此)。

具体内容

更多详细信息请咨询;这个问题可能已经够长了。

笔记本电脑
IP 192.168.1.69/24
默认网关(DSL 路由器)

路由器
IP 192.168.1.42/24
IP 10.0.42.1/24

客人
IP 10.0.42.128/24
默认网关 10.0.42.1

路由表

我已经包含了无法 ping 通自己网络外部的访客的路由表(这实际上是另一个访客(10.0.42.254),但和路由器之外的所有客人一样,它也有同样的问题):

网络目标网络掩码网关接口指标
          0.0.0.0 0.0.0.0 10.0.42.1 10.0.42.254 1
        10.0.42.0 255.255.255.0 10.0.42.254 10.0.42.254 1
      10.0.42.254 255.255.255.255 127.0.0.1 127.0.0.1 1
   10.255.255.255 255.255.255.255 10.0.42.254 10.0.42.254 1
        127.0.0.0 255.0.0.0 127.0.0.1 127.0.0.1 1
      192.168.1.0 255.255.255.0 10.0.42.1 10.0.42.254 1
        224.0.0.0 224.0.0.0 10.0.42.254 10.0.42.254 1
  255.255.255.255 255.255.255.255 10.0.42.254 10.0.42.254 1
默认网关:10.0.42.1

答案1

当一个主机成功 ping 通另一个主机时:

ICMP Echo Request发起者组装数据包,查阅路由表,选择接口,然后将数据包发送到较低的 OSI 层,到达目标主机。

目标主机接收一个ICMP Echo Request发往自身的 IP 地址,记下请求者的 IP 地址,并制定一个ICMP Echo Reply,查阅其路由表,选择一个接口,然后将该 IP 地址发Reply回给请求者。

请求者收到ICMP Echo Reply,记录完成发送-接收循环所花费的时间,并将其记录给用户。

此时,一个数据包已从 A 成功传输到 B,另一个数据包也已从 B 成功传输到 A。

这证实了 A 可以到达 B,并且 B 可以到达 A。

事情本该就此结束了,但是由于某种原因,B 无法向 A 发送,或者 A 无法向 BEcho Request发送。Echo Reply

验证 A 成功 ping B 时使用的 IP 地址,并确保它们就是 B 尝试 ping A 时使用的 IP 地址。

是不是程序出了问题ping?两个系统可以通过 TCP 互相访问吗?(telnet B 25 连接被拒绝;挂起意味着数据在传输过程中丢失。

相关内容