Как настроить гостя LXC, чтобы он получал адрес DHCP, чтобы я мог получить к нему доступ в своей сети?

15

Я настраиваю LXC используя:

lxc-create -t ubuntu -n lxcguest1

Но я не могу получить доступ к каким-либо службам, запущенным на нем, из моей локальной сети, кажется, что это NAT. Как мне настроить его так, чтобы я мог получить к нему доступ (вероятно, ему нужно получить адрес dhcp от моего маршрутизатора Linksys)?

Благодарю.

Бенджамин Брайан
источник
Возможный дубликат askubuntu.com/questions/256304/…
bekce

Ответы:

5

Я только что решил эту проблему сам. В основном вам нужно настроить мост и привязать к нему сетевую карту и контейнер. Вот статья, за которой я следовал:

http://bj0z.wordpress.com/2011/08/19/howto-build-a-base-lxc-container-in-ubuntu-11-04/

Звучит так, как будто я, вам требуется решение «мост», а не решение NAT. Я также отключил настройку моста LXC по умолчанию (которая называется NAT). Для этого просто отредактируйте файл: /etc/default/lxcи измените USE_LXC_BRIDGE="TRUE"на USE_LXC_BRIDGE="FALSE"и перезагрузите компьютер.

user108168
источник
1
Меня немного смущает это решение: оно говорит, что ему нужно настроить мост, а затем говорит, что решение состоит в том, чтобы отключить настройку моста по умолчанию. Конечно, он должен включить настройку моста. Вторая вещь, в которой мне нужна помощь, заключается в том, что пользователь говорит, что настройка моста является NAT, конечно, он либо соединен мостом (поэтому контейнеры находятся в той же сети, что и хост), либо NAT (в другой сети и требует маршрутизации). Я понимаю, что это взаимоисключающие?
Джон Литтл
1
Это все недействительно сейчас с текущими версиями. / etc / default / lx * полностью отсутствует.
spyderdyne
5

Мои настройки на хостах Ubuntu 14.04.1 LTS (Trusty Tahr)

Добавить /etc/network/interfacesна хосте

auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
    address 0.0.0.0

auto br0
iface br0 inet dhcp
    bridge_ports eth0

(перезагрузка после изменений)

И на файлы конфигурации контейнера ( /var/lib/lxc/containername/config) я установилlxc.network.link = br0

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

Эпели
источник
@JonathanY. Br0 должен появиться после добавления его в / etc / network / interfaces, как указано в ответе. Вам может понадобиться перезагрузка.
Epeli
3
Благодарю. То , что мне не хватало было необходимости добавлять <username> veth br0 2 к /etc/lxc/lxc-usernetдля того , чтобы использовать br0с непривилегированных контейнерами.
Джонатан Я.
2

Я использовал настройки Ubuntu LXC по умолчанию и настроил свой маршрутизатор для отправки всего трафика 10.0.3.xxx на машину Ubuntu. На маршрутизаторе с поддержкой DD-WRT настройки выглядят примерно так, как показано на скриншоте ниже. Замените 192.168.1.137на IP машины, на которой работает LXC. Другие маршрутизаторы должны иметь аналогичные параметры для настройки статического маршрута (например, здесь приведены инструкции по статическому маршруту для Linksys ).

Настройки DD-WRT для статической маршрутизации в LXC

Это не связано, но я также использовал службу DNSMasq для указания имени хоста на IP-адрес контейнера LXC. Таким образом, я могу получить доступ к контейнеру в http://gitlab/любом месте сети. На мой взгляд, гораздо проще использовать имя хоста для доступа к контейнеру, чем помнить IP-адрес.

Настройки DD-WRT DNSMasq

thirdender
источник
1
Хороший подход - попробуй. Пальцы вверх! Добавление статического маршрута работает - и сам маршрутизатор может пинговать машины в контейнерах! Но со многими маршрутизаторами, поставляемыми провайдером, переадресация портов не будет работать из-за: Error code: 4937 The IP address is not in the same subnet with LAN IP address. Please input another one. (маршрутизатор содержит подсеть 192.168.xx, в то время как LXD / LXC находятся в подсети 10.0.xx)
stamster
1
Да, ваш маршрутизатор должен принять маску подсети, чтобы мое решение работало. Мне нравится покупать роутер и добавлять прошивку стороннего производителя, чтобы сделать сумасшедшие конфигурации возможными :-p
thirderder
1
Я использую MikroTik как дома, так и в офисе, но это было для одной установки, где у них был простой маршрутизатор, предоставленный провайдером. Итак, ваша идея очень проста, но очень эффективна - принцип KISS :) Мне она нравится и я буду использовать ее наверняка, так как не могу понять, как у этих контейнеров пока нет решения, чтобы выставить их во внешний мир.
Stamster