Укажите уникальные DHCP-имена хостов для нескольких сетевых интерфейсов.

Вопрос или проблема

Я запускаю 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 для каждого интерфейса.

Шаги по настройке сетевых интерфейсов

  1. Настройка сетевых адаптеров: У вас уже правильно настроены два сетевых адаптера в VM. Они должны быть конфигурированы для динамического получения IP-адресов с помощью DHCP.

    Ваша текущая конфигурация /etc/netplan/00-installer-config.yaml выглядит следующим образом:

    network:
     ethernets:
       ens160:
         dhcp4: true
       ens192:
         dhcp4: true
     version: 2
  2. Применение изменений: После внесения изменений вам необходимо применить конфигурацию командой netplan apply. Убедитесь, что обе сетевые интерфейсы получили свои IP-адреса, используя команду ifconfig.

  3. Настройка конфигурации 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 сервер мог различать запросы от различных интерфейсов.

  4. Проверка работы: После сохранения изменений в dhclient.conf, перезагрузите сетевые интерфейсы либо виртуальную машину. Для проверки работы выполните следующую команду:

    sudo dhclient -r ens160 && sudo dhclient ens160
    sudo dhclient -r ens192 && sudo dhclient ens192

    Это позволит обновить IP-адреса и имена хостов на вашем DHCP сервере.

  5. Дополнительные проверки: Проверьте логи DHCP на сервере Unifi, чтобы убедиться, что уникальные имена хостов регистрируются корректно. Если имена по-прежнему отображаются как ‘experimental’, убедитесь, что ваш DHCP сервер настроен на прием идентификаторов клиентов и имен хостов.

Возможные трудности и их решения

  1. Игнорирование конфигурации: Если конфигурация по-прежнему игнорируется, проверьте наличие возможных конфигураций в других местах, таких как dhclient-exit-hooks или дополнительные файлы в директории /etc/dhcp/dhclient.conf.d/.

  2. Проблемы с сетью: Убедитесь, что ваш DHCP сервер (Unifi) не имеет конфликтующих или фиксированных записей для указанных имен хостов.

  3. Сетевые настройки ESXi: Проверьте настройки сетевых переключателей в ESXi, чтобы убедиться, что они не ограничивают трафик DHCP или не применяют странные политики.

Используя перечисленные шаги и рекомендации, вы сможете настроить уникальные DHCP имена для разных сетевых интерфейсов на Ubuntu Server, что позволит вам успешно развернуть необходимые экземпляры Pi-hole.

Оцените материал
Добавить комментарий

Капча загружается...