Экземпляр Ubuntu Amazon EC2 ifconfig не отображает интерфейсы, подключённые с помощью attach_network_interface.

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

Я запустил экземпляр c3.xlarge Ubuntu в VPC. Этот экземпляр поддерживает 4 интерфейса. Я использую EC2 Python API для create_network_interface и attach_network_interface, чтобы добавить eth1, eth2 и eth3. В консоли AWS экземпляр запущен и работает. Все 4 сетевых интерфейса отображаются в консоли AWS с правильным идентификатором подсети.

Когда я подключаюсь к экземпляру по SSH и использую “ifconfig” для отображения интерфейсов, показывается только eth0. Если я использую “ifconfig -a”, я вижу eth0-3, но только у eth0 назначен IP-адрес.

Я что-то упускаю?
Заранее спасибо….


Редактирование:
С панели управления EC2 в консоли AWS я нажал на экземпляр->Описание, прокрутил вниз до раздела “Сетевые интерфейсы”, там отображаются все eth0, eth1, eth2 и eth3. Если я нажимаю на eth1 – eth3, они все показывают IP-адрес и статус, как это:
Сетевой интерфейс eth1
Идентификатор интерфейса
eni-119f304f
Идентификатор VPC
vpc-873db7e2
Владелец аттачмента
17xxxxxxxx79
Статус аттачмента
attached
Время аттачмента
Пт 09 сен 10:58:58 GMT-700 2016
Удалить при завершении
false
Частный IP-адрес
10.31.2.12
Частное DNS-имя
ip-10-31-2-12.us-west-2.compute.internal

Эластичный IP-адрес

Проверка источника/назначения
true
Описание
cluster001-demux-peer1
Группы безопасности
cluster001-demux

Частные IP-адреса созданы и назначены тем сетевым интерфейсам с точки зрения AWS.

/etc/network/interfaces показывает обычные вещи:
auto lo
iface lo inet loopback

# Исходные интерфейсы
# Пожалуйста, проверьте /etc/network/interfaces.d перед изменением этого файла
# так как интерфейсы могут быть определены в /etc/network/interfaces.d
# ПРИМЕЧАНИЕ: основное ethernet устройство определено в
# /etc/network/interfaces.d/eth0
# См. LP: #1262951
source /etc/network/interfaces.d/*.cfg

Вы не слишком много упустили. Только у eth0 есть IP, поэтому по умолчанию ifconfig покажет только его. Другим интерфейсам либо нужны IP, либо у них нет конфигурации в файлах ваших интерфейсов, либо у них нет DHCP-сервисов в их двухуровневых доменах широковещания.

Как насчет предоставления содержимого /etc/networks/interfaces, чтобы мы могли увидеть, что и как должно быть? То есть, если вы не видите проблему сразу.

Я разобрался. Мне нужно добавить задержку, например, time.sleep(1), между API create_network_interface и attach_network_interface на Python. Это было не обязательно, но теперь, похоже, инфраструктура AWS изменилась, и мне действительно нужно добавить эту задержку.
Теперь все работает…

Если кто-то столкнулся с этой проблемой, я столкнулся с чем-то подобным. В нашем случае это было из-за этого https://github.com/amazonlinux/amazon-ec2-net-utils/issues/86, где существует гонка между присоединением сетевого интерфейса и тем, когда стартует процесс udev в системе systemd. Если присоединение происходит до запуска этого процесса systemd, ENI не будет добавлено.

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

Для тех, кто сталкивается с проблемами видимости сетевых интерфейсов на Ubuntu-инстансах Amazon EC2 после их подключения через API Python, данная ситуация может вызывать определенные трудности, особенно если вы видите интерфейсы в консоли AWS, но они не отображаются с помощью команды ifconfig на самом инстансе. Разберем эту проблему подробно с точки зрения её теории, примеров и применения решения.

Теория

Amazon Elastic Compute Cloud (EC2) предоставляет возможность масштабируемых вычислений в облаке Amazon Web Services (AWS). Сетевые интерфейсы в EC2 можно создать и прикрепить к инстансам, что расширяет их возможности сетевого соединения. Однако существует несколько подводных камней при конфигурации дополнительных интерфейсов, которые могут приводить к тому, что они не отображаются в ОС инстанса, как ожидается.

Когда вы создаете и подключаете дополнительные сетевые интерфейсы через API, взаимодействие с системой ОС может быть не синхронизировано, что ведет к недоразумениям относительно их сетевых конфигураций. В вашем случае, если вы видите интерфейсы в консоли AWS с соответствующими IP-адресами, а в системе на Ubuntu они не отображаются правильно, возможен ряд причин, таких как:

  1. Липсинг поддержки DHCP: Дополнительным интерфейсам может не присваиваться IP автоматически, если не настроена их адресация в системе.

  2. Отсутствие конфигурации интерфейсов: Ваша система может не содержать данных о новых интерфейсах, если отсутствуют соответствующие записи в файле конфигурации сетевых интерфейсов.

  3. Гоночные условия (race conditions): Возможна ситуация, когда интерфейсы подключаются к инстансу EC2 раньше или позже, чем система ожидает. Несоответствие между временем подключения и конфигурацией ОС может препятствовать корректной настройке.

Примеры

Вы обнаружили, что команда ifconfig по умолчанию отображает только интерфейсы с назначенными IP, однако ifconfig -a показывает все интерфейсы, но лишь eth0 с IP-адресом. Такое поведение указывает на отсутствие или неверную конфигурацию для дополнительных интерфейсов в системе.

Вы также упомянули, что проблема была разрешена добавлением задержки между вызовами create_network_interface и attach_network_interface. Это может указывать на то, что сеть не успевала должным образом обрабатывать изменения из-за малой задержки между операциями.

Применение

Решение задачи требует реализации пошагового подхода к конфигурации дополнительных сетевых интерфейсов.

  1. Настройка сети на уровне ОС:

    • Убедитесь, что в файле /etc/network/interfaces или в соответствующих файлах внутри /etc/network/interfaces.d/ прописаны все интерфейсы. Например:

      auto eth1
      iface eth1 inet dhcp
      
      auto eth2
      iface eth2 inet dhcp
      
      auto eth3
      iface eth3 inet dhcp
  2. Использование DHCP:

    • Убедитесь, что в вашей сети настроен DHCP-сервер, который сможет обрабатывать запросы от новых интерфейсов, или настроить статические IP-адреса, если использование DHCP невозможно.
  3. Рассмотрение гоночных условий:

    • Известные проблемы с Amazon EC2, как упоминалось в вашем случае, могут быть связаны с временными зависимостями. Важно каждый шаг выполнения давать системе достаточно времени на обработку событий через задержки или проверки на готовность.
  4. Тестирование и проверка:

    • Перепроверьте настройки после ввода изменений. Используйте команды ip link и ip addr как альтернативу ifconfig для диагностики проблем с сетевыми интерфейсами.
    • Перезапустите сетевые службы с помощью sudo service networking restart или перезагрузите инстанс, чтобы применить все изменения.

Таким образом, интеграция дополнительных сетевых интерфейсов в Amazon EC2 требует тщательной настройки и понимания взаимодействия между сетью AWS и операционной системой Ubuntu. Четкая структура и тестирование каждой фазы помогут избежать или оперативно решить возникающие конфликты и ошибки в их конфигурации.

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

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