在 Ubuntu 14.04 上将子网请求从 wlan0 路由到 eth0

在 Ubuntu 14.04 上将子网请求从 wlan0 路由到 eth0

我的 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

相关内容