将TCP端口流量重定向到其他端口,以便Java应用程序知道使用了哪个端口



我正在运行一个Java服务器应用程序(Bungeecord,如果有人知道的话),我正在编写插件。Bungeecord服务器运行在端口A上,但需要能够连接到端口A和端口b上的服务器。因此,如果连接到端口A,一切都应该按预期工作。但是如果一个连接到B, B的输入应该被发送到端口A,而B上的连接的输出需要从端口B发送。

问题是我的Java插件Bungeecord需要知道客户端是否通过A或b连接。

我不能简单地创建两个ServerSocket实例(一个用于端口A,一个用于端口B),因为这需要对Bungeecord进行建模(这不是我的项目)。这样做会非常耗时。

是否有可能在linux (debian)和Java上解决这个问题,或者我是否需要创建我自己的轻量级代理应用程序,为Java插件提供特定连接是否连接提供a或B的信息?

从TCP层,只向应用程序提供有关它实际接收连接的端口的信息,在您的示例中就是端口A。你可以使用像netcat这样的工具作为某种"漏斗",这样到端口a和端口B的连接总是在端口a结束,但是TCP层不会携带任何关于端口a的信息。

如果您需要分离服务器应用程序中在同一端口接收的多个连接类型,您可以使用以下选项:

  • 在应用层嵌入连接类型信息
  • 通过端口(即客户端端口)来区分连接。(你可能会或可能不会使用netcat,然后。你仍然可以使用包重写/端口地址转换。)

相关内容

最新更新