2015-03-30 4 views
0

Чтобы избежать того, чтобы имя хоста искалось из общедоступного DNS для целей тестирования, мне нужно по существу установить файл/etc/hosts, но я не всегда знать, какие имена хостов мне нужно переопределить для IP-адреса, поэтому я пытаюсь использовать dnsjava, поскольку разрешающая способность Java Java по умолчанию не позволяет вставлять непосредственно в кеш.Как вставить запись в кеш dnsjava для переопределения DNS-поиска

ответ

-1

В принципе, вам нужно получить правильный кеш типа DNS для dnsjava (A, AAAA и т. Д.). Скорее всего, A (для IPv4) или AAAA (для IPv6) - это то, что вы должны использовать, хотя также поддерживаются все другие типы записей DNS. Вам нужно будет создать экземпляр Name и из него ARecord, который будет вставлен в Cache. Пример приведен ниже:

public void addHostToCacheAs(String hostname, String ipAddress) throws UnknownHostException, TextParseException { 
    //add an ending period assuming the hostname is truly an absolute hostname 
    Name host = new Name(hostname + "."); 
    //putting in a good long TTL, and using an A record, but AAAA might be desired as well for IPv6 
    Record aRec = new ARecord(host, Type.A, 9999999, getInetAddressFromString(ipAddress)); 
    Lookup.getDefaultCache(Type.A).addRecord(aRec, Credibility.NORMAL,this); 
} 


public InetAddress getInetAddressFromString(String ip) throws UnknownHostException { 
    //Assume we are using IPv4 
    byte[] bytes = new byte[4]; 
    String[] ipParts = ip.split("\\."); 
    InetAddress addr = null; 
    //if we only have one part, it must actually be a hostname, rather than a real IP 
    if (ipParts.length <= 1) { 
     addr = InetAddress.getByName(ip); 
    } else { 
     for (int i = 0; i < ipParts.length; i++) { 
      bytes[i] = Byte.parseByte(ipParts[i]); 
     } 
     addr = InetAddress.getByAddress(bytes); 
    } 
    return addr 
} 
+0

Это не работает: 'addHostToCacheAs (" kafka "," 127.0.0.1 "); . InetAddress.getByName ("Кафка") GetAddress(); '' бросает java.net.UnknownHostException: Кафка \t на org.xbill.DNS.spi.DNSJavaNameService.lookupAllHostAddr (DNSJavaNameService.java:147) \t в org.xbill .DNS.spi.DNSJavaNameService.invoke (DNSJavaNameService.java:97) \t at com.sun.proxy. $ Proxy0.lookupAllHostAddr (Неизвестный источник) ' – dzieciou

+0

Нет подсказки, если это имеет значение, но используемая нами версия (вообще не обновлены) составляет 2.1.7. – Drizzt321

 Смежные вопросы

  • Нет связанных вопросов^_^