|
Два компьютера Ubuntu видят друг друга в локальной сети - ping по IP-адресу проходит. Как обращаться к ним не по IP, а по имени?
В Ubuntu самый простой способ обращаться к компьютерам по имени в локальной сети — использовать Avahi и домен .local. Это стандартное решение, которое часто работает "из коробки" (по аналогии с Bonjour на macOS).
[Самый простой способ: использование `.local` (Avahi/mDNS)]
Этот метод не требует настройки серверов и подходит для большинства домашних и офисных сетей.
1. Как это работает: на каждом компьютере запущен демон `avahi-daemon`, который через протокол mDNS рассылает по сети информацию о своем имени. Другой компьютер получает эту информацию и может преобразовать имя `имя-компьютера.local` в IP-адрес.
2. Проверьте, что всё работает:
- Убедитесь, что на обоих компьютерах установлены и запущены пакеты `avahi-daemon` и `libnss-mdns`. Обычно они установлены по умолчанию.
sudo apt install avahi-daemon libnss-mdns
- Узнайте имя компьютера, которое будет использоваться как `.local` адрес:
hostname
- Попробуйте обратиться к другому компьютеру, используя его имя с добавлением `.local`:
ping имя-другого-компьютера.local ssh пользователь@имя-другого-компьютера.local
3. Важные нюансы:
Файрвол: если ufw или другой брандмауэр активен, нужно разрешить входящий и исходящий трафик на UDP порт 5353 для многоадресной рассылки (`ff02::fb` для IPv6). В противном случае имя не будет разрешаться.
Проблемы с IPv6: в некоторых версиях Ubuntu в файле `/etc/nsswitch.conf` может быть строка `hosts: files mdns4_minimal [NOTFOUND=return] dns`. Если в вашей сети активно IPv6, это может мешать разрешению `.local` имен. Убедитесь, что в этой строке есть `mdns_minimal` (поддерживает оба протокола) или `mdns4_minimal` (только IPv4), в зависимости от вашей сети.
Конфликт с DNS: домен `.local` зарезервирован для mDNS. Если в вашей сети есть реальный DNS-сервер, который обслуживает зону `.local`, это может вызывать конфликты, и systemd-resolved может отказывать в запросах.
[Альтернативный метод: /etc/hosts (для малых сетей)]
Если по какой-то причине Avahi не подходит, можно использовать ручное добавление записей в файл /etc/hosts на каждом компьютере. Это просто, но неудобно для сетей более чем из 2-3 машин.
1. Узнайте IP-адрес целевого компьютера (например, с помощью `ip addr` или `hostname -I`).
2. Отредактируйте файл на вашем компьютере:
sudo nano /etc/hosts
3. Добавьте строку с IP-адресом и желаемым именем для другого компьютера:
192.168.1.100 имя-другого-компьютера
После этого можно обращаться к нему по выбранному имени.
[Устаревший способ: NetBIOS (для совместимости с Windows)]
Этот метод в основном используется для взаимодействия с очень старыми Windows-системами и в современных сетях не рекомендуется.
Для поддержки NetBIOS в Ubuntu нужно установить и настроить Samba:
sudo apt install samba
Затем нужно отредактировать файл /etc/samba/smb.conf и убедиться, что в нем указан `netbios name` и настроен порядок разрешения имен.
[Ссылки]
1. Ubuntu FAQ. |