Я ищу способ сделать обратный запрос mDNS на OSX только через IPv6. Меня не интересует решение, использующее IPv4.
Следующее работает в Linux с dig
9.16.1:
dig +short @ff02::fb -p 5353 -x 2001:db8::1
Я установил dig
9.16.7 с homebrew на OSX , эта команда с теми же аргументами дает тайм-аут. И нет никаких признаков исходящего запроса в Wireshark.
Следующее работает хорошо как в Linux, так и в OSX:
dig +short @224.0.0.251 -p 5353 -x 192.168.1.23
Двоичный avahi-resol-address
недоступен в OSX, и я не сделал этого » t найти способ заставить обратный DNS работать с dns-sd
.
Вот используемая версия операционной системы:
Я нашел несколько способов сделать это, но оба они немного уродливы. Во-первых, вы можете использовать dns-sd -q
и указать тип записи ptr
... но вам нужно преобразовать адрес, который вы хотите найти, в nibble-by -откусите обратный формат самостоятельно. Например, чтобы найти fe80::4e6:97e7:d892:d977
, вы должны использовать:
dns-sd -q 7.7.9.d.2.9.8.d.7.e.7.9.6.e.4.0.0.0.0.0.0.0.0.0.0.0.0.0.0.8.e.f.ip6.arpa ptr
К сожалению, это работает только для локальных адресов, а не для общедоступных адресов. Понятия не имею почему. Также обратите внимание, что dns-sd
не завершает работу автоматически после выполнения поиска, но продолжает отслеживать изменения. Вам нужно убить его через некоторое время.
Вы также можете использовать dig
, что-то вроде вашей исходной команды, но вам нужно указать, через какой интерфейс отправлять запрос, и в довольно странном формате. «Стандартным» было бы добавить индекс зоны для интерфейса, например чтобы отправить его на ff02::fb
через en1
, вы должны использовать @ff02::fb%en1
. Но dig
не любит такой формат, поэтому приходится быть хитрее. Unix-системы на базе BSD, включая macOS, позволяют помещать числовой индекс зоны во второе 16-битное слово некоторых типов адресов, и здесь это работает.Вот (анонимный) пример, где я использую netstat -rn -f inet6
, чтобы узнать, что 2001:db8:1234:5678::/64
находится на интерфейсе en1
, номер ссылки этого интерфейса — 5
, а затем используйте его для поиска (я добавил ^^^, чтобы выделить соответствующие части):
% netstat -rn -f inet6
Routing tables
Internet6:
Destination Gateway Flags Netif Expire
[...]
2001:db8:1234:5678::/64 link#5 UC en1
^^^^^^ ^^^
[...]
% dig +short @ff02:5::fb -p 5353 -x 2001:db8:1234:5678:109f:8688:b2d1:3f12
^
Gordons-MacBook.local.