简单的 socat UDP6 中继测试设置不起作用

简单的 socat UDP6 中继测试设置不起作用

我想使用索卡特作为中继,让我游戏中的两个玩家(均在防火墙后面)相互连接。游戏引擎使用 UDP。玩家 A 将托管游戏服务器,玩家 B 将作为客户端加入,公共服务器 C 将仅充当流量的中继。

我目前正在尝试在本地机器上设置一个测试场景。使用 TCP 的类似测试用例运行良好,但我在 UDP 用例上遇到了困难。

  • (A)UDP 回显服务器:sudo nc -ul ::1 1234
  • (C)启动继电器:socat -d -d UDP6-LISTEN:33000 UDP6-LISTEN:22000
  • (A)连接回显服务器到中继:socat -d -d UDP6:ip6-localhost:33000 UDP6:ip6-localhost:1234
  • (B)作为客户端连接:nc -uvvv ::1 22000

看来 C 从未开始监听 22000(对于 TCP,只要 A 将回显服务器连接到中继,就会发生这种情况)。因此 B 无法连接到 22000。

C 的输出:

$ socat -d -d UDP6-LISTEN:33000,bind=ip6-localhost UDP6-LISTEN:22000,bind=ip6-localhost
2019/06/02 15:42:49 socat[15422] N listening on UDP AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:33000

A 的输出:

$ socat -d -d UDP6:ip6-localhost:33000 UDP6:ip6-localhost:1234
2019/06/02 15:43:05 socat[15436] N opening connection to AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:33000
2019/06/02 15:43:05 socat[15436] N successfully connected from local address AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:34270
2019/06/02 15:43:05 socat[15436] N opening connection to AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:1234
2019/06/02 15:43:05 socat[15436] N successfully connected from local address AF=10 [0000:0000:0000:0000:0000:0000:0000:0001]:47053
2019/06/02 15:43:05 socat[15436] N starting data transfer loop with FDs [5,5] and [6,6]

B 实际上没有产生任何输出:

$ nc -uvvv ip6-localhost 22000
$

我确信我一定犯了一些非常基本的错误。提前感谢您提供的任何见解。

相关内容