У меня есть VPS-сервер, размещенный с использованием Xen от хостинг-провайдера. Мне присвоено несколько IP-адресов (*. *. 56.234, *. *. 56.235, *. *. 56.236, ...), однако есть одно физическое сетевое устройство eth0.
Хост использует первый из пула (*. *. 56.234). Я хочу, чтобы мой контейнер использовал *. *. 56.235 и был полностью автономным. Другими словами, адрес .235 должен быть доступен только для контейнера, а .234 - для хоста, чтобы я мог запускать две разные службы как на хосте, так и в контейнере, где оба они прослушивают один и тот же порт.
Думаю, я испортил записи конфигурации, так как смог запустить сеть в контейнере, но:
Вот моя конфигурация (обратите внимание, что X, Y обозначают общедоступный диапазон, ни один из них не является диапазоном LAN)
# The primary network interface
allow-hotplug eth0
iface eth0 inet static
address X.Y.56.234
netmask 255.255.255.248
network X.Y.56.232
broadcast X.Y.56.239
gateway X.Y.56.233
dns-nameservers 8.8.8.8
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
###################
address X.Y.56.235
network X.Y.56.232
broadcast X.Y.56.239
gateway X.Y.56.233
dns-nameservers 8.8.8.8
auto lxcnet0
iface lxcnet0 inet static
address X.Y.56.235
network X.Y.56.232
broadcast X.Y.56.239
gateway X.Y.56.233
dns-nameservers 8.8.8.8
## Network
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = lxcnet0
lxc.network.hwaddr = 00:FF:AA:11:22:33
lxc.network.link = br0
lxc.network.ipv4 = X.Y.56.235/32
Вы поступили частично неправильно. IP-адрес хоста должен быть на интерфейсе моста (по какой-то причине сетевой стек Linux не работает должным образом, когда IP-адрес настроен на одной из ветвей), а IP-адрес контейнера должен быть на интерфейсе контейнера, но со стороны контейнера, а не с хоста один (и, вероятно, поэтому у вас бывают спайки). Кроме того, вы можете опустить IP-адрес контейнера в его конфигурации, достаточно иметь конфигурацию IP только из ОС контейнера (и очень удобно иметь адрес контейнера только в одном месте).