Raspberry pi 无法通过 wifi 网桥 ping 路由器或互联网地址

Pau*_*aul 10 networking router dd-wrt raspberry-pi

我最近使用本教程的“Atheros”版本(我们将其称为“路由器 2”)设置了一个运行 DD-WRT 的 WNR2000v3 路由器作为一种中继桥接器,它正在重复一个 Medialink Wireless-N 路由器(我们将将其称为“路由器 1”)。这对于通过 wifi 和通过以太网直接连接时的我的 android 手机和 Windows 计算机都非常有效,但是当我插入 Raspberry pi 时,无论是在运行 Raspbian (wheezy) 还是 Raspbmc 时,我都无法获得本地网络之外的任何连接。

树莓派可以 ping(并被 ping)本地子网上的任何其他设备,包括它直接连接的“路由器 2”,并且它能够从路由器 1 获取 DHCP,但是当我尝试并ping 路由器 1,我得到“目标主机无法访问”,如果我尝试 ping 互联网上的任何东西,比如 google.com、superuser.com,我同样会得到“目标主机无法访问”。

这是网络上的另一台计算机:

ping 192.168.0.100
PING 192.168.0.100 (192.168.0.100) 56(84) bytes of data.
64 bytes from 192.168.0.100: icmp_req=1 ttl=127 time=38.7 ms
64 bytes from 192.168.0.100: icmp_req=2 ttl=127 time=1.67 ms
64 bytes from 192.168.0.100: icmp_req=3 ttl=127 time=1.73 ms
64 bytes from 192.168.0.100: icmp_req=4 ttl=127 time=3.56 ms
--- 192.168.0.100 ping statistics ---
4 packets transmitted, 4 received, 0% packet loss, time 3003ms
rtt min/avg/max/mdev = 1.672/11.418/38.705/15.772 ms
Run Code Online (Sandbox Code Playgroud)

这是路由器1:

ping 192.168.0.1
PING 192.168.0.1 (192.168.0.1) 56(84) bytes of data.
From 192.168.0.107 icmp_seq=1 Destination Host Unreachable
From 192.168.0.107 icmp_seq=2 Destination Host Unreachable
From 192.168.0.107 icmp_seq=3 Destination Host Unreachable
From 192.168.0.107 icmp_seq=4 Destination Host Unreachable
From 192.168.0.107 icmp_seq=5 Destination Host Unreachable
From 192.168.0.107 icmp_seq=6 Destination Host Unreachable
--- 192.168.0.1 ping statistics ---
8 packets transmitted, 0 received, +6 errors, 100% packet loss, time 7007ms
pipe 3
Run Code Online (Sandbox Code Playgroud)

192.168.0.107 是树莓派的地址:

ifconfig
eth0      Link encap:Ethernet  HWaddr xx:xx:xx:xx:db:c9
          inet addr:192.168.0.107  Bcast:192.168.0.255  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:3753 errors:0 dropped:0 overruns:0 frame:0
          TX packets:1262 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1000
          RX bytes:595127 (581.1 KiB)  TX bytes:112407 (109.7 KiB)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          UP LOOPBACK RUNNING  MTU:16436  Metric:1
          RX packets:285 errors:0 dropped:0 overruns:0 frame:0
          TX packets:285 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:27703 (27.0 KiB)  TX bytes:27703 (27.0 KiB)
Run Code Online (Sandbox Code Playgroud)

这是路由表:

sudo route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         192.168.0.1     0.0.0.0         UG    0      0        0 eth0
192.168.0.0     0.0.0.0         255.255.255.0   U     0      0        0 eth0
Run Code Online (Sandbox Code Playgroud)

这是 DHCP 请求:

sudo dhclient -v eth0
Internet Systems Consortium DHCP Client 4.2.2
Copyright 2004-2011 Internet Systems Consortium.
All rights reserved.
For info, please visit https://www.isc.org/software/dhcp/

Listening on LPF/eth0/xx:xx:xx:xx:db:c9
Sending on   LPF/eth0/xx:xx:xx:xx:db:c9
Sending on   Socket/fallback
DHCPREQUEST on eth0 to 255.255.255.255 port 67
DHCPACK from 192.168.0.1
RTNETLINK answers: File exists
bound to 192.168.0.107 -- renewal in 274691 seconds.
Run Code Online (Sandbox Code Playgroud)

其他一切都很好,但我已经尝试过这个 rapsberry pi 有两个不同的图像(Raspbmc 和 raspbian)和两个不同的树莓派,但没有配置工作。当直接连接到路由器 1 时,raspbian 映像已被测试为工作正常。这个问题似乎与两年前的这个未回答的问题非常相似,除了在这种情况下,他似乎正在为连接失败的设备使用 wifi,并且他实际上得到了一些断断续续的连接。还有 ping 响应来自路由器,而不是设备。什么可能导致这个问题?

编辑:我还应该注意到,两个不同的树莓派有不同的 IP 地址,其中一个是 IP-MAC 绑定的,我在 DHCP 表中没有看到 IP 冲突,但每个都有相同的问题。

更新:我确定了一件可能有趣的事情,那就是当 MAC 地址克隆被关闭时,中继桥停止工作 - 唯一可以 ping 树莓派的是路由器 2,并且没有连接(或访问路由器1) 从任何只连接到路由器 2 的东西 - 包括 Windows 机器。但是,被克隆的 mac 地址与路由器 2 的接口实际使用的 mac 地址相同(根据“状态”页面)。我已经对路由器 1 和路由器 2 进行了两次电源循环,但没有任何区别。我不明白为什么 MAC 地址克隆在这里是相关的。关闭 MAC 地址克隆后,当我 ssh 进入路由器本身时,路由器可以 ping Raspberry pi,但不能 ping 路由器 1。

另一件小事是,当 MAC 地址克隆打开并且我实际上可以 ping 网络上的其他计算机时,arping 会为响应 ping 的每个设备返回相同的 mac 地址。

更新 2:通过检查 syslog 值,我发现有此与 MAC 地址相关的错误消息:

Jan  1 00:00:08 Router 2 kern.err kernel: [    6.770000] ath: eeprom contains invalid mac address: ff:ff:ff:ff:ff:ff
Jan  1 00:00:08 Router 2 kern.err kernel: [    6.780000] ath: random mac address will be used: fa:55:da:33:19:a9
Run Code Online (Sandbox Code Playgroud)

显然,这是人们正在使用 MAC 地址克隆解决的一个已知问题。我不完全确定为什么随机 MAC 地址是一个问题,以及 MAC 地址克隆有什么其他后果。

Mar*_*iae 0

这是一个很难诊断的问题,因为您的系统看起来配置正确。因此,我不会提供冗长的检查选项列表,而是会给您一些要测试的想法。

我会尝试的一件事是将默认网关更改为路由器 2,而不是路由器 1。

另一件事是强制 ping 绑定到接口 eth0:

 ping -I 192.168.0.107 192.168.0.1
 ping -I eth0          192.168.0.1
Run Code Online (Sandbox Code Playgroud)

这两个命令略有不同,都应该尝试一下。希望他们会给出不同的输出,这将表明存在故障。

然后我会检查 /etc/network/interfaces:它是否包含几行,例如

  auto eth0
  iface eth0 inet dhcp
Run Code Online (Sandbox Code Playgroud)

然后我会尝试重新启动界面:

  ifdown eth0
  ifup eth0
Run Code Online (Sandbox Code Playgroud)

然后再次 dhclient。

总而言之,人们应该记住,这不一定是软件问题。如果您访问此网页,您可能会读到以下体验:

我订购了另一个树莓派,然后重新镜像了 SD 卡,在该卡上启动,互联网工作正常。我取出 SD 卡并将其放入旧的树莓派中,并连接相同的电缆和以太网线,但它仍然无法工作......

另外,您应该记住电缆可能存在问题。电缆不是工作/不是工作对象。RX 或 TX 中的问题可能会导致许多帧丢失、信号质量较差等。在这种情况下,TCP 等协议的表现比 ICMP 或 UDP 更好,因为它们会重新传输目标尚未收到的数据包,从而给您带来正常工作连接的错误印象。当然,这种错误的印象一直持续到您测量连接速度为止。