我正在设计一个嵌入式 Linux 设备,用作传感器数据的网关。在某些情况下,该设备将使用我无法控制的回程(例如客户提供的单元或电缆调制解调器)。我假设该设备将位于某种 NAT 之后,并且在大多数安装中将通过 DHCP 分配网络参数。
对于典型的通信,设备将使用 REST Web 服务打开套接字。
我想添加一些安全的诊断、命令和控制功能。我想要的是每个网关都运行类似 SSH 服务器的东西。这样我就可以拥有一个非常灵活的界面,人们可以按需使用它与行为不端的网关进行通信并排除故障或修复出现的问题。这提出了一些明显的安全问题,但我更感兴趣的是谈论我此时需要克服的网络障碍:
- 我的客户需要在他们的路由器上打开一个端口并转发我的设备的端口,或者我的设备需要直接连接到互联网而不是在 NAT 之后。
- 如果我的设备在 NAT 后面,它可能需要一个静态 IP
- 客户需要为其网络提供静态 IP,或者我们需要通过我们的 REST 接口捕获动态 IP。
我怎样才能打孔 SSH?
- 我可以让每个网关都像 SSH 客户端一样运行,并与我们的一台服务器打开一个会话,有什么方法可以传输或接管 SSH 会话吗?
- 我可以使用 IP-in-IP 连接或类似方式传输数据吗?