LINUX.ORG.RU
решено ФорумAdmin

Избежать «подавления» ip'шника хост машины при бирджевании в lxc

 , , ,


0

1

Есть машина с единственным физическим интерфейсом enp1s0, настраиваю lxc контейнеры внутри, сделал bridge, как и рекомендовалось в инструкциях. Ничего необычного:

auto br0
iface br0 inet dhcp
        bridge_ports enp1s0
        bridge_fd 0
        bridge_maxwait 0

ну и, как вы можете догадаться, хост-машина стала недоступна по своему адресу.

Адреса в сети выдает Mikrotik своим dhcp, там все тривиально.

Есть ли какой-то способ обеспечить контейнера сетью, но при этом не потерять связь с хост-машиной по ее айпишнику? Везде в мануалах упоминаются хост-машины с двумя сетевыми интерфейсами, один из которых делает бриджем, а второй «смотрит в мир».

UPD: добавил для enp1s0

...
      up iptables -t nat -F POSTROUTING
      up iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
и включил net.ipv4.ip_forward=1 разумеется. Результат тот же

★★★

Последнее исправление: Nicholass (всего исправлений: 2)

ну и, как вы можете догадаться, хост-машина стала недоступна по своему адресу.

Значит что-то сделано неправильно или хост получил другой ip.

iptables пустой ?

Везде в мануалах упоминаются хост-машины с двумя сетевыми интерфейсами, один из которых делает бриджем, а второй «смотрит в мир».

Что мешает сделать мост без физических сетевых карт и туда подключать контейнеры?

vel ★★★★★
()

Везде в мануалах упоминаются хост-машины с двумя сетевыми интерфейсами, один из которых делает бриджем, а второй «смотрит в мир».

Это вы что-то странное в мануалах увидели.

vodz ★★★★★
()
pve ~ # cat /etc/network/interfaces
# network interface settings; autogenerated
# Please do NOT modify this file directly, unless you know what
# you're doing.
#
# If you want to manage part of the network configuration manually,
# please utilize the 'source' or 'source-directory' directives to do
# so.
# PVE will preserve these directives, but will NOT its network
# configuration from sourced files, so do not attempt to move any of
# the PVE managed interfaces into external files!

auto lo
iface lo inet loopback

iface eth0 inet manual

iface eth1 inet manual

auto vmbr0
iface vmbr0 inet static
	address  192.168.1.201
	netmask  255.255.255.0
	gateway  192.168.1.1
	bridge_ports eth0
	bridge_stp off
	bridge_fd 0

auto vmbr1
iface vmbr1 inet static
	address  192.168.1.211
	netmask  255.255.255.0
	bridge_ports eth1
	bridge_stp off
	bridge_fd 0
pve ~ # iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination 

Никаких проблем, хост доступен по обоим адресам.

anonymous
()
Ответ на: комментарий от Nicholass
~$ cat /etc/network/interfaces
# This file describes the network interfaces available on your system
# and how to activate them. For more information, see interfaces(5).

source /etc/network/interfaces.d/*

# The loopback network interface
auto lo
iface lo inet loopback

#ethernet
auto enp1s0
allow-hotplug enp1s0
iface enp1s0 inet dhcp
        up iptables -t nat -F POSTROUTING
        up iptables -t nat -A POSTROUTING -o enp1s0 -j MASQUERADE

#Bridge for LXC
auto br0
iface br0 inet dhcp
        bridge_ports enp1s0
        brdge_fd 0
        bridge_maxwait 0

Днем на этом конфиге не работал. Сходил я подстригся, вернулся и вуа-ля! Все работает. Видимо где-то действительно истекли лизы и обновились адреса

UPD: дописал это сообщение и ssh соединение отвалилось и больше не поднимается. Мистика! UPD2: хост-машина почему-то не видит сети

Nicholass ★★★
() автор топика
Последнее исправление: Nicholass (всего исправлений: 2)
Ответ на: комментарий от Nicholass
iface enp1s0 inet dhcp
...
iface br0 inet dhcp
       bridge_ports enp1s0

Удачного хождения по граблям.

На интерфейсах подключеных в мост не должно быть ip-адресов.

vel ★★★★★
()
Ответ на: комментарий от vel

Благодарю. Я уже убрал адреса. Теперь пробоблема - отсутствие доступа к сети из контейнеров, я пока эксперементирую с конфигурациями бриджа

Nicholass ★★★
() автор топика
Ответ на: комментарий от Nicholass

Зачем вообще вы включаете в бридж физ. интерфейс? Вам vel уже выше ответил «Что мешает сделать мост без физических сетевых карт и туда подключать контейнеры?»

anc ★★★★★
()
Ответ на: комментарий от anc

Выше написал, что сделал же

Теперь борюсь с прокидыванием сети внутрь контейнера, набираюсь опыта с iptables

Nicholass ★★★
() автор топика
Ответ на: комментарий от Nicholass

Выше написал, что сделал же

Ну простите уж. По сообщениям этого не было замечено (или я не понял).
ЗЫ У меня так же, как было предложено vel тестовые контейнеры живут в отдельной подсети. Т.е. отдельный бридж (голый без физ интерфейса) на котором висит dnsmasq и на который подключаются контейнеры.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Ответ на: комментарий от anc

Я бы хотел сделать (по крайней мере некоторые) контейнера доступными по отдельным айпишникам. Надеялся сделать просто, подцепив к dhcp серверу LAN'а, но чот маскарад не удается.

Nicholass ★★★
() автор топика

Посмотри вывод

ip a
ip r
Может увидишь причину. Возможно что-то с default route не то (например, их два).

anonymous
()
Ответ на: комментарий от Nicholass

Я бы хотел сделать (по крайней мере некоторые) контейнера доступными по отдельным айпишникам. Надеялся сделать просто, подцепив к dhcp серверу LAN'а

Не поленился и проверил ваш вариант, во всяком случае на deb 7.11 усе работает.

auto br0
iface br0 inet dhcp
 bridge_ports eth0
 bridge_fd 0
 bridge_maxwait 0
в конфиге контейнера
lxc.network.type = veth
lxc.network.flags = up
lxc.network.name = eth0
lxc.network.link = br0
lxc.network.veth.pair = veth2
Как хост так и контейнер получает свои ip c dhcp.
И никакой маскарад не нужен, если я опять-таки правильно понял вашу задачу.

anc ★★★★★
()
Последнее исправление: anc (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.