Различите виртуальные и физические сетевые адаптеры - PullRequest
0 голосов
/ 04 августа 2020

Я борюсь с проблемой поиска DNS. При выполнении поиска DNS, как показано ниже, Java всегда кажется, что виртуальные адаптеры предпочтительнее физических (по крайней мере, во всех средах, в которых я это тестировал). Это имеет некоторые неприятные эффекты:

System.out.println(Instant.now()); // 2020-08-04T12:38:48.641668600Z
final String hostname = InetAddress.getLocalHost().getCanonicalHostName();
System.out.println(Instant.now()); // 2020-08-04T12:38:56.222900300Z

Поиск имени хоста (воспроизводимо) занимает несколько секунд (~ 5-8 с) и

InetAddress.getByName(hostname).getHostAddress(); // returns IP of virtual network adapter

Обратный поиск всегда возвращает IP-адрес внутренний сетевой адаптер, недоступный извне виртуальных сред.

На основе этого ответа и этого сообщения в блоге Я уже реализовал некоторый код, который будет использовать физические адаптеры сначала (на основе префикса OUI интерфейса) для имени хоста и IP-поиска. Но списки кажутся довольно старыми и устаревшими, поскольку мои локальные виртуальные сетевые интерфейсы Hyper-V имеют префикс OUI 00-15-5D, который не упоминается в приведенных выше ссылках.

Я нашел http://standards-oui.ieee.org/oui.txt (загрузка 4 МБ), но здесь «только» перечислены OUI по регистраторам. Например, для моего префикса Hyper-V есть запись:

00-15-5D   (hex)        Microsoft Corporation
00155D     (base 16)        Microsoft Corporation
                One Microsoft Way
                Redmond  WA  98052-8300
                US

Но есть 47 записей только для Microsoft, 16 для Oracle и так далее. Я сомневаюсь, что все они используются для виртуальных сетевых адаптеров ...

Итак, мой вопрос: Есть ли какой-нибудь (официальный) актуальный список OUI, которые можно использовать для надежно идентифицировать виртуальные адаптеры?!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...