如果有任何错误,请提前道歉,我仍然是个初学者。
我有两个网络,一个是公共网络,有几个智能家居设备,另一个是私有网络,托管在 LTE 路由器上。
有没有办法从公共网络自行托管到专用网络上的计算机的远程连接? 可以连接到两个网络上的本地设备,并且我能够同时将 Raspberry Pi 连接到两个网络,我想也许我可以以某种方式将流量从一个网络转发到另一个网络,但不知道这是否真的现实或可能。
如果有帮助的话,这里有一张图表: 网络图
答案1
如果你的 Raspberry Pi 直接连接到两个网络 – 并且两个网络都使用不同的地址– 您可以将其视为路由器,因为连接两个网络正是路由器的功能。
通过 sysctl 启用 Linux 中的“IP 转发”设置。这基本上启用了“路由器”功能。
如果“公共网络”的主路由器支持定义静态路由,创建一个以 Pi 为网关的反向网络。(具体来说,Pi 的“民众网络”地址(面向您正在配置的路由器的地址)是“网关”字段中的地址。)
如果路由器不支持,则需要在您的笔记本电脑上添加相同的路由(并且只允许来自笔记本电脑的连接)。
同样,如果“专用网络”的主路由器支持定义静态路由,也请创建一个通向公共网络的路由,同样以 Pi 作为网关。这样回复来自个人电脑的数据包返回到您的笔记本电脑。
如果路由器不支持,请在电脑上添加路由,或者在 Pi 中启用 SNAT(又称伪装)。使用 NAT 可以让你访问私有网络上的所有设备,尽管从原则上来说这有点丑陋。
最后,使用 Pi 的防火墙规则(iptables“FORWARD”链)来决定可以访问的内容。对于你的情况,只需确保它允许所有内容即可。
答案2
一种简单的方法是使用工具ncat
。这里的主要答案如下:https://unix.stackexchange.com/questions/293304/using-netcat-for-port-forwarding
由于您要连接到 2 个网络,我假设您的 Pi 有两个网络接口(例如两个以太网端口或一个以太网 + WiFi)。我个人没有以这种方式设置 ncat,但它可能会正常工作,特别是如果您在选项中指定要监听的 IP 地址-l
。
但是,如果您的两个网络使用相同的子网(例如,它们都使用 192.168.1.x),那么事情就会变得更加困难,因为当您为 ncat 指定要转发数据包的 IP 地址时,内核不会自动知道您要与哪个网络通信。在这种情况下,您需要使用命令ip route
告诉内核,与某个 IP 地址的连接使用某个接口(例如 eth0、eth1、wlan0 等)。这是一个单独的主题,但这些帖子对此进行了介绍:
https://unix.stackexchange.com/questions/368690/why-netcat-doesnt-use-the-right-interface-associated-with-the-ip