Я пытаюсь настроить несколько контейнеров LXC на хосте, каждый со своими публичными статическими IP-адресами.
На моем хосте установлена последняя версия Ubuntu. Он имеет единственный сетевой интерфейс с именем eth0. Статические IP-адреса доступны для пинга из Интернета и называются eth0: 210, eth0: 211 ... Числа после двоеточия являются наименее значимым байтом адресов. В дополнение к этим интерфейсам у меня есть настройка br0 на общедоступном IP-адресе хоста. Есть также интерфейсы lo, veth2LPP9A и lxcbr0. У lxcbr0 есть адрес частного IP.
Хост / etc / network / interfaces выглядит следующим образом:
auto br0
iface br0 inet static
bridge_ports eth0
bridge_fd 0
[...]
До сих пор я использовал различные онлайн-источники, в том числе контейнеры Bridging LXC для размещения eth0, чтобы у них был публичный IP-адрес, чтобы помочь мне настроить это.
Файл конфигурации контейнера имеет:
lxc.network.type = veth
lxc.network.link = br0
Я удалил статическую конфигурацию lxc.network.ipv4 из этого файла, поскольку это вызывало проблемы. Когда я запустил lxc-ls --fancy с этой конфигурацией, я бы увидел один и тот же публичный IP дважды в выводе. Кроме того, это может повлиять на конфигурацию подсети контейнера / etc / network / interfaces.
Говоря о файле интерфейсов контейнера, он выглядит примерно так:
auto eth0
iface eth0 inet static
address [...]
netmask 255.255.255.255
#gateway [...]
dns-nameservers 8.8.8.8
post-up route add [...] dev eth0
post-up route add default gw [...]
post-down route del [...] dev eth0
post-down route del default gw [...]
Мне пришлось закомментировать шлюз и добавить команды добавления маршрута в этот файл. В противном случае, загрузка контейнера займет несколько минут.
Все файлы / proc / sys / net / bridge / bridge-nf- * на хосте установлены в 0. Значение / proc / sys / net / ipv4 / ip_forward равно 1.
Проблема в том, что, хотя «route -n» контейнера выглядит так, как должно, я не могу выскочить из контейнера. SSHing к тому, что должно быть IP-адресом контейнера, соединяет меня с хостом.
РЕДАКТИРОВАТЬ: Удаление статического IP-адреса контейнера с хоста действительно помогло, но теперь я получаю новую ошибку. Попытка пропинговать контейнер с хоста приводит к перенаправлению HostFrom, New nexthop. Пакеты просто идут от шлюза к хосту, несколько раз. Запуск traceroute с хоста показывает, что первая остановка на шлюзе. Тогда все остальные маршруты * * *. Я получаю ту же проблему независимо от того, включен контейнер в сеть или нет.
источник
Так как вы мосты, вам необходимо установить IP - адрес в контейнере только , а не на хосте. Хост должен иметь только свой собственный IP-адрес (а).
источник
Я только что сделал это на днях с Ubuntu 14.04. Это просто. Вам просто нужно отредактировать
/etc/network/interfaces
файл внутри вашего контейнера и установить это:Замените каждую переменную желаемым значением.
Вам не нужно больше ничего делать!
PS: обратите внимание на пробел перед некоторыми строками. Это обязательно.
источник
Лучший способ, который я найду, и самый быстрый - это использовать профили lxc.
lxc profile list
- командуйте списком всех имеющихся у вас профилей.lxc profile copy default minecraft
(это имя вашего нового профиля)потом
lxc profile edit minecraft
Это придет
затем сохраните его
затем назначьте профиль вашему контейнеру LXC следующим образом
затем просто перезапустите контейнер, и ваш новый IP-адрес будет установлен на этот контейнер
источник
Я мог бы правильно настроить свои контейнеры lxc после получения ответа @Enrique Moreno Tent, поэтому я объясню, что делать более подробно, если вы не знаете, как настроить другие элементы.
1. Получите доступ к контейнеру LXC через
lxc-attach
командуКоманда:
$ lxc-attach -n YOUR-CONTAINER-NAME
2. Смотрите ваши текущие конфигурации с
ifconfig
команда
`` `
3. Получение адреса, сетевой маски и шлюза
Видя результат выполнения
ifconfig
команды выше, мы видим:Адрес - это адрес, который вы хотите, вы можете изменить его на 10.0.3.166.
Маска подсети есть: 255.255.255.0
Шлюз : для шлюза вы используете широковещательный адрес с 10.0.3.255
Как вы можете видеть выше, в настоящее время у вас есть вся информация, необходимая для заполнения вашего гостя (контейнера)
/etc/network/interfaces
.4. Получение
dns-nameservers
стоимости.Введите команду:
cat /etc/resolv.conf
Но, возможно, лучше всего использовать Google DNS, который
8.8.8.8
и8.8.4.4
5. Редактирование
/etc/network/interfaces
внутри контейнераauto eth0 iface eth0 inet static address 10.0.3.166 netmask 255.255.255.0 gateway 10.0.3.255 dns-nameservers 8.8.8.8
источник
ifconfig
был замененip a
на более поздних версиях Debian / Ubuntu linuxconfig.org/...