Назад | Перейти на главную страницу

Мост LXC с несколькими IP-адресами

При попытке настроить небольшой сервер с контейнерами LXC я столкнулся с проблемой:

Я хочу назначить 4 разных IP-адреса: 1 адрес для хоста и 3 адреса в другой сети для контейнеров.

Настройка 4 IP-адресов с использованием виртуальных интерфейсов (eth0: 1, eth0: 2 и т. Д.) Вообще не проблема, но LXC не работает с этими виртуальными интерфейсами.

IP-адрес хоста - 2.2.2.2 (маска сети 255.255.252.0). Три IP-адреса контейнера: 33.33.33.33, 33.33.33.44 и 33.33.33.55. Сетевая маска для всех: 255.255.255.255.

Я изо всех сил пытаюсь настроить сеть для хостов и контейнеров. В других сообщениях объясняются аналогичные настройки с разными, но управляемыми подсетями (соединение контейнеров LXC с хост-сетью с различным диапазоном IP-адресов) или предложите использовать виртуальные интерфейсы (Несколько IP-адресов в одной подсети на одном хосте), чего мы здесь сделать не можем.

Это моя конфигурация:

Хост: файл интерфейсов

source /etc/network/interfaces.d/*  

auto lo                            
iface lo inet loopback              

auto br0                        
iface br0 inet static          
    address 2.2.2.2  
    netmask 255.255.252.0  
    broadcast 2.2.2.255
    gateway 2.2.2.1    
    bridge_ports eth0      
    bridge_fd 0            
    bridge_maxwait 0        

auto br0:1                    
iface br0:1 inet static        
    address 33.33.33.33
    netmask 255.255.255.255
auto br0:2                    
iface br0:2 inet static        
    address 33.33.33.44
    netmask 255.255.255.255

auto br0:3                    
iface br0:3 inet static        
    address 33.33.33.55
    netmask 255.255.255.255

Это единственный известный мне способ привязать несколько IP-адресов к интерфейсу. Мосту необходимо прослушивать IP-адреса контейнера для получения пакетов, не так ли?

Контейнер: файл интерфейсов

Маленький файл, так как все параметры хранятся в конфигурации LXC.

auto lo                
iface lo inet loopback

auto eth0              
iface eth0 inet manual

LXC: конфигурация сети

Это сетевая часть моего файла конфигурации LXC:

lxc.network.type = veth                  
lxc.network.flags = up                  
lxc.network.link = br0                  
lxc.network.name = eth0                  
lxc.network.ipv4 = 33.33.33.33/32    
lxc.network.ipv4.gateway = 2.2.2.2

Однако соединение просто не работает. Контейнеру назначается адрес, но IP-пакеты, отправленные из контейнера, не достигают хоста.

Вот результат ip и route:

root@container:~# route -n                                                      
Kernel IP routing table                                                      
Destination     Gateway   Genmask         Flags Metric Ref    Use Iface
0.0.0.0         2.2.2.2   0.0.0.0         UG    0      0        0 eth0
2.2.2.2         0.0.0.0   255.255.255.255 UH    0      0        0 eth0



root@container:~# ip 
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
    inet 127.0.0.1/8 scope host 
       valid_lft forever preferred_lft 
    inet6 ::1/128 scope 
       valid_lft forever preferred_lft 
15: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state UP
group default qlen 1000    
    link/ether ae:af:7c:e4:b5:4d brd ff:ff:ff:ff:ff:
    inet 33.33.33.33/32 brd 255.255.255.255 scope global 
       valid_lft forever preferred_lft 
    inet6 fe80::acaf:7cff:fee4:b54d/64 scope 
       valid_lft forever preferred_lft forever  

И те же подробности, предоставленные ведущим:

root@host:~# route -n                                                        
Routing Table 
Destination     Router      Genmask         Flags Metric Ref    Use Iface  
2.2.2.0         0.0.0.0     255.255.252.0   U     0      0        0 br0    
0.0.0.0         2.2.2.1     0.0.0.0         UG    0      0        0 br0    

root@host:~# ip 
1: lo: <LOOPBACK,UP,LOWER_UPmtu 65536 qdisc noqueue state UNKNOWN group 
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:
    inet 127.0.0.1/8 scope host 
       valid_lft forever preferred_lft        
    inet6 ::1/128 scope 
       valid_lft forever preferred_lft 
2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast master br0
state UP group default qlen 1000  
    link/ether 2e:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
16: veth93SMLW: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc pfifo_fast state
UP group default qlen 1000      
    link/ether dd:c1:1e:68:90:47 brd ff:ff:ff:ff:ff:
    inet6 fe80::fcc1:1eff:fe68:9047/64 scope 
       valid_lft forever preferred_lft 
17: br0: <BROADCAST,MULTICAST,UP,LOWER_UPmtu 1500 qdisc noqueue state UP group
default                          
    link/ether 4d:cf:22:12:dd:e2 brd ff:ff:ff:ff:ff:
    inet 2.2.2.2/22 brd 1.1.1.255 scope global 
       valid_lft forever preferred_lft 
    inet 33.33.33.33/32 brd 2.2.2.2 scope global br0:
       valid_lft forever preferred_lft 
    inet 33.33.33.44/32 brd 3.3.3.3 scope global br0:
       valid_lft forever preferred_lft 
    inet 33.33.33.55/32 brd 4.4.4.4 scope global br0:
       valid_lft forever preferred_lft 
    inet6 fe80::829:caff:fece:bbd7/64 scope                             
       valid_lft forever preferred_lft forever      

У вас есть подсказки, в какой части конфигурации я испортил?

Спасибо за вашу помощь!