| Ubuntu: как обращаться к хосту не по IP, а по имени? |
|
| Добавил(а) microsin |
|
Два компьютера 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 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. |