网络问题-只有一台机器无法访问另一台机器上的网页

网络问题-只有一台机器无法访问另一台机器上的网页

我试图找出为什么我的 MacBook 无法访问 Raspberry Pi 提供的网页,而本地网络(或外部网络)上的其他计算机在查看网页时没有问题。所以我在 Mac 和 Pi 上都设置了 tcpdump 并捕获了双方的尝试。

我的第一个问题如下:(分两部分)

A) 如果传出数据包出现在 tcpdump 中,是否会出现这种情况保证该数据包实际上已传输? (即,分接点下游是否存在任何可能阻止数据包发送的因素?)

B) 如果预期的传入数据包没有出现在 tcpdump 中,是否会出现这种情况保证从未收到过该数据包? (即,在tcpdump看到接收到的数据包之前,tap点上游是否有任何东西可以丢弃它?)

这些问题来自我对 tcpdump 日志的观察:

  1. Mac 向 Pi 发送一个短数据包
  2. Pi 接收该数据包并将一个短数据包发送回 Mac
  3. Mac 收到该数据包并向 Pi 发送两个数据包;第二个数据包包含浏览器信息等。
  4. Pi 从未收到过这两个数据包。

如果我上面的假设 A 和 B 都是正确的,那么这意味着我的路由器出于某种原因处理 Mac 数据包的方式与我的 WinXP 机器的数据包不同。 (我假设它必须在我的路由器上,因为在外部,无法知道数据包属于内部网络上的哪台机器,因此无法以不同的方式对待不同的机器。)

那么,如果我所有的假设都是正确的,那么对出了什么问题有什么想法,或者我下一步应该看什么?

答案1

A) 如果传出数据包出现在 tcpdump 中,是否可以保证该数据包确实已传输? (即,分接点下游是否存在任何可能阻止数据包发送的因素?)

这意味着数据包从您的网络接口流出,但仅此而已。要知道数据包是否到达目的地,您需要tcpdump在接收端运行。

防火墙可能是罪魁祸首(无论是传出还是传入)。

B) 如果预期的传入数据包没有出现在 tcpdump 中,是否可以保证从未收到该数据包? (即,在tcpdump看到接收到的数据包之前,tap点上游是否有任何东西可以丢弃它?)

是的,如果tcpdump正在观察正确的接口,并且您没有看到任何已确认从外部发送的数据包,那么该数据包可能从未发送过。

默认路由

如果未正确指定默认路由,则数据包将无法到达正确的网关网络设备,从而无法将它们传送到该特定子网上的设备。

我会确保您的 Mac 的默认路由设置正确。

例子

$ route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.1.254   0.0.0.0         UG    0      0        0 wlp3s0
192.168.1.0     0.0.0.0         255.255.255.0   U     9      0        0 wlp3s0

笔记:以上来自我的 Fedora 19 系统,但你的 Mac 应该有类似的东西。确保您的网络的默认路由设置正确。

防火墙

我还要确保没有防火墙妨碍。在 Pi 设备上,您应该能够关闭任何 iptables 相关服务。

$ /etc/init.d/iptables stop

相关内容