LINUX.ORG.RU

Настройка сети для LXC

 , , ,


1

1

OS CentOS 7

Создал два моста:

1. Для внешней сети br0, на него ссылается основной интерфейс

DEVICE=br0
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
настройки провайдера
...

2. Для внутренней сети br1, 192.168.10.1

DEVICE=br1
TYPE=Bridge
ONBOOT=yes
BOOTPROTO=static
IPADDR=192.168.10.1
NETMASK=255.255.255.0

Создал lxc контейнер с настройками:

lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br1
lxc.network.name = eth0
lxc.network.ipv4 = 192.168.10.10/24
lxc.network.ipv4.gateway = 192.168.10.1

Запустился, все работает, видит внутреннюю сеть, но не видит мир. Я так полагаю нужно еще маршрут прописать, но не знаю как, т.е. мне надо внутреннюю сеть выпустить в мир.

Как лучше это сделать?

Я не совсем понял зачем вам понадобился ″br0″, вы его тоже хотите использовать в виртуалке? Или виртуалка идёт мостом только в локальную сеть, а основной хост должен работать маршрутизатором между внешней сетью и виртуалкой? Ну тогда нужно включить маршрутизацию, настроить iptables (FORWARD и SNAT), а ″br0″ не нужен.

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

Я планирую в некоторые контейнеры добавлять белые адреса. Поэтому у меня и получается два моста белый и серый.

stanlee
() автор топика

Гы. Как раз с неделю назад в очередной матерился на счёт CentOS, что всё (по сравнению с Ubuntu и Gentoo) нужно допиливать напильником. Правда, для 6-й версии.

CentOS сама по умолчанию не прописывает правила в iptables. Что точно добавлял не помню, я два вечера в фоновом режиме ковырялся, тем более, с боевой машиной, так что приходилось осторожничать. Сейчас где-то такая рабочая конфигурация (если выкинуть прочие правила):

*nat
-A POSTROUTING -s 10.0.4.0/24 ! -d 10.0.4.0/24 -j MASQUERADE 
*filter
-A INPUT -s 10.0.4.1/32 -i lo -j ACCEPT
-A FORWARD -m physdev --physdev-is-bridged -j ACCEPT 
-A FORWARD -o lxcbr0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
-A FORWARD -i lxcbr0 ! -o lxcbr0 -j ACCEPT
-A FORWARD -i lxcbr0 -o lxcbr0 -j ACCEPT

Так как-то, если чего-то не упустил.

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

Увы, нет. За тем, чтобы всё работало из коробки, нужно другие дистрибутивы выбирать :) Это не единственный подобный пример в CentOS...

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

С дебианом и убунтой я уже поигрался, там все печально. Мне не из коробки надо, а как лучше.

Внутренняя сеть спокойно работает без iptables, например, через libvirt.

Я хочу понять как сделать тоже самое без libvirt и уж темболее без iptables.

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

Ну так подключай контейнер к br0 и будет выход в мир, а для доступа в локалку добавь маршрут. iptables в этом варианте не нужен.

Без iptables не обойтись, если нужно выпускать машины из локалки в инет или ограничить доступ к чему-нибудь.

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

у тебя 192.168 в br1.

Если контейнер должен использовать белый адрес, то его в br0 без iptables.

Если контейнер в br1 и ему нужен доступ наружу, то без iptables/nat не обойтись.

libvirt - ненужно вообще

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

Я про то что libvirt выпускает серые контейнеры в интернет, т.е. из низ видно мир и это работает без iptables. На текущий момент мне не нужно их ограничивать, а значит и не вижу смысла в iptables.

Поэтому то я и создал два моста, чтобы в контейнере создавать два интерфейса - серым и белым ip.

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

Я про то что libvirt выпускает серые контейнеры в интернет, т.е. из низ видно мир и это работает без iptables.

libvirt без iptables не умеет NAT. libvirt добавляет свои правила в нужные таблицы.

libvirt - ненужно. iptables - нужно.

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

За тем, чтобы всё работало из коробки, нужно другие дистрибутивы выбирать :)

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

imul ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.