Вопрос или проблема
Как я могу изменить IP-адрес сервера Ubuntu на веб-адрес? Например, адрес, который мне нужно открыть в браузере – 192.168.x.xxx. Как я могу изменить его на dev.robi.local? Спасибо!
Файл /etc/hosts
:
127.0.0.1 localhost localhost
192.168.0.105 dev.robi.local robi
::1 localhost ip6-localhost ip6-loopback
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
Файл resolv.conf
:
nameserver 8.8.8.8
nameserver 8.8.4.4
domain dev.robi.local
search dev.robi.local
Условно разрешение имен, то есть соответствие IP-адресов именам хостов и наоборот, осуществляется DNS (система доменных имен) сервером.
Вероятно, у вас есть маршрутизатор, который предоставляет DNS для вашей локальной сети. Есть небольшая вероятность, что ваш маршрутизатор позволяет добавлять записи в его DNS, но обычно оборудование для домашних пользователей этого не предлагает. Не помешает проверить, так как это был бы самый простой способ.
Поскольку это, вероятно, будет невозможно, существует несколько способов делать это.
Примечание: домен .local
относится к системе, известной как m(ulticast)DNS, также известной как zeroconf/bonjour/avahi – для технических деталей смотрите RFC. Она предоставляет разрешение имен и объявление услуг, если нет доступного выделенного DNS-сервера, хотя на OS X (bonjour) и Ubuntu (avahi) она включена по умолчанию.
Обновление: Я нашел метод avahi не сразу жизнеспособным, и настройка локального DNS имеет смысл только в том случае, если он может работать в качестве основного DNS для сети.
-
Большинство операционных систем поддерживают файл
hosts
, который содержит записи, такие какIP hostname
. Вы можете вручную добавить запись (замените x на правильный IP!)192.168.x.x dev.robi
в /etc/hosts
на каждом клиенте в локальной сети. Этот метод простой, но немного непрактичный, если IP-адреса или имена хостов часто меняются.
-
Как отмечено выше,
avahi-daemon
работает по умолчанию на Ubuntu. Вы можете настроить машину, чтобы она объявляла себя под несколькими именами, но на каждой машине в локальной сети должен работать mDNS-клиент, который должен разрешить новое имя хоста (на машинах с Windows служба bonjour от Apple устанавливается с iTunes). Попробуйте добавить192.168.x.x dev.robi.local
в /etc/avahi/hosts
и перезапустите службу с помощью sudo service avahi-daemon restart
. Теперь попробуйте, чтобы новое имя хоста было разрешено, например, пингом с другой машины.
Обновление: Описанный метод использования avahi для настройки псевдонима не срабатывает! Avahi не позволит привязать несколько имен хостов к одному IP, так как он всегда попытается зарегистрировать соответствующий PTR, что приводит к коллизии. Это ожидаемое и хорошее поведение.
Однако существует расширение avahi-alias, которое позволяет регистрировать псевдонимы (CNAME). К сожалению, эти псевдонимы не будут распознаны (по крайней мере) клиентами Windows, но, пока вы используете только клиенты с avahi, это предоставляет реальную возможность.
Чтобы установить avahi на системе Ubuntu, выполните
sudo apt-get install avahi-daemon libnss-mdns
-
Настройте локальный DNS-сервер. Я бы рекомендовал
dnsmasq
. Его можно установить с помощьюsudo apt-get install dnsmasq
. Он включает в себя DHCP-сервер, который вам нужно будет отключить. Его конфигурация хранится в/etc/dnsmasq.conf
. Чтобы отключить DHCP, установитеno-dhcp-interface=eth0
где eth0
– это интерфейс, соединяющий с локальной сетью.
dnsmasq автоматически считывает /etc/hosts
, поэтому добавьте ваше имя хоста в hosts
, как указано выше. В конце добавьте машину, на которой работает dnsmasq, в список DNS-серверов на каждом клиенте.
Обновление: У вас, вероятно, уже работает DNS-сервер, например, на вашем интернет-маршрутизаторе. Клиенты будут отправлять DNS-запросы на этот сервер. Вы не можете просто добавить вторичный DNS в конфигурацию ваших клиентов, так как он будет опрашиваться только в том случае, если основной DNS недоступен. Если только у вас нет постоянно работающей машины, которая может стать основным DNS для сети, нет способа заставить это работать.
В резюме: В среде только с Linux, где вы можете запускать avahi-daemon на каждом клиенте, метод avahi действительно предоставляет решение. Я сам пробовал это.
Поскольку вы, вероятно, не можете превратить машину в постоянно работающий DNS-сервер, установка и настройка dnsmasq
не рекомендуется.
Тем не менее, самый простой, хоть и немного неудобный метод – это добавить запись в файл hosts на каждом клиенте!
Ваша последняя проблема с разрешением DNS, вероятно, связана с работой dnsmasq. Я теперь фактически не рекомендую использовать dnsmasq, так как он не решит вашу проблему. Остановите службу sudo service dnsmasq stop
. Затем попробуйте host -v ro.archive.ubuntu.com
. Он должен разрешить, используя DNS Google 8.8.8.8, как указано в resolv.conf
.
Кроме того, если вы используете метод hosts
, не добавляйте домен .local
, так как он зарезервирован для mDNS. Вместо этого просто поставьте
192.168.0.5 dev.robi
в /etc/hosts
, а не dev.robi.local
.
Ответ или решение
Вопрос: Как изменить IP-адрес Ubuntu сервера на веб-адрес?
Для того чтобы связать IP-адрес вашего сервера Ubuntu с веб-адресом (например, 192.168.x.xxx на dev.robi.local), вам необходимо рассмотреть несколько методов, каждый из которых имеет свои преимущества и недостатки. Важно понимать, что правильная настройка DNS (Domain Name System) и маппинга имен поможет обеспечить доступность вашего сервера по желаемому веб-адресу.
1. Редактирование файла hosts
Файл /etc/hosts позволяет вам настроить локальное разрешение имен без необходимости в DNS-сервере. Это наиболее простой способ, особенно если у вас ограниченное количество клиентов в локальной сети:
-
Откройте файл
/etc/hosts
на каждом клиенте в вашей локальной сети с помощью текстового редактора:sudo nano /etc/hosts
-
Добавьте строку, соответствующую вашему серверу:
192.168.0.x dev.robi
Замените
192.168.0.x
на реальный IP-адрес вашего сервера. -
Сохраните изменения и закройте редактор.
Этот метод прост в реализации, но требует ручного редактирования на каждом клиенте. Это может быть неудобно, если IP-адреса или имена хостов часто меняются.
2. Использование Avahi (mDNS)
Если вы хотите использовать возможность автоматического обнаружения устройств в вашей сети, можно настроить Avahi
, который поддерживает mDNS:
-
Убедитесь, что
Avahi
установлен:sudo apt-get install avahi-daemon libnss-mdns
-
Добавьте запись в
/etc/avahi/hosts
:192.168.0.x dev.robi.local
-
Перезапустите службу
Avahi
:sudo service avahi-daemon restart
Теперь другие устройства в вашей сети, поддерживающие mDNS (например, устройства с Windows и macOS), смогут разрешить dev.robi.local в ваш IP-адрес.
Обратите внимание: Этот метод работает только в средах, где на каждом устройстве запущен клиент mDNS. Для поддержки Windows-устройств может потребоваться установка Bonjour.
3. Настройка локального DNS-сервера (dnsmasq)
Если ваша сеть более сложная или вы хотите централизованное управление, вы можете настроить локальный DNS-сервер, такой как dnsmasq
:
-
Установите dnsmasq:
sudo apt-get install dnsmasq
-
Откройте конфигурационный файл
/etc/dnsmasq.conf
:sudo nano /etc/dnsmasq.conf
-
Отключите DHCP, если ваша сеть уже его использует:
no-dhcp-interface=eth0
Здесь
eth0
– это интерфейс, который подключен к локальной сети. -
Добавьте запись в файл
/etc/hosts
, чтобы dnsmasq мог ее использовать. -
Перезапустите dnsmasq:
sudo service dnsmasq restart
Теперь вы можете настроить каждое устройство в вашей сети использовать ваш сервер DNS (например, IP-адрес вашего сервера) для отправки DNS-запросов.
Заключение
Выбор метода зависит от ваших потребностей и структуры сети. Для простых локальных сетей часто достаточно редактирования файла /etc/hosts
на каждом клиенте или использования Avahi. Однако в более крупных сетях рекомендуется использовать локальный DNS-сервер для централизованного управления именами.
Помните, что при использовании имени с .local
вы ограничиваете его использование в локальной сети, так как .local
зарезервировано для mDNS. Рекомендуется использовать простое имя, например, просто dev.robi
, без указания .local
.
Выбор правильного метода позволяет обеспечить надежный доступ к вашему серверу по удобному веб-адресу, улучшая пользователский опыт и упрощая администрирование.