У меня есть Mac, подключенный к моему маршрутизатору, который подключен к маршрутизатору/модему моего интернет-провайдера, со следующими настройками:
Mac подключается к маршрутизатору 192.168.1.1 с помощью DHCP.
Mac DNS настроен на 192.168.1.1
На моем маршрутизаторе я вижу ряд подключенных устройств:
rpi-узел-4 192.168.1.4
rpi-узел-1 192.168.1.5
Я могу подключиться по ssh к 192.168.1.4 по IP, но если я попробую по имени хоста, он не распознается:
ssh: Не удалось определить имя хоста rpi-node-4: имя узла и имя сервера не указаны или неизвестны
Поскольку маршрутизатор знает имена хостов, а Mac должен использовать 192.168.1.1 (маршрутизатор) в качестве DNS, я ожидал, что Mac сможет разрешить имена хостов, но это не работает.
Обратите внимание, что я не хочу вручную редактировать /etc/hosts
файл на Mac (потому что у меня несколько машин и я использую динамические IP-адреса, поэтому мне не хочется обновлять 3-4 файла хостов каждый раз при перераспределении IP-адресов).
Может кто-нибудь подскажет, где я ошибся?
решение1
Ваш маршрутизатор, вероятно, знает только имена этих RPi, поскольку именно эти имена они использовали при выполнении DHCP-запросов, а ваш маршрутизатор, вероятно, является DHCP-сервером вашей сети.
Некоторые маршрутизаторы домашних шлюзов позволяют вводить имена хостов для каждого частного IP-адреса локальной сети, и маршрутизатор будет действовать как DNS.содержаниесервер, а не просто DNS-реле. Посмотрите, есть ли у вас такая функция, и настройте ее, если есть.
Если у него нет этой функции, вы можете использовать mDNS и DNS-SD (он же IETF ZeroConf, Apple Bonjour) для установки домена, .local
чтобы вы могли подключаться к своим RPi по имени. Я считаю, что Raspbian, как правило, не имеет реализации mDNS, включенной по умолчанию, поэтому вам может потребоваться что-то вроде sudo apt-get install avahi-daemon
Avahi, которая является популярной реализацией mDNS с открытым исходным кодом.
решение2
Ваш домен поиска мог быть пропущен при настройке параметров DHCP вашего маршрутизатора. Теперь ваш компьютер Mac не знает, где искать локальные имена хостов для IP-адресов.
Чтобы исправить это:
- Перейдите в Системные настройки -> Сеть.
- Выберите активный сетевой адаптер в левом столбце.
- Нажмите «Дополнительно» в правом нижнем углу.
- Выберите вкладку DNS вверху.
- Введите свой домен поиска в разделе «Поиск доменов» (мой — attlocal.net, потому что я пользуюсь AT&T. Возможно, вам придется выполнить поиск, чтобы найти свой)
- Нажмите «Применить». Теперь вы сможете получить доступ к {hostname}.local