gpt4 book ai didi

websocket - 如何在没有 NAT 的情况下连接路由器或防火墙后面的客户端 tcp 端口

转载 作者:行者123 更新时间:2023-12-04 14:47:04 26 4
gpt4 key购买 nike

客户端可以通过代理连接服务器,但我也需要将客户端 TCP/UDP 端口从服务器连接到客户端:
[vm ---> 代理 ---> 路由器或防火墙 ---> 客户端:3000]
我不想通过 NAT 规则打开客户端到 Internet 的端口。
我正在寻找一种方法来做到这一点。是否可以?
编辑:我想我必须添加更多关于我的目标的信息。
network-diagram
我在 Linux 客户端(图表)上有一个应用程序,它有 2 个工作:
1-在客户端和VM之间创建websocket进行通信
2- USB/IP : 我使用Usb/ip 协议(protocol)重定向本地USB 设备。这就是为什么我需要这个解决方案。
让我告诉你 USB/IP 是如何工作的:
建筑学
USB/IP 协议(protocol)遵循服务器/客户端架构。服务器导出 USB 设备,客户端导入它们。导出的 USB 设备的设备驱动程序在客户端计算机上运行。
首先,客户端打开到服务器的 TCP/IP 连接 并发送一个 OP_REQ_IMPORT 数据包。 (I) 服务器回复 OP_REP_IMPORT。如果导入成功,TCP/IP 连接将保持打开状态,并将用于在客户端和服务器之间传输 URB 流量。客户端可以发送两种类型的数据包:用于提交 URB 的 USBIP_CMD_SUBMIT 和用于取消链接先前提交的 URB 的 USBIP_CMD_UNLINK。服务器的回答可能分别是 USBIP_RET_SUBMIT 和 USBIP_RET_UNLINK。

virtual host controller                                 usb host
"client" "server"
(imports USB devices) (exports USB devices)
| |
| OP_REQ_IMPORT |
| ----------------------------------------------> |
| |
| OP_REP_IMPORT |
| <---------------------------------------------- |
| |
| |
| USBIP_CMD_SUBMIT(seqnum = n) |
| ----------------------------------------------> |
| |
| USBIP_RET_SUBMIT(seqnum = n) |
| <---------------------------------------------- |
| . |
| : |
| |
| USBIP_CMD_SUBMIT(seqnum = m) |
| ----------------------------------------------> |
| |
| USBIP_CMD_SUBMIT(seqnum = m+1) |
| ----------------------------------------------> |
| |
| USBIP_CMD_SUBMIT(seqnum = m+2) |
| ----------------------------------------------> |
| |
| USBIP_RET_SUBMIT(seqnum = m) |
| <---------------------------------------------- |
| |
| USBIP_CMD_SUBMIT(seqnum = m+3) |
| ----------------------------------------------> |
| |
| USBIP_RET_SUBMIT(seqnum = m+1) |
| <---------------------------------------------- |
| |
| USBIP_CMD_SUBMIT(seqnum = m+4) |
| ----------------------------------------------> |
| |
| USBIP_RET_SUBMIT(seqnum = m+2) |
| <---------------------------------------------- |
| . |
| : |

最佳答案

我认为这样做的唯一方法是使用 ngrok(Node.js 包),它是临时的,url 会随着时间的推移而变化。
可以从那里进行回调,更改端点,反射(reflect)新地址。

关于websocket - 如何在没有 NAT 的情况下连接路由器或防火墙后面的客户端 tcp 端口,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69833364/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com