dns-sd: как вручную зарегистрировать удаленный сервис - PullRequest
4 голосов
/ 16 ноября 2011

У меня есть служба в другой удаленной системе, которая находится в другой физической сети, и ее многоадресные пакеты не попадают в мою локальную систему, поэтому я не вижу опубликованных служб DNS-SD.

Есть ли способ, которым я могу вручную зарегистрировать его на своем локальном компьютере, чтобы приложения, которые показывают только обнаруженные службы DNS-SD, показывали это?

Ответы [ 2 ]

7 голосов
/ 14 декабря 2011

С помощью Avahi временные регистрации могут быть созданы с помощью avahi-publish, а постоянные могут быть созданы путем записи статического служебного файла.См. man 1 avahi-publish для получения дополнительной информации о первом и man 5 avahi.service для получения дополнительной информации о более позднем.

С Bonjour инструмент dns-sd можно использовать для регистрации прокси-сервера:

dns-sd -P <Name> <Type> <Domain> <Port> <Host> <IP> [<TXT>...]

Если у службы, которую вы регистрируете через прокси, уже есть одноадресное DNS-имя хоста, будет работать примерно так:

$ dns-sd -P Google _http._tcp local 80 google.com google.com path=/
Registering Service Google._http._tcp.local host google.com port 80 TXT path=/
 4:23:00.928  Got a reply for service Google._http._tcp.local.: Name now registered and active
^C

Если у него нет имени хоста, для него должно использоваться уникальное имя.хост:

$ dns-sd -P Google _http._tcp local 80 google.local 74.125.237.144 path=/
Registering Service Google._http._tcp.local host google.local port 80 TXT path=/
 4:16:48.208  Got a reply for record google.local: Name now registered and active
 4:16:48.208  Got a reply for service Google._http._tcp.local.: Name now registered and active
^C
2 голосов
/ 09 июня 2013

Это как раз то, что я искал. Я хотел, чтобы служба, размещенная в не-OS X системе, была видна из-за пределов домашней сети. В другом месте здесь я узнал, как использовать scutil для обнаружения моей сети Back to My Mac:

echo show Setup:/Network/BackToMyMac | scutil | sed -n 's/.* : *\(.*\).$/\1/p' 

Так что я могу взять это и использовать для заполнения этого:

BTMM=`echo show Setup:/Network/BackToMyMac | scutil | sed -n 's/.* : *\(.*\).$/\1/p'`

dns-sd -P <advertised host name> _ssh._tcp ${BTMM} 22 <real host name> <real IP address—could be a hostname if it resolves> path=/

Прелесть этого в том, что мне не нужно ничего делать, прежде чем я уйду из дома, пока работает какой-то вариант ZeroConf. Я могу рекламировать удаленный сервис, где бы я ни был, использовать его, а затем снять рекламу. Поэтому я запускаю команды, а затем смотрю в моем диалоге Shell -> New Remote Command, и вот оно. Затем я могу копировать файлы туда-сюда, запускать команды, получать доступ к домашней сети, как будто я там был.

...