我的 java 服务器目前正被数千个不同的 ip 进行 DDoSed。为了应对它,我一直在通过专用服务器防火墙阻止 ip。然而,越来越多的人不断涌现。这种攻击淹没了我的登录服务器,导致玩家无法登录。
我已经在其他地方询问过,例如我的 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.");
}
}