dnsjava не может разрешить "localhost" на машине с Linux
После того, как я зарегистрировал dnsjava в качестве поставщика DNS по умолчанию, у меня возникла проблема. Он не может разрешить локальные адреса, которые описаны в файле /etc/hosts на моей машине с Linux. Этот файл выглядит примерно так:
127.0.0.1 localhost
127.0.1.1 servername
Поэтому, если я пытаюсь разрешить одно из таких имен, происходит UnknownHostException:
org.xbill.DNS.Address.getByName("localhost");
org.xbill.DNS.Address.getByName("servername");
Это не проблема, когда вы используете dnsjava вместе с провайдером dns по умолчанию. Будучи единственным провайдером, dnsjava вызывает множество ошибок в библиотеках по умолчанию, которые оказываются сильно зависимыми от разрешения локального хоста. Итак, вопрос: как изменить поведение dnsjava для разрешения локальных имен хостов?
Редактировать. Следующий код работает нормально:
java.net.InetAddress.getByName("localhost");
Но метод java.net.InetAddress.getLocalHost() выбрасывает:
java.net.UnknownHostException: servername
1 ответ
dnsjava
клиентская библиотека DNS; он разговаривает с DNS-серверами. /etc/hosts
не является частью протокола DNS и не dnsjava
знать что-нибудь об этом.
См. Этот старый пост в списке рассылки пользователей dnsjava от парня, который его написал: http://old.nabble.com/DNS-Resolve-from-hosts-file-first-then-DNS-Server-td15431381.html
Ничего не изменилось в этом отношении.
Если java.net.InetAddress.getByName()
работает, то ваш DNS-сервер настроен на ответ на запросы localhost
,