连接到由 Raspberry Pi 控制的不同网络上的服务器

连接到由 Raspberry Pi 控制的不同网络上的服务器

我真的不知道该如何表述这个问题,但这是我的设置。我有路由器,并且通过无线方式将树莓派连接到路由器。然后树莓派将连接从 wifi 隧道传输到以太网,这样我就可以通过交换机上的以太网连接设备。那么我如何才能 A 获取连接到该交换机的服务器并从我的计算机访问它,或者 B 获取该交换机上的设备以访问我主网络上的服务器。

我的网络

如果我通过 SSH 进入 Raspberry Pi,我可以 ping 通 192.168.0.* 和 192.168.1.*,但无法从 PC ping 通 192.168.1.*。但是,如果我通过 SSH 进入 Raspberry Pi,然后从那里通过 SSH 进入 Pi 服务器,我实际上可以 ping 通位于 192.168.0.3 的本地计算机。

那么我该如何才能从我的电脑访问在 Pi 服务器上运行的 Web 服务器?或者更好的是,让网络流量从我的服务器传输到我的 Xbox?

我真的希望我能解释得足够好,因为我花了很长时间才弄清楚这一点。

答案1

所以显然你所说的“隧道连接”是允许 Pi 的两个接口连接到的网络能够通过 Pi 相互通信,这意味着你想让 Pi 成为路由器/网关。

为此,您需要启用 IP 转发:

sysctl -w net.ipv4.ip_forward=1

要使设置持久,请执行以下操作:

echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf

或者,如果您使用 systemd-networkd 管理接口,则可以添加IPForward=ipv4到任何.network文件。

除非 Pi 上有防火墙(例如 iptables)规则来限制所有/某些转发流量,否则来自任何接口的流量都将根据路由转发到另一个接口。

如果 Pi 尚未成为192.168.1.0/24主机(Xbox、Pi Server)的默认网关,请将其设置为默认网关,方法是使用 DHCP 将其自身设置为默认网关,或者在主机上手动设置。例如:

ip route add default via 192.168.1.1

这应该涵盖两者192.168.0.0/24(除非您有其他路线)和互联网。

然后,您需要在 上添加“返回路由” 192.168.0.1(即为 建立192.168.0.48网关192.168.1.0/24。同样,/24是假定的)。例如:

ip route add 192.168.1.0/24 via 192.168.0.48

您可能要在某些 Web 管理 UI 上添加(静态)路由。因此,只需填写192.168.1.0/24)作为目的地,255.255.255.0作为子网掩码(如果它不采用前缀长度),192.168.0.48作为网关。将其添加为 LAN 侧路由(而不是 WAN/Internet 侧)。

如果网关/路由器太差劲,不允许您以任何方式添加静态路由,那么您将需要使用 iptables 规则在 Pi 上进行 IP 伪装:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -o eth0 -j MASQUERADE

或者,最好是:

iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.0.48

如果 Pi 的 WiFi IP 不会随时间而改变(即静态)。

现在,来自的流量192.168.1.0/24似乎源自 Pi 到网关(和主机192.168.0.0/24),因此它们的回复将通过192.168.0.48没有返回路由的方式到达源主机。这样做的缺点是,由于您正在添加另一层 NAT/PAT,某些应用程序可能无法通过“tether”工作。

相关内容