代理人?端口转发?

代理人?端口转发?

因此,我正在寻找一种简单的解决方案,采用独立中间人服务的形式,在无头 Raspberry Pi 上的 Ubuntu 上运行,侦听端口 80 并自行将流量转发到外部 IoT 设备或从外部 IoT 设备转发流量独立的网络,有自己的内部网络服务器。

场景是这样的:

运行 Ubuntu 20.10 的专用 Raspberry PI。它有一个 eth0 网络,地址为 192.168。这只不过是连接 IoT 设备的反向电缆,因为 Pi 和该设备彼此相邻,没有其他网络设备在运行。 PI 在 172 处还有一个 wlan0 网络。.* 并正在运行 Apache,但具有备用侦听端口,以便默认 HTTP/HTTPS 端口可用于直通 IoT 框,同时也可以在 PI 上提供页面。

物联网盒子是一个交钥匙设备,我无法在上面安装任何软件。它有自己的网络浏览器,可通过端口 80 访问,目前我不知道 HTTPS 端口,我认为这不是问题,因为两个网络都是私有的 WRT 互联网。物联网设备可能需要 HTTP 密码才能访问其网页,但由于它并不完全是最新的,希望它能够与基本身份验证或不会使事情变得太复杂的东西一起工作 - 我真的不知道请注意连接是否受到保护,因为它都是位于互联网防火墙后面的专用网络。

我想做的是能够从 172 上的任何计算机上进行浏览。.* 本地 wifi,连接到 PI 的端口 80,这样就可以访问 192.168.* 上端口 80 的 IoT 设备 Web 服务器的内容。网络。在很大程度上,PI 的重点是为只能使用有线以太网的 IoT 设备提供远程 Wifi 访问。

请注意,我并不是试图在两个接口之间将整个端口集从一个网络传递到另一个网络,而只是为了让 IoT 的网页能够像由 PI 提供服务一样被访问而必需。

我已经尝试了很多东西。 PI 是使用 netplan 和 ufw 设置的,两个网络都可以从 PI 访问,并且我可以通过其备用端口浏览到 PI 的 Apache 服务器。我还可以从 PI 浏览到 IoT 设备页面。所以两个网络都已启动且可访问,并且我已经使用 ufw 打开了相关端口 AFAIK。

然后我尝试使用 ufw 进行端口转发,似乎只会将 PI 上的一个端口转发到 PI 上的另一个端口,这不是我想要的。我并不完全清楚,但当我尝试几个示例变体时,它似乎是如何表现的。问题是,我看到几个明显相似配置的示例食谱,但解释他们如何工作似乎缺乏,所以我只是在尝试一些东西而不理解它想要做什么,然后在它不起作用时无法诊断或推理出来。

然后我发现 PortFusion 看起来像是一个可能的候选者。我花了很长时间才找到一个可以运行的版本——最新的源代码 1.2.2 无法在没有错误的情况下构建(它是在 Haskell 中),尽管我最终找到了一个可以运行的为 ARM (v1.2.1) 构建的早期二进制文件,但无法让它工作,文档和示例也很有限,它本质上是废弃软件,我无处可问问题。所以我放弃了。

然后我发现了 frp,它看起来像是另一个潜在的候选者,但似乎需要客户端和服务器部分,并且由于我无法在我尝试连接的 IoT 设备上安装任何东西,因此 frp 似乎不是正确的工具。

我还看到一些提到使用 ssh 来设置隧道,但这似乎需要在接收端使用 SSH,这不是一个选项,因为我无法在上面安装任何东西。有人甚至建议 netcat 做类似的事情,也许?但如何让它成为双向的呢?我不清楚 IoT 设备的传出响应应如何传递回 HTTP 请求的外部发起者。

这似乎是这样应该这是一件非常简单的事情,但部分问题是我真的不知道什么是适合这项工作的工具——端口转发、NAT、隧道、桥接、代理或它们的某种组合。所有这些工具的文档似乎在很大程度上都缺乏记录,其中的示例做出了与我想要做的事情无关的假设,或者工具本身只是为了做其他事情而设计的。

有很多看似相关的工具,重叠,netplan,networkmanager,networkd,iptables,ufw,ssh,netcat,以及各种奇怪的事情都可能出错,特别是如果你开始在这些不同的工具之间切换,就像有些工具看起来一样来互相干扰。

如果有人能给我指出正确的方向,也许建议我应该使用什么工具来设置什么样的服务,我现在有点陷入困境,没有线索。

相关内容