我的 Raspberry Pi 通过以太网连接到我的 Ubuntu 14.04 机器(eth0 上的 192.168.1.0/24)。
该机器通过 Fritz Box WLAN 路由器(wlan0 上的 192.168.0.0/24)连接到互联网。
网络拓扑图:
为了在我的树莓派上访问互联网,我已成功在 Ubuntu 机器上启用 IP 转发 (net.ipv4.ip_forward),并将其 eth0 IP 192.168.1.1 配置为树莓派上的默认网关。在 Fritz Box 上,我通过网关 192.168.0.2 添加静态 IP 路由到 192.168.1.0/24 来注册子网(请参阅http://en.avm.de/nc/service/fritzbox/fritzbox-7390/knowledge-base/publication/show/581_Configuring-a-static-IP-route-in-the-FRITZ-Box/)。Fritz Box 运行 DHCP 服务器,但它配置为始终为我的 Ubuntu 服务器提供相同的 IP。
从 Ubuntu 机器和树莓派,我可以 ping 通并访问所有内容(互联网、笔记本电脑、Fritz Box)。但是从笔记本电脑和 WLAN 中的其他设备,我无法访问树莓派。
树莓派上的路由表:
Kernel IP routing table
Destination Gateway Genmask Flags Metric Ref Use Iface
0.0.0.0 192.168.1.1 0.0.0.0 UG 0 0 0 eth0
192.168.1.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
Ubuntu机器上的路由表:
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 wlan0
192.168.0.0 0.0.0.0 255.255.255.0 U 9 0 0 wlan0
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
笔记本电脑(和其他 WLAN 客户端)上的路由表:
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 1024 0 0 wlp2s0
192.168.0.0 0.0.0.0 255.255.255.0 U 0 0 0 wlp2s0
192.168.0.0 0.0.0.0 255.255.255.0 U 303 0 0 wlp2s0
笔记本电脑的A tracepath 192.168.1.2
(树莓派)返回:
1?: [LOCALHOST] pmtu 1500
1: 192.168.0.2 5.174ms
1: 192.168.0.2 4.743ms
2: no reply
3: no reply
4: no reply
^C
而 a ping 192.168.1.1
(eth0 上的 Ubuntu 服务器) 运行正常:
PING 192.168.1.1 (192.168.1.1) 56(84) bytes of data.
64 bytes from 192.168.1.1: icmp_seq=1 ttl=64 time=2.72 ms
64 bytes from 192.168.1.1: icmp_seq=2 ttl=64 time=3.72 ms
64 bytes from 192.168.1.1: icmp_seq=3 ttl=64 time=3.54 ms
--- 192.168.1.1 ping statistics ---
3 packets transmitted, 3 received, 0% packet loss, time 2004ms
rtt min/avg/max/mdev = 2.724/3.329/3.720/0.439 ms
因此它实际上是按照正确的方式运行的,但它卡在了 Ubuntu 机器上。
我已经尝试配置 NAT 规则,但我认为它们没有必要,因为 iptables 已配置为允许所有内容(Fritz 框上已运行阻止防火墙)并且已启用 IP 转发。我甚至尝试在两个接口上启用 proxy_arp,但没有成功。
此外,我找到了用于桥接 wlan0 和 eth0 的工具parprouted
,但运行它时我得到了无效的 ARP 响应(树莓派 IP 地址的两个 MAC 地址)——用 Wireshark 进行追踪。
为什么我无法从 WLAN 网络访问我的树莓派?
答案1
您的问题已经解决了吗?
在你的 ubuntu 机器上尝试这个路线:
192.168.1.0 192.168.1.1 255.255.255.0 U 1 0 0 eth0
代替
192.168.1.0 0.0.0.0 255.255.255.0 U 1 0 0 eth0
我认为那台机器上可能存在路由循环...;)
最好的,
JB
答案2
这应该会在您的机器上设置端口转发,尽管您可能只需要使用 iptables。
echo 1 > /proc/sys/net/ipv4/ip_forward