我的java服務器目前正在被數千個不同的ip的DDoSed。爲了對抗它,我一直通過專用服務器防火牆阻止IP。然而越來越多的人不斷涌現。這種攻擊淹沒了我的登錄服務器,導致玩家無法登錄。Java登錄服務器淹沒保護
我已經問過其他地方,如我的類型的Java應用程序的論壇,我幾乎沒有得到任何答案。然而他們告訴我這是一種DDoS的形式,另一位用戶向我提到了這一點,但我不相信這會起作用。 http://www.java2s.com/Open-Source/Java-Document/Net/mina-2.0.0-M1/org/apache/mina/filter/firewall/ConnectionThrottleFilter.java.htm
顯然這是我的登錄服務器上的DoS,任何人都有任何線索?我將在下面提供登錄服務器的主要框架。
try {
shutdownClientHandler = false;
clientListener = new java.net.ServerSocket(serverlistenerPort, 1, null);
misc.println("Login server is now online!");
while (true) {
try {
java.net.Socket s = clientListener.accept();
s.setTcpNoDelay(true);
String connectingHost = s.getInetAddress().getHostName();
if (true) {
if (checkLog("flooders", connectingHost)) {
//misc.println("Flooder Detected, closing connection.");
s.close(); // Closes the connection immediately.
} else {
connections.add(connectingHost);
if (checkHost(connectingHost)) {
misc.println("Connection from "+connectingHost+":"+s.getPort());
try {
playerHandler.newPlayerClient(s, connectingHost);
} catch (Exception E) {misc.println("Login Server crash detected. Protecting...");
s.close();
}
} else {
misc.println("ClientHandler: Rejected "+connectingHost+":"+s.getPort());
s.close();
}
}
} else {
misc.println("ClientHandler: Rejected "+connectingHost+":"+s.getPort());
s.close();
}
Thread.sleep(30;
} catch (Exception e) {
logError(e.getMessage());
}
}
} catch (java.io.IOException ioe) {
if (!shutdownClientHandler) {
misc.println("World is already online!");
} else {
misc.println("ClientHandler was shut down.");
}
}
謝謝詹姆斯,我已經用hashmap替換了checklog方法,並試圖從IO切換到MINA,但是出現了問題,所以也許又有一次,有更多的建議嗎? – Travis 2011-05-22 00:49:10
配置您的應用程序,並查看減速在哪裏。 – 2011-05-22 15:07:24