使用 netcat 和命名管道的桥接/隧道

使用 netcat 和命名管道的桥接/隧道

我有两个设备(A 和 B),它们应该通过服务器 (S) 间接相互通信:

/---\       /---\       /---\
| A | <===> | S | <===> | B |
\---/       \---/       \---/

A和B可以独立地连接、断开和重新连接到S。

我的方法是使用命名管道作为缓冲区,并使用两个 netcat 实例分别为 A 和 B 打开端口,将接收到的内容存储到一个管道中,并将另一管道的内容发回。

我使用以下命令来让它运行:

mkfifo a2b
mkfifo b2a
nc -n -u -lkvp 5050 < b2a | tee a2b &
nc -n -u -lkvp 5051 < a2b | tee b2a &

选项说明:

  • -n:避免名称服务器不可用的问题
  • -u:使用UDP
  • -l: 开始听
  • -k:断开后保持打开状态
  • -v: 冗长
  • | tee fifo:将接收到的字符输出到stdout并写入fifo

当我与 A 连接到S:5050并与 B连接S:5051(例如,nc -uv S 5050用于 A)并发送一些字符时,它们会显示在 S 的输出上,但不会被 B 接收(反之亦然)。

我究竟做错了什么?

我想要实现的目标的正确术语是什么 - 是桥接、隧道、转发、中继?

相关内容