Несколько виртуальных сетевых интерфейсов с разными MAC-адресами (type = macvlan)


При использовании схемы veth, все запущенные контейнеры, принадлежащие одной сети, видны и доступны друг-другу. Например, можно из хост-системы по ssh подсоединиться к машине 10.0.0.10, а из консоли этой машины – попасть на консоль 10.0.0.20 и т.д.
Во избежание подобных ситуаций, т.е. в тех случаях, когда нужна полная изоляция контейнеров – следует использовать схему macvlan.
Для демонстрации, на хост-машине редактируем файл /etc/network/interfaces, дописывая блок настроек br0:

   # Имеющиеся настройки lo и eth0 -- не трогаем
   
   auto lo   
   iface lo inet loopback   
    
   auto  eth0   
   iface eth0 inet static   
     address 192.168.0.186 
     broadcast 192.168.0.191  
     netmask 255.255.255.240   
     gateway 192.168.0.190 
   
   # Создаем bridge br0
   
   auto br0  
   iface br0 inet static   
     bridge_ports none 
     bridge_fd 0 
     address 10.0.0.1  
     netmask 255.255.255.0 

Файлы конфигурации каждого контейнера приводим к виду:

   lxc.network.type         = macvlan
   lxc.network.macvlan.mode = vepa
   lxc.network.flags        = up
   lxc.network.name         = eth1
   lxc.network.link         = br0
   lxc.network.ipv4.gateway = 10.0.0.1
   lxc.network.ipv4         = 10.0.0.10/24  # тут каждому контейнеру присваиваем собственный ip

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

  NAME     STATE    IPV4       IPV6  AUTOSTART                                                                                                            
  ----------------------------------------------                                                                                                            
  test_01  RUNNING  10.0.0.10  -     NO                                                                                                                   
  test_02  RUNNING  10.0.0.20  -     NO

При использовании macvlan следует указать один из режимов:

  • lxc.network.macvlan.mode = vepa

В данном режиме, контейнеры ни из хост-системы ни между собой даже не пингуются

  • lxc.network.macvlan.mode = bridge

Режим bridge создает особый мост (не то же самое, что стандартный Linux-bridge), который позволяет контейнерам общаться друг с другом, но изолирует их интерфейсы от хост-системы.

  • lxc.network.macvlan.mode = private

Данный режим запрещает любую связь между LXC контейнерами.

  • lxc._nastrojka_seti_type_macvlan.txt
  • Последние изменения: 2015/11/19 00:00
  • (внешнее изменение)