无法通过Windows 10和DLINK DIR-615路由器中的Java代码获取DNS请求
因此,我正在开发一个软件,该软件将监视(并可能通过充当Forrowder进行更改)我的路由器发出的所有DNS请求 我做了什么? 因此,首先我编写了一个Java代码,它可以侦听特定端口并将所有请求打印到控制台[现在我只想测试这些请求] 代码是:无法通过Windows 10和DLINK DIR-615路由器中的Java代码获取DNS请求,java,sockets,networking,dns,Java,Sockets,Networking,Dns,因此,我正在开发一个软件,该软件将监视(并可能通过充当Forrowder进行更改)我的路由器发出的所有DNS请求 我做了什么? 因此,首先我编写了一个Java代码,它可以侦听特定端口并将所有请求打印到控制台[现在我只想测试这些请求] 代码是: import java.net.*; import java.io.*; public class PortLogger{ public static void main(String[] args) { LoggerServer
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服务器
因此,我首先尝试通过进入internet设置,将我的计算机的本地IP作为DNS服务器
但它表明:
DNS IP和LAN IP必须位于不同的网络上
但我找到了另一种方法
详情如下:
我转到路由器的安装向导并将DNS服务器设置为相同的IP
令人惊讶的是,这起作用了
[我不知道这是否是D-Link固件中的错误
我还添加了一个例外,允许所有入站和出站请求都发送到端口53
有什么问题吗?
所以现在的问题是,即使在成功地将DNS更改为我的服务器之后。似乎根本没有对控制台的请求。我尝试了很多,但什么也没有
我通过自愿使用telnet向程序发送请求来检查程序是否正常工作
现在我做错了什么,或者路由器出现了一些错误(它是一个旧的)
注意:图片上的黑线只是为了隐藏我的公共IP地址,没有什么特别的
编辑:我又尝试了几次,然后发现当我在路由器中更改DNS时,网站没有打开,但控制台中仍然没有打开!虽然很难给你一个完整的答案,为什么你的应用程序无法工作,但我可以建议一些调查方法:
tcpdump
或Wireshark。你也可以使用Wireshark for Windows,因为它是一个GUI应用程序。这可以让你监视和过滤网络流量,因此与你的应用程序无关。你可以按源或目标地址和/或端口号排序tcpdump
或Wireshark,您可以在测试客户端上发出请求,例如浏览器请求,并查看产生的网络流量虽然很难给你一个完整的答案,为什么你的应用程序不起作用,但我可以建议一些调查方法:
tcpdump
或Wireshark。你也可以使用Wireshark for Windows,因为它是一个GUI应用程序。这可以让你监视和过滤网络流量,因此与你的应用程序无关。你可以按源或目标地址和/或端口号排序tcpdump
或Wireshark,您可以在测试客户端上发出请求,例如浏览器请求,并查看产生的网络流量