2013-04-02 44 views
12

在過去的幾個星期裏,我一直在搜索互聯網,計算機程序員的頭腦,以及一些隨機的人,探討我期望克服的局面。基本上,我想要做的是爲流行遊戲Minecraft寫一個AntiJoinBot「插件」(如果你願意的話)。這就像所有其他人一樣,根據他們是否使用代理來阻止IP,但是這個AntiJoinBot運行在與實際服務器不同的VPS上。在Java中重定向IP

這是我能夠做到的情況下(這不是那麼好)最好的圖形:

(非的Minecraft服務器)連接 - >代理檢查 - >重定向到 服務器 - >我的世界

唯一的問題是,我需要能夠重定向IP並關閉連接,以便玩家的真實IP是連接到服務器的IP。如果連接無法關閉,由於我們正在運行的一些插件,會導致真正的問題。

如果您有解決方案或更好的方法來做到這一點,請幫助我。

+0

是否有一個特定的原因,您爲什麼不能將兩個元素都放在同一臺服務器上,並使用代理檢查攔截所有服務器通信? – MathSquared

+0

是的,加入bot仍然會使用服務器的資源。我試圖避免這種情況。 – Enosis

+0

如果minecraft服務器接口是純HTTP,那麼您可以使用HTTP重定向逃脫,前提是客戶端使用的是標準HTTP庫,可能會支持它。如果客戶端/服務器沒有使用HTTP,而是使用一些自定義二進制協議(看起來很可能),那麼你不能在沒有mod的情況下重定向到客戶端。儘管你可以做一個完整的代理。如果您確實找到了重新定向的方法,您將如何阻止惡意客戶端簡單地存儲重定向的IP並完全繞過您的服務器? – Pace

回答

3

沿着所需線路重定向連接需要來自(應用)協議的支持。 TCP/IP不支持它。 AFAIK,SOCKS也不支持它。除非Minecraft應用程序協議(以及暗示的Minecraft客戶端和服務器)包含對重定向的支持,否則您運氣不佳。 (FWIW - 這就是HTTP重定向的工作方式,HTTP有一個「協議元素」,它允許服務器告訴客戶端重定向,以及重定向到的位置,然後客戶端將原始請求重新發送到新地址)。

但這並不意味着你不能對付害蟲。這只是意味着重定向方法不可行。改爲嘗試自定義代理或IP過濾器/重定向器。

0

您正在嘗試將服務器的資源保存在增加流量的成本上。 我不確定答案,但可能是通過查看LBS(負載平衡服務器)的概念,您可能會找到答案。 LBS由我們完全定義和控制,因此您可以使用一臺負載平衡服務器管理兩臺服務器的資源。