因此,我正在开发一个软件,它将监视(并可能通过充当forrowder来更改)我的路由器发出的所有dns请求。
我做了什么?
因此,首先我编写了一个java代码,它可以监听特定的端口,并将所有请求打印到控制台(现在我只想用这些请求进行测试)。
代码是:
import java.net.*;
import java.io.*;
public class PortLogger{
public static void main(String[] args) {
LoggerServer loggerServer = new LoggerServer(53);
loggerServer.start();
}
}
class LoggerServer extends Thread{
private int port;
public LoggerServer(int port){
this.port = port;
}
@Override
public void run(){
try{
int id = 1;
ServerSocket server = new ServerSocket(port);
System.out.println("Server Listening at port " + port);
Socket client;
while(true){
client = server.accept();
ClientHandler clientHandler = new ClientHandler(client, id++);
clientHandler.start();
}
}catch(Exception ex){
System.out.println("Exception at Server : 1 :: EX = " + ex);
}
}
}
class ClientHandler extends Thread{
private Socket client;
private int id;
public ClientHandler(Socket client, int id){
this.client = client;
this.id = id;
}
@Override
public void run(){
try {
String data = "";
BufferedReader reader = new BufferedReader(new InputStreamReader(client.getInputStream()));
while(true){
data = reader.readLine();
if(data.length() > 0){
System.out.println("Client : " + id + " :: " + data);
}
}
}catch(Exception ex){
System.out.println("Exception at Client : " + id + " :: EX = " + ex);
}
}
}
现在这个代码的唯一建议是向我显示对服务器的所有请求。
我知道我也必须改变我的路由器中的dns服务器。
因此,我首先尝试去互联网安装和把我的计算机作为dns服务器本地ip。
但它显示:
dns ip和lan ip必须在不同的网络上!
但我找到了另一种方法。
具体如下:
我去安装向导的路由器和设置dns服务器到同一个ip。
出人意料的是,它居然成功了!
[我不知道这是否是d-link固件中的错误。
我还添加了一个例外,允许所有入站和出站请求都进入端口53。
有什么问题?
所以现在的问题是,即使成功地将dns更改为我的服务器。似乎根本没有对控制台的请求。我试了很多,但什么也没做。
我通过自愿使用telnet向程序发送请求来检查程序是否正常工作?
现在我做错了什么,或者路由器有问题(它是旧的)。
注意:图片上的黑线只是为了隐藏我的公共ip地址,没有什么特别的。
编辑:我尝试了几次,然后发现网站没有打开时,我改变了我的路由器的dns,但仍然没有在控制台!
暂无答案!
目前还没有任何答案,快来回答吧!