Raspberry Pi无法通过wifi桥接器ping路由器或Internet地址


10

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

raspberry pi可以ping(并可以被ping通)本地子网上的任何其他设备,包括直接连接到其中的“路由器2”,并且能够从路由器1获取DHCP,但是当我尝试ping路由器1,我收到“目标主机不可达”,如果尝试对google.com,superuser.com等互联网上的任何东西执行ping操作,我同样会得到“目标主机不可达”。

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

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

这是路由器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

192.168.0.107是Raspberry Pi的地址:

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)

这是路由表:

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

这是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.

其他一切都工作正常,但是我已经尝试过使用两个不同的图像(Raspbmc和raspbian)和两个不同的树莓pis对该rapsberry pi进行配置,但是没有任何配置。直接连接到路由器1时,已经测试了raspbian映像是否可以正常工作。这个问题与两年前这个未解决的问题非常相似,不同的是,在那种情况下,他似乎正在为无法连接的设备使用wifi,并且他实际上正在获得一些断断续续的连接。ping响应也来自路由器,而不是设备。是什么导致此问题?

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

更新:我确定了一件可能有趣的事情,那就是当MAC地址克隆功能关闭时,中继器网桥停止工作-唯一能ping覆盆子pi的是路由器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

显然,这是人们使用MAC地址克隆解决的已知问题。我不太确定为什么随机MAC地址会引起问题,以及MAC地址克隆会带来哪些其他后果。


如果您有到路由器2的无线客户端,是否可以从树莓派到无线客户端ping通?
MariusMatutiae

是。您可以从路由器1或路由器2上的无线客户端ping覆盆子
Paul

在路由器1上,您是否启用了DHCP或dnsmasq?
MariusMatutiae

DHCP是的,我不知道dnsmasq。路由器1上的webUI中没有设置。–
Paul

这就是NAT很烂的原因。您应该真正使用WDS。(每个设备似乎都具有相同的MAC地址,因为使用NAT来说服接入点正在与其客户端进行通信。)
David Schwartz 2014年

Answers:


1

+1以获取详细的问题描述。

正如我在你开的线程上建议树莓派,你可以,如果你的主路由器在RPI的ARP表中列出的检查:arp -n或者,如果您已经安装了iproute2的:ip neigh

如果需要,您可以使用以下命令将路由器添加到arp缓存中:arp -s <ROUTER_IP> <ROUTER_MAC>看看是否仍然存在问题

您还可以通过嗅探所有ARP数据包来检查RPi是否按预期发送了ARP请求。在您的RPi上,运行:tcpdump arp

您还可以在DD-WRT中继器和连接到路由器1的任何其他主机上运行相同的命令。广播ARP请求时,您应该在局域网上看到它们。


1

安装新的Wifi中继器时,我遇到了同样的问题。受损的解决方案是为Raspberry Pi设置静态IP。


0

这是一个棘手的问题,因为您的系统似乎配置正确。因此,我将不带冗长的检查选项列表,而是为您提供一些测试对象的想法。

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

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

 ping -I 192.168.0.107 192.168.0.1
 ping -I eth0          192.168.0.1

这两个命令略有不同,均应尝试。希望它们会给出不同的输出,这将指示故障。

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

  auto eth0
  iface eth0 inet dhcp

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

  ifdown eth0
  ifup eth0

然后再次dhclient。

说完一切后,应该记住,它不一定是软件问题。如果您转到此网页,您可能会阅读以下经验:

我订购了另一个树莓派,只是重新成像了SD卡,然后在其中启动,互联网工作正常。我把sd卡拿出来放在旧的树莓派上,并连接了相同的电缆和以太网线,但仍然无法正常工作。

另外,您应记住电缆可能会出现问题。电缆不起作用/不起作用。RX或TX中的问题可能会导致许多帧丢失,信号质量差等。在这种情况下,TCP之类的协议的性能要比ICMP或UDP好,因为它们会重新传输目标未接收到的数据包,给您错误的印象,认为连接正常。当然,这种错误印象会一直持续到您测量连接速度为止。


对两个ping命令的响应之间没有区别。我上面粘贴的一样。在raspbmc情况下,/ etc / network / interfaces文件为空,在raspbian情况下为“ auto lo”“ iface lo inet loopback”“ iface eth0 inet dhcp”。两种情况下,重新启动接口均不执行任何操作。这绝对不是与树莓派一个问题,因为我有两个不同的树莓派,无论其工作时插入路由器2,但两者的工作时,直接插到路由器1
保罗

-1

我前段时间遇到过类似的问题。我的解决方案是/etc/resolv.conf通过添加文件nameserver 8.8.4.4并使用重新启动界面来编辑 文件/etc/init.d/networking restart。这个对我有用。


OP将其Destination Host Unreachable作为错误提到,这似乎表明DNS可以正常工作。DNS错误会产生类似cannot resolve或的结果Unknown host
jornane
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.