Настройки в netplan не применены.

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

Нужен совет. У меня есть два сетевых интерфейса, я настраиваю отдельные IP-адреса и маршруты для каждого.

network:
  ethernets:
    enp4s0:
      dhcp4: нет
      dhcp6: нет
      addresses:
        - 192.168.0.222/24
    enp2s5:
      dhcp4: нет
      dhcp6: нет
      addresses:
        - 192.168.1.5/24
  version: 2
  renderer: networkd

Я нажимаю sudo netplan –debug apply и вижу, что настройки не применяются к одному из интерфейсов, что я делаю не так?

DEBUG:no netplan generated NM configuration exists
DEBUG:enp4s0 not found in {}
DEBUG:enp2s5 not found in {'enp4s0': {'dhcp4': False, 'dhcp6': False, 'addresses': ['192.168.0.222/24']}}
DEBUG:Merged config:
network:
  bonds: {}
  bridges: {}
  ethernets:
    enp2s5:
      addresses:
      - 192.168.1.5/24
      dhcp4: false
      dhcp6: false
    enp4s0:
      addresses:
      - 192.168.0.222/24
      dhcp4: false
      dhcp6: false
  ovs_ports: {}
  vlans: {}
  wifis: {}

Почему настройки для сетевого адаптера enp4s0 не применяются? Почему настройки для этого адаптера оказываются в другом адаптере (enp2s5)?

У меня есть ошибка DEBUG: enp3s0 not found in {}, но я решил продолжить и оставить все как есть.
Структура состояний интерфейсов должна определять наличие работающей конфигурации.
И вам, возможно, стоит рассмотреть возможность внесения этих изменений после перезагрузки.
Обходной путь: создайте представление текущей конфигурации для перезагрузки и доступа к представлениям.
Сначала вам нужно выполнить команды для подтверждения конфигурации и перезагрузки.
Но перед этим вам нужно убедиться, что конфигурация подходит для этого.
В поисках этой проблемы я наткнулся на несколько подсказок, что подобный DEBUG: может быть вызван отсутствием взаимодействия
между интерфейсами. Это отсутствие моста или туннеля между ними. Когда события в конечном итоге обрабатываются,
вы получаете сбой, потому что отправитель должен ссылаться на висячий указатель существования самого моста или туннеля в конфигурации netplan.
Отправителю не нужно знать о каких-либо получателях. Получатель, конечно, знает о отправителе; по крайней мере он знает тип сообщения, которое ему отправляется, так же как и в вашей предыдущей конфигурации, перед перезагрузкой, слушатель знает о событии, на которое он должен подписаться.

В данном случае следует указать, что использование генератора для двоичных данных является своего рода натяжкой без учета. Механизм перехода от одного типа к другому должен быть каким-то образом понятен (он не может содержать непечатаемые части). Если вы хотите иметь конфигурацию, которая может использоваться для обработки двоичных данных или всего остального, что не связано с указателями, то рано или поздно вы столкнетесь с монстром. Генератор может это сделать и сделает это охотно, если разработчики не использовали меры предосторожности по предупреждению/ошибке.

sudo netplan --debug generate показывает:

DEBUG: 18: 16: 37.189: У нас есть некоторые netdefs, пропустите их через последний раунд проверки
DEBUG: 18: 16: 37.189: enp3s0: установка значения по умолчанию для бэкенда на 1
DEBUG: 18: 16: 37.189: Конфигурация действительна
DEBUG: 18: 16: 37.189: lo: установка значения по умолчанию для бэкенда на 1
DEBUG: 18: 16: 37.189: Конфигурация действительна
DEBUG: 18: 16: 37.190: Генерация выходных файлов..
DEBUG: 18: 16: 37.190: NetworkManager: определение enp3s0 не для нас (бэкенд 1)
DEBUG: 18: 16: 37.190: NetworkManager: определение lo не для нас (бэкенд 1)

Вышеупомянутая исходная код является упрощенной частичной реализацией моего netplan, я предоставляю его, чтобы более наглядно показать, какая часть неверна, и хочу упростить ответ на решение проблемы. Я думаю, что основная проблема заключается в Конфигурация действительна и она работает так, как я хочу. Это означает, что ваш генератор включил обрезку netdefs без предварительного уведомления. Чтение, запись в конфигурацию yaml не вызывает никаких проблем. Вот почему я не нашел проблемы несоответствия из-за отсутствия найденных интерфейсов в источнике -_-!
Связывание является частью фиксированного конвейера, так что если вы хотите его использовать, вам нужно наследоваться от другого набора, созданного после перезагрузки.
Я хочу оставить DEBUG: enp4s5 not found in {} как есть, я думаю, что все зависит от вашей интерпретации пустоты. Используйте эти команды, чтобы заявить, что этот код является сокращенным, но действительным:

sudo netplan try
sudo netplan generate
sudo netplan apply
reboot

Преобразование в целое число также “разумно” в том смысле, что вы получаете обрезанное значение.
Затем посмотрите на ошибки. Если вы используете systemd-networkd:

networkctl
journalctl -b -u systemd-networkd

============================================================================

Есть подсказки, из-за которых может возникнуть ошибка DEBUG: enp3s0 не найден в {}, это связано с
настройкой Kind =. Это означает, что неправильное присвоение привело к ошибке генератора.
Проверьте эту внутреннюю ошибку:

NetDev has no Kind configured in /etc/systemd/network/10-netplan-lo.netdev. Ignoring
NetDev has no Kind configured in /etc/systemd/network/10-netplan-enp3s0.netdev. Ignoring

Рабочая теория, основанная на стеке вызовов Kind = методов, таких как gre, veth, недействительна для всей области (включая область взаимодействия) и таким образом предотвращает сбой метода маршрутизации трафика. В этот момент сцена, на которую ссылается элемент, не инициализирована (по-видимому), но обязательна на основе:

 Name = - имя интерфейса. Этот параметр обязателен.
 Kind = - тип интерфейса. Например, мост, связь, vlan, veth, sit и т.д. Этот параметр обязателен.

Мой обходной путь заключается в том, чтобы сделать Kind = вызываемым между интерфейсами и сделать так, чтобы источник был найден с добавленным элементом, так что в зависимости от ваших потребностей это может быть вариантом. Для проверки концепции дизайна, после перезагрузки, маршрутизируйте между интерфейсами, но на ваше усмотрение и в конечном итоге
DEBUG: enp3s0 not found in {} будет в итоге.

Ответ или решение

Когда настройки в Netplan не применяются, это может быть связано с несколькими факторами. В вашем случае мы видим, что конфигурация содержит две сетевые карты — enp4s0 и enp2s5 — с заданными статическими IP-адресами. Несмотря на то, что конфигурация выглядит корректной, возникают сообщения об ошибках, которые указывают на проблемы при применении настроек. Давайте разберем ваш случай подробнее и предложим возможные решения.

1. Проверьте наличие интерфейсов

Сообщение DEBUG: enp4s0 not found in {} указывает на то, что Netplan не обнаруживает интерфейс enp4s0. Это может произойти по следующим причинам:

  • Несоответствующее имя интерфейса: Убедитесь, что интерфейсы действительно называются enp4s0 и enp2s5. Вы можете проверить это с помощью команды:

    ip link show
  • Отсутствие интерфейса: Если ваш дистрибутив использует драйверы, которые не поддерживают автоматическое определение интерфейсов, интерфейс enp4s0 может не распознаваться. Убедитесь, что драйвера для вашей сетевой карты правильно установлены и загружены.

2. Проверьте синтаксис конфигурации

Ваш файл конфигурации в формате YAML выглядит корректным, но важно гарантировать, что он полностью соответствует требованиям формата. Я рекомендую проверить следующее:

  • Отступы и пробелы: Убедитесь, что отступы сделаны пробелами, а не табуляцией. Убедитесь, что каждый уровень отступа соответствует 2 пробелам.

  • Версия: Ваша версия установлена как version: 2, что является стандартным значением для Netplan. Убедитесь, что у вас установлен Netplan версии 0.99 или выше, чтобы избежать конфликтов.

3. Используйте отладку

Вы уже используете sudo netplan --debug apply, что является правильным подходом. Это дает вам более полное понимание того, что происходит. Если отладка показывает, что конфигурация валидна (Configuration is valid), но настройки по-прежнему не применяются, стоит проверить:

  • Системные логи: Дополнительно обратитесь к логам сетевых служб, чтобы выявить какие-либо ошибки или предупреждения:
    journalctl -u systemd-networkd

4. Проверьте конфликты с NetworkManager

В вашем сообщении отладки указано, что DEBUG:no netplan generated NM configuration exists. Это может свидетельствовать о том, что Netplan конфликтует с NetworkManager. Если у вас в системе установлен NetworkManager, убедитесь, что для управляемых интерфейсов используется правильный рендерер. В случае если NetworkManager не требуется, можно его отключить:

sudo systemctl stop NetworkManager
sudo systemctl disable NetworkManager

5. Перезагрузка и тестирование

После внесения изменений в конфигурацию необходимо применить настройки и перезагрузить систему:

sudo netplan apply
sudo reboot

Также вы можете использовать sudo netplan try для временного применения конфигурации, чтобы убедиться, что все работоспособно, прежде чем окончательно применить изменения.

6. Убедитесь в корректности настроек Kind

Проблема может быть связана и с неправильным определением Kind для Интерфейсов. Убедитесь, что для каждой сетевой карты определено корректное значение. Например, в конфигурации для bridge или bond необходимо явно указывать Kind.

Заключение

Совокупность предложенных методов поможет вам определить и устранить проблемы с применением настроек для Netplan. Убедитесь в правильности имен интерфейсов, конфигурационного файла и в отсутствии конфликтов с другими сетевыми управляющими программами, такими как NetworkManager. Применив все эти рекомендации, вы, вероятно, устраните возникшие проблемы и установите стабильную сетевую конфигурацию.

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

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