Чтобы избежать того, чтобы имя хоста искалось из общедоступного DNS для целей тестирования, мне нужно по существу установить файл/etc/hosts, но я не всегда знать, какие имена хостов мне нужно переопределить для IP-адреса, поэтому я пытаюсь использовать dnsjava, поскольку разрешающая способность Java Java по умолчанию не позволяет вставлять непосредственно в кеш.Как вставить запись в кеш dnsjava для переопределения DNS-поиска
0
A
ответ
-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
}
Это не работает: '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
Нет подсказки, если это имеет значение, но используемая нами версия (вообще не обновлены) составляет 2.1.7. – Drizzt321