2015-08-24 103 views
1

我用Java編寫了這個程序,我在Ubuntu 14下運行它。如何在java中的端口53上反映UDP數據包?

運行它時,它通過端口53將UDP數據包發送到在Debian 8.0下運行的緩存DNS服務器。

服務器將回復發送給源。如何修改程序以使服務器回覆到另一個IP地址,而不是在同一個LAN中?

下面是程序:

import java.io.*; 

import java.net.*; 


public class ClientSender { 
private static Object InetAdress; 


public static void main(String[] args) { 

int i ; 

for (i=0;i<1000;i++){ 

DatagramSocket skt; 

try{ 
      ///////////////////////////////////////// 
    skt = new DatagramSocket();  /////creating socket 
    String msg = "Test";//////////message 

    byte[] b =msg.getBytes(); /// creating message 

      InetAddress host =InetAddress.getByName("192.168.1.3"); ///destination IP address 

      int serverSocket = 53; // Destination Port 

       /////////////////////////////////////////////////////////////// 

      DatagramPacket request =new DatagramPacket(b,b.length,host,serverSocket); 
      skt.send(request);              /////////////////////////creating packet 

      /////////////////////////////////////////////////////////////////////////////// 

      //..................................// for receiving replies from destnation 
      byte [] buffer = new byte[1000]; 
      DatagramPacket reply = new DatagramPacket (buffer, buffer.length); 
      skt.receive(reply);    ///////////////////////////////////lestining to replies from destination 

      skt.close();///////////////closing socket 

      System.out.println(new String(request.getData())); 
      System.out.println(new String(reply.getData())); 



} 
    catch (Exception ex) 
    { 

     } 
}} 

} 
+2

你不能;用於套接字的IP /端口對連接到此套接字。而你爲什麼要這麼做呢? – fge

+0

感謝您的每一件事......我正在開展一項保護DNS服務器免受DNS反射攻擊的項目,但我無法執行反射部分。我在一些迷你項目中使用了java,但是我是java socket編程的新手,我希望我可以這麼做,還有其他方法可以在小範圍內進行反射嗎? –

回答

1

你不能這樣做,在Java中。

您當前的客戶端IP地址將禁止服務器在您的LAN連接中選擇其他客戶端的IP地址。

這在Java中是不可能的。

+0

謝謝您的回答 但我該怎麼做?如何讓DNS服務器將發送的數據包反映到另一個IP地址中? –