![在 Raspberry Pi 上加入 2 个子网](https://linux22.com/image/189141/%E5%9C%A8%20Raspberry%20Pi%20%E4%B8%8A%E5%8A%A0%E5%85%A5%202%20%E4%B8%AA%E5%AD%90%E7%BD%91.png)
我在 3 台设备之间设置了一个小型 Wireguard VPN 网络:
- 数字海洋VPS(服务器,10.222.0.1)
- 我的家庭网络上的 Raspberry Pi(对等点,10.222.0.2)
- iPhone 11(同级,10.222.0.3)
我可以从任何设备上 ping 其他设备。 VPN 可以正常运行。我现在想要的是让 iPhone(在我的家庭网络之外)看到我家庭网络上的 IP 摄像头,其 IP 地址为 192.168.1.64。这超出了我独自完成的能力,因此我正在寻求一些帮助。
最终,我需要将进入 Pi 的 iPhone 从 10.222.0.x 子网连接/路由到 192.168.1.x 子网。
希望有建议,谢谢。
答案1
iPhone 似乎不知道在哪里可以找到网络192.168.1.*
。 (也写为192.168.1.0/24
其中0
指定整个网络和/24
网络掩码)
在 iPhone 上的 Wireguard 配置中,您应该有一条AllowedIPs
线路。此行配置通过 VPN 到 iPhone 的可用路由。因此,如果这表示AllowedIPs=10.222.0.0/24
VPN 上唯一允许的 IP 是10.222.0.0/24
子网。您想扩展它以允许您的 LAN 网络通过 VPN 进行更新,如下所示:AllowedIPs=10.222.0.0/24,192.168.1.0/24
如果该行显示AllowedIPs=0.0.0.0/0
,则意味着它将通过 VPN 传递所有流量(包括互联网流量)。
除此之外:就像上一篇文章描述的那样,树莓派应该允许路由。可以通过以下命令检查cat /proc/sys/net/ipv4/ip_forward
是否返回 1 路由已启用。
要永久启用到 Pi 的路由,您应该取消net.ipv4.ip_forward=1
注释/etc/sysctl.conf
应用更改sysctl -p
假设 Pi 上没有运行防火墙,您现在应该能够访问摄像头。
答案2
[根据评论进行编辑]
建立关系网时要做的第一件事就是画一张图,协调好段:
10.222.0.*/24 192.168.1.*/24 ISP
| | |
| +-- 192.168.1.1 Router --+
| |
+-- 10.222.0.2 RaspPi 192.168.1.? --+
| |
+-- 10.222.0.1 D.O.VPS +-- 192.168.1.64 Camera
| |
+-- 10.222.0.3 iPhone 11 |
| |
您需要回答的下一个问题是“每个 LAN 网段中的默认网关地址由谁设置,是哪一个?”。
如果这两个网段都是 RaspPi,答案很简单:在 RaspPi 上启用转发,完成。
如果不是 RaspPi,请编辑您的问题并包含此信息(可能是您家庭网络的家庭路由器?)。在这种情况下,您需要设置路线在默认网关上(这在您的家庭路由器上可能可行,也可能不可能),或在网段的每个成员上设置静态路由,或通过 DHCP 分发路由。
基本原则是:在从源到目的地(以及返回)的链上,每台计算机都需要知道下一步将数据包路由到哪里。这是一个网络设计练习,而不是只能在 RaspPi 上完成的事情。
因此,您的路由器是 的默认网关192.168.1.*/24
,并且还为此网段运行 DHCP。没有 DHCP 10.222.0.*/24
(静态地址),也没有默认网关。
因此一种可能的解决方案是将 RaspPi 设置为默认网关10.222.0.*/24
.您可以静态地执行此操作,就像 IP 地址一样,详细信息取决于操作系统。例如这里是如何使用 systemd 来做到这一点。验证与ip route
.
接下来调查您是否可以在 Unify 路由器上设置路由。您需要一条通过 RaspPi 地址到达的路由10.222.0.0/24
(如果是 a /24
,那是猜测),并且 RaspPi 需要始终获取相同的地址192.168.1.*/24
(这是您可以在大多数路由器上配置的内容)。
最后,确保 RaspPi 上启用转发。你可以检查一下
cat /proc/sys/net/ipv4/ip_forward
(1 已启用),或手动设置
echo "1" > /proc/sys/net/ipv4/ip_forward
如果默认情况下未启用,则再次使其永久化的方法取决于操作系统。