Информация
Услуги
  • Внедрение
  • Настройка
  • Поддержка
  • Ремонт
Контакты
Оплата
Новости
Доставка
Загрузки
Форум
Настройка
    info@proxmox.su
    +7 (495) 320-70-49
    Заказать звонок
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Войти
    0 Сравнение
    0 Избранное
    0 Корзина
    Аспро: ЛайтШоп
    Телефоны
    +7 (495) 320-70-49
    Заказать звонок
    0
    0
    0
    Аспро: ЛайтШоп
    • +7 (495) 320-70-49
      • Назад
      • Телефоны
      • +7 (495) 320-70-49
      • Заказать звонок
    • info@proxmox.su
    • Москва, Бакунинская улица, 69с1
    • Пн-Пт: 09-00 до 18-00
      Сб-Вс: выходной
    • 0 Сравнение
    • 0 Избранное
    • 0 Корзина
    Главная
    Форум
    Proxmox Виртуальная Среда
    [lxc/#676] Запрос на функцию: назначение физического сетевого интерфейса (NIC) для LXC-контейнеров в Proxmox 4.0

    Форумы: Proxmox Виртуальная Среда, Proxmox Backup Server, Proxmox Mail Gateway, Proxmox Datacenter Manager
    Поиск  Пользователи  Правила  Войти
    Страницы: 1
    RSS
    [lxc/#676] Запрос на функцию: назначение физического сетевого интерфейса (NIC) для LXC-контейнеров в Proxmox 4.0, Proxmox Виртуальная Среда
     
    batonac
    Guest
    #1
    0
    02.08.2015 04:18:00
    Всем привет! Я только что зарегистрировался на форуме и с нетерпением жду общения здесь. Надеюсь, это подходящее место, чтобы предложить или обсудить идею для новой функции. Я играюсь с PVE 4.0, особенно с интеграцией LXC. В моей конфигурации мне очень хотелось бы иметь возможность подключать один из контейнеров к физической сетевой карте на хосте (без бриджинга). В стандартной LXC-конфигурации это так же просто, как:

    Code:
    lxc.network.type = phys
    lxc.network.link = eth0
    lxc.network.name = wan0

    Надеюсь, что такая простая настройка будет легко реализуема в Proxmox. Также надеюсь, что нет каких-то ограничений по этому поводу, ведь, на мой взгляд, это действительно полезная функция. Кстати, спасибо за отличный продукт. PVE — просто супер!
     
     
     
    fabian
    Guest
    #2
    0
    04.07.2016 08:58:00
    Похоже, что здесь всё работает, по крайней мере с "фиктивным" интерфейсом — позже попробую с настоящим физическим интерфейсом NIC. Если возможно, было бы здорово получить лог отладки, созданный с помощью lxc-start. Здесь при выключении контейнера и корректном возврате сетевого устройства "test" к хосту выдается следующее:  
    Код: ...  
    lxc-start 1467615185.311 DEBUG lxc_start - start.c:signal_handler:316 - процесс инициализации контейнера завершился  
    lxc-start 1467615185.311 DEBUG lxc_start - start.c:__lxc_start:1239 - Контейнер останавливается  
    lxc-start 1467615185.311 DEBUG lxc_start - start.c:__lxc_start:1254 - Возврат физических NIC обратно в пространство имён хоста  
    lxc-start 1467615185.311 INFO lxc_conf - conf.c:lxc_rename_phys_nics_on_shutdown:2662 - происходит сброс имён 1 NIC  
    lxc-start 1467615185.333 INFO lxc_conf - conf.c:lxc_rename_phys_nics_on_shutdown:2666 - сброс NIC 7 на test  
    ... Перезагрузка внутри контейнера тоже работает как надо.
     
     
     
    fabian
    Guest
    #3
    0
    04.07.2016 09:52:00
    Дополнительное расследование выявило корень проблемы: lxc выполняет следующие шаги для физических сетевых устройств: возвращает устройства обратно в сетевой неймспейс хоста и переименовывает устройства в их оригинальные имена. Первый шаг не удастся, если устройство, которое перемещают, имеет имя (в контейнере), которое уже существует (на хосте). В этом случае второй шаг тоже провалится, потому что устройство, которое должно было переименоваться (в неймспейсе хоста), не существует — его просто не переместили на первом шаге (доступ идёт по индексу, а не по имени). Сейчас простое решение — использовать имя устройства в контейнере, которого нет на хосте (кстати, имя не обязательно должно начинаться с "eth"). Я проверю, сохраняется ли эта проблема в LXC 2.0, в любом случае, как только процесс LXC завершится, устройство всё равно должно вернуться в неймспейс хоста (потому что неймспейс контейнера исчезает), но оно будет иметь неправильное имя (у меня оно стабильно переименовывалось в "dev5", потому что это было пятое устройство). Просто переименуйте его командой "ip link set OLDNAME name NEWNAME", например, "ip link set dev5 name eth3". Тогда контейнер должен снова загрузиться.
     
     
     
    bmwt
    Guest
    #4
    0
    11.01.2016 22:46:00
    Есть ли какие-то новости по этому поводу? Даже просто переменная для 100.conf была бы отлично, графический интерфейс не нужен, просто что-то, что можно добавить в конфиг, было бы супер. Спасибо! - brendan
     
     
     
    mattlach
    Guest
    #5
    0
    28.06.2016 02:24:00
    То же самое у меня. Я очень долго пытался запустить ntopng в контейнере (с порта wswitch, который скопирован с моего WAN-порта), и никак не могу настроить конфигурацию Physical NIC -> VMBR bridge -> LXC контейнер так, чтобы всё корректно работало в режиме promiscuous, сколько бы я ни пробовал. Читал в документации LXC про опцию "phys" в стандартном LXC и подумал, что это может помочь. А пока эта возможность не добавлена в GUI, можно ли просто изменить мою строку конфигурации ниже: на такую? Это сработает? Если нет, может, есть другой способ сделать это пока? Спасибо, Мэтт
     
     
     
    mattlach
    Guest
    #6
    0
    30.06.2016 23:51:00
    Итак, да, я только что проверил, и это полностью воспроизводится с последними Enterprise-пакетами в версии 4.2 и контейнером LXC на Ubuntu 14.04. Шаги для воспроизведения:  
    1.) Создать LXC-контейнер с такими строками в конфигурационном файле:  
    Код:  
    lxc.network.type = phys  
    lxc.network.link = *доступное сетевое устройство хоста* (у меня eth3)  
    lxc.network.name = *имя этого устройства внутри контейнера* (у меня eth1)  
    2.) Проверить сетевое устройство хоста (eth3) до запуска: (из консоли хоста)  
    Код:  
    # ifconfig eth3  
    eth3      Link encap:Ethernet  HWaddr 00:1b:21:88:ab:cb  
             BROADCAST MULTICAST  MTU:1500  Metric:1  
             RX packets:0 errors:0 dropped:0 overruns:0 frame:0  
             TX packets:0 errors:0 dropped:0 overruns:0 carrier:0  
             collisions:0 txqueuelen:1000  
             RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)  
             Interrupt:42 Memory:faee0000-faf00000  
    3.) Запустить контейнер.  
    4.) Проверить корректную работу физического Ethernet-устройства внутри контейнера (у меня eth1).  
    5.) Выполнить команду reboot внутри контейнера. Контейнер выключается как положено, но не перезапускается. Попытка запустить контейнер вручную приводит к ошибке.  
    6.) Проверить сетевое устройство хоста (eth3) после: (из консоли хоста)  
    Код:  
    # ifconfig eth3  
    eth3: ошибка при получении информации об интерфейсе: устройство не найдено  
    Я понятия не имею, связано ли это с проблемой в самом LXC или с реализацией в Proxmox, но хотел, чтобы об этом знали.
     
     
     
    fabian
    Guest
    #7
    0
    28.06.2016 08:40:00
    Это не сработает, значения netX допускают только определения сети veth. Однако вы можете задать "lxc.network.XX" (все сетевые опции из "man lxc.container.conf" поддерживаются и передаются в LXC через Proxmox) — но учтите, что такие интерфейсы будут управляться только LXC и никак не интегрируются в инструменты Proxmox (то есть они не подключаются к фаерволу, не отображаются в графическом интерфейсе, не настраиваются в контейнере и вообще никак не проверяются). Короче говоря, это продвинутый режим, который мы фактически не поддерживаем, но он есть на случай, если вам жизненно нужна мощь и гибкость, которую он даёт.
     
     
     
    mattlach
    Guest
    #8
    0
    28.06.2016 16:42:00
    Фабиан, спасибо. Эти строки нужно добавить как отдельные в один и тот же файл "/etc/pve/lxc/xxx.conf"? Спасибо, Мэтт
     
     
     
    fabian
    Guest
    #9
    0
    29.06.2016 08:58:00
    Да, вы можете посмотреть "man lxc.container.conf" для подробностей (сетевые устройства группируются автоматически, поэтому порядок важен). В PVE есть белый список опций lxc, которые передаются дальше, все они копируются без изменений в сгенерированный конфигурационный файл lxc.
     
     
     
    mattlach
    Guest
    #10
    0
    30.06.2016 07:34:00
    Ну, я попробовал такую конфигурацию:  
    Код:  
    # cat /etc/pve/lxc/150.conf  
    arch: amd64  
    cpulimit: 2  
    cpuunits: 1024  
    hostname: ntopng  
    memory: 2048  
    net0: name=eth0,bridge=vmbr0,gw=xxx.xxx.xxx.xxx,hwaddr=66:35:62:65:38:62,ip=xxx.xxx.xxx.xxx/xx,type=veth  
    ostype: ubuntu  
    rootfs: volume=container:subvol-150-disk-1,size=32G  
    swap: 512  
    lxc.network.type = phys  
    lxc.network.link = eth3  
    lxc.network.name = eth1  

    Сначала вроде работало, но после перезагрузки контейнера eth3 устройство не возвращается хосту. Как-то оно пропадает. eth3 просто исчезает. Из-за этого контейнер не может нормально загрузиться обратно.
     
     
     
    fabian
    Guest
    #11
    0
    30.06.2016 09:55:00
    Можешь попробовать запустить контейнер в режиме переднего плана с отладочным выводом ("lxc-start -n ID -F -ldebug -o pathtologfile"), а потом его выключить. Это должно дать какую-то информацию о сетевых устройствах.
     
     
     
    mattlach
    Guest
    #12
    0
    30.06.2016 17:19:00
    Да, проблема не в том, что я не понимаю, почему контейнер не запускается. Позвольте пояснить. Контейнер запустился нормально в первый раз и корректно использовал настроенный мною физический интерфейс. Но при последующих запусках он не стартовал, потому что после перезагрузки физический сетевой интерфейс (eth3), который я указал для использования, исчез с хоста.  

    Теперь контейнер уже не запускается, потому что интерфейс на хосте, который я ему "подсовываю", просто пропал, и это вызывает ошибку. Команда: # ifconfig eth3  
    eth3: ошибка при получении информации об интерфейсе: устройство не найдено  

    Очевидно, что контейнер, которому сказали использовать eth3 в качестве физического NIC, не сможет работать, если этого интерфейса просто нет.  

    Меня больше всего интересует, почему eth3 пропал после выключения контейнера.  

    Мне кажется, это связано с тем, как LXC берет под контроль Ethernet-интерфейс при его назначении с помощью phys.  

    Видимо, он как-то неверно возвращает интерфейс в исходное состояние на хосте. Возможно, это баг.  

    Как только у меня появится возможность перезагрузить сервер и вернуть eth3 (пока не могу, там запущены другие процессы), я попробую воспроизвести проблему.
     
     
     
    fabian
    Guest
    #13
    0
    01.07.2016 09:54:00
    Я разберусь с этим. На самом деле я хотел запустить этот тест в режиме переднего плана (то есть при первой рабочей загрузке), чтобы посмотреть, что пишет LXC при выключении/очистке. Но раз уж проблема воспроизводится, я сделаю это сам.
     
     
     
    mattlach
    Guest
    #14
    0
    01.07.2016 17:12:00
    Пожалуйста, дайте знать, если я могу предоставить дополнительную информацию! --Matt
     
     
     
    nz_monkey
    Guest
    #15
    0
    08.08.2016 03:08:00
    Хочу просто поддержать этот запрос на добавление функции. Мы используем обходной путь, чтобы передать SR-IOV VF в LXC-контейнер, чтобы запускать Suricata на полной скорости линии. В целом это работает, но если изменить "lxc.network.name" в vmid.conf, изменения не применятся до перезагрузки хоста. Было бы здорово иметь официальную и поддерживаемую возможность делать это. Мы живём в эпоху NFV, и эта задача со временем будет встречаться всё чаще и чаще.
     
     
     
    Chentoa
    Guest
    #16
    0
    19.08.2019 18:02:00
    Плюс один здесь тоже. Есть ли шанс, что это случится в будущем?
     
     
     
    elurex
    Guest
    #17
    0
    20.08.2019 09:41:00
    Это можно сделать с помощью lxc.net.[ i ].type = phys
     
     
     
    pocok
    Guest
    #18
    0
    17.09.2020 12:00:00
    +1 за это, было бы здорово, если бы в графическом интерфейсе появилась возможность назначать сетевой интерфейс как физический для LXC-контейнера. Тем более, что интерфейсы типа "veth" уже аккуратно отображаются во вкладке "network".
     
     
     
    Страницы: 1
    Читают тему
    +7 (495) 320-70-49
    info@proxmox.su

    Конфиденциальность Оферта
    © 2026 Proxmox.su
    Главная Каталог 0 Корзина 0 Избранные Кабинет 0 Сравнение Акции Контакты Услуги Бренды Отзывы Компания Лицензии Документы Реквизиты Поиск Блог Обзоры