我的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