LINUX.ORG.RU
ФорумAdmin

Как комильфотно выставить контейнеры в ванильном LXC наружу?

 , ,


0

2

На старости лет открыл для себя контейнеры. Конкретно — LXC, конкретнее — совсем ванильный LXC, безо всякого LXD (ибо snap). И возник вопрос: а как по науке организовывать взаимодействие контейнеров со внешним миром, учитывая ограниченность «ванильного» решения? Для LXD, а тем более proxmox/docker/incus советов навалом, а про ванильные контейнеры как-то не особо.

Пока что мне на ум приходит только фиксирование IP за конкретными контейнерами через настройки LXC и создание правил файрволла для маршрутизации на основе тех же номеров портов средствами штатного файрволла системы, но тогда всё равно придётся дублировать порт-форвардинг на маршрутизаторе нормальной сети. Другой вариант — выставить контейнеры наружу через реальный физический интерфейс и сетевой мост, и всю переадресацию повесить уже на маршрутизатор сети, который им же и адреса назначит, и всё что нужно. Варианты с проксированием и macvlan — это уже из LXD.

По идее, даже в локальном применении правил файрволла нет ничего криминального, если принять аксиоматически, что контейнеры создаются с серьёзными целями: скажем, один и вполне конкретный — будет веб сервером, другой — торренты обслуживать, третий ещё что-то конкретное делать. И тогда нет проблем их всех «прибить гвоздями» через правила файрволла и статические ip в собственной локальной сетке, создаваемой LXC. Но всё-таки как-то гложет сомнение. А как «идеологически правильно» это сделать, в условиях, опять-таки, применения сугубо средств LXC и штатных средств ОС?

★★★★★

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

В рамках хоста, на котором крутится сам LXC? Т.е. оставить дефолтное поведение LXC, когда делается локально подсеть 10.0.что-то.там, в ней сидят все контейнеры, и создаётся мост для запросов из контейнеров наружу. Просто к этому NAT добавить — и будет как у людей?

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

Пару дней назад городил такое, только с клетками на Фре. Мост, в него все интерфейсы клеток и нат на интерфейс с интернетом. Файрволком на хосте всё разбрасывается куда надо.

Простое и удобное решение.

anonymous
()

Сделай простой бридж и добавь в него интерфейс хоста. LXC скажи использовать этот бридж, оно будет добавлять туда veth-интерфейсы контейнеров. Самое простое решение, контейнеры неотличимы от физических машин в локальной сети. Если это всё, что нужно, то делать маршрутизацию средствами хоста смысла мало.

anonymous
()