TCP反向代理Minecaft不发送原始IP

时间:2018-06-16 05:30:13

标签: java sockets stream minecraft

我创建了一个反向代理,但我遇到了将服务器的IP发送到目标Minecraft服务器的问题,该服务器与Minecraft播放器连接到反向代理的IP相对。

我看过ProxyPipe的& InAbates(https://github.com/ducc/InAbate/blob/master/src/main/java/com/inabate/bungee/PlayerListener.java)Bukkit插件试图找出他们如何设置播放器的原始IP,但我没有运气。

我还查看了Minecraft Protocol Handshakes wiki,但它没有解释如何设置连接IP。

如果有人能够指出我应该如何将玩家的真实IP发送到Bukkit服务器/ Bungee服务器的正确方向,那么我可以从Bukkit / Bungee插件中读取原始IP,这将非常棒。

我目前的代码:https://gitlab.com/shaunagostinho/MinecraftReverseProxy

1 个答案:

答案 0 :(得分:0)

BungeeCord明确地将玩家的IP地址破解/编码到正在发送的数据包中,它不仅仅是一个简单的反向代理。

此功能称为IP转发。

问题是,vanilla Minecraft服务器无法识别它。

因此,您使用的Minecraft服务器后端需要了解编码,并将与播放器关联的IP地址替换为bungee提供的IP地址。

Bungeecord:

https://github.com/SpigotMC/BungeeCord/blob/dce4ea193ad461832094f4368829e927db578265/proxy/src/main/java/net/md_5/bungee/connection/InitialHandler.java#L266

https://github.com/SpigotMC/BungeeCord/blob/e93323ddbc8f22f1efa0647e2fc03adc66c7c488/proxy/src/main/java/net/md_5/bungee/ServerConnector.java#L92

承插:

https://hub.spigotmc.org/stash/projects/SPIGOT/repos/spigot/browse/CraftBukkit-Patches/0043-BungeeCord-Support.patch#6,33

所以你可以看到它转发,IP地址,UUID和包含GameProfile属性的json。