Вопрос или проблема
Я запускаю Ubuntu Server 20.04 в виртуальной машине под ESXi на своем домашнем сервере. Я хотел бы, чтобы у виртуальной машины было два уникальных IP-адреса с целью запуска двух отдельных экземпляров PiHole в контейнерах Docker.
Я настроил два сетевых адаптера в виртуальной машине и затем настроил /etc/netplan/00-installer-config.yaml следующим образом:
network:
ethernets:
ens160:
dhcp4: true
ens192:
dhcp4: true
version: 2
После выполнения netplan apply
у меня появилось два интерфейса, каждый с собственным IP через DHCP.
# ifconfig
ens160: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.212 netmask 255.255.255.0 broadcast 10.0.0.255
...
ens192: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 10.0.0.213 netmask 255.255.255.0 broadcast 10.0.0.255
...
Затем я отредактировал /etc/dhcp/dhclient.conf
, закомментировав параметр по умолчанию ‘send host-name’ и заменив его на два параметра, специфичных для интерфейса:
#send host-name = gethostname();
interface "ens160" {
send host-name = "что-то-другое-1";
}
interface "ens192" {
send host-name = "что-то-другое-2";
}
Этот шаг, похоже, не работает. DHCP-сервер (Unifi) все еще сообщает имя хоста как ‘experimental’. На самом деле, я пытался просто поменять существующий gethostname()
на какое-то другое имя хоста, и даже это, похоже, не работает.
Я пытался изменить /etc/hostname
, чтобы использовать что-то другое, и это сработало. Поэтому кажется, что параметры в /etc/dhcp/dhclient.conf
по какой-то причине просто игнорируются.
Может кто-нибудь сказать, что я делаю не так? Спасибо!
Я считаю, что проблема в том, что каждому интерфейсу нужна другая “машина состояний” DHCP. Чтобы сделать это, вы назначаете каждому из них различный идентификатор клиента, как это:
# send host-name = gethostname();
interface "enp2s0" {
send dhcp-client-identifier "officemac";
send host-name "officemac";
}
interface "enp2s0:0" {
send dhcp-client-identifier "media";
send host-name "media";
}
Ответ или решение
Уникальные DHCP имена хостов для нескольких сетевых интерфейсов в Ubuntu Server 20.04
Ваша задача заключается в настройке двух уникальных IP-адресов для разных сетевых интерфейсов на виртуальной машине Ubuntu Server 20.04. Это необходимо для запуска двух отдельных экземпляров Pi-hole в контейнерах Docker, что требует корректной конфигурации параметров DHCP для каждого интерфейса.
Шаги по настройке сетевых интерфейсов
-
Настройка сетевых адаптеров: У вас уже правильно настроены два сетевых адаптера в VM. Они должны быть конфигурированы для динамического получения IP-адресов с помощью DHCP.
Ваша текущая конфигурация
/etc/netplan/00-installer-config.yaml
выглядит следующим образом:network: ethernets: ens160: dhcp4: true ens192: dhcp4: true version: 2
-
Применение изменений: После внесения изменений вам необходимо применить конфигурацию командой
netplan apply
. Убедитесь, что обе сетевые интерфейсы получили свои IP-адреса, используя командуifconfig
. -
Настройка конфигурации DHCP клиента: Вы правильно отредактировали
/etc/dhcp/dhclient.conf
, комментируя строкуsend host-name = gethostname();
и добавив уникальные имена для каждого интерфейса.Однако, чтобы обеспечить правильное присвоение имен хостов, необходимо добавить уникальный идентификатор клиента DHCP для каждого интерфейса. Это делается следующим образом:
#send host-name = gethostname(); interface "ens160" { send dhcp-client-identifier "имя_для_ens160"; send host-name "something-else-1"; } interface "ens192" { send dhcp-client-identifier "имя_для_ens192"; send host-name "something-else-2"; }
Заметьте, что
dhcp-client-identifier
должен быть уникальным для каждого интерфейса, чтобы DHCP сервер мог различать запросы от различных интерфейсов. -
Проверка работы: После сохранения изменений в
dhclient.conf
, перезагрузите сетевые интерфейсы либо виртуальную машину. Для проверки работы выполните следующую команду:sudo dhclient -r ens160 && sudo dhclient ens160 sudo dhclient -r ens192 && sudo dhclient ens192
Это позволит обновить IP-адреса и имена хостов на вашем DHCP сервере.
-
Дополнительные проверки: Проверьте логи DHCP на сервере Unifi, чтобы убедиться, что уникальные имена хостов регистрируются корректно. Если имена по-прежнему отображаются как ‘experimental’, убедитесь, что ваш DHCP сервер настроен на прием идентификаторов клиентов и имен хостов.
Возможные трудности и их решения
-
Игнорирование конфигурации: Если конфигурация по-прежнему игнорируется, проверьте наличие возможных конфигураций в других местах, таких как
dhclient-exit-hooks
или дополнительные файлы в директории/etc/dhcp/dhclient.conf.d/
. -
Проблемы с сетью: Убедитесь, что ваш DHCP сервер (Unifi) не имеет конфликтующих или фиксированных записей для указанных имен хостов.
-
Сетевые настройки ESXi: Проверьте настройки сетевых переключателей в ESXi, чтобы убедиться, что они не ограничивают трафик DHCP или не применяют странные политики.
Используя перечисленные шаги и рекомендации, вы сможете настроить уникальные DHCP имена для разных сетевых интерфейсов на Ubuntu Server, что позволит вам успешно развернуть необходимые экземпляры Pi-hole.