Контекст
Раньше он работал «из коробки», но несколько недель назад просто перестал. Я предполагаю, что после обновления Ubuntu, но было ли это LXC, или Virtualbox, или даже «сетевое обновление»? Я не могу сказать, потому что я не запускаю эти тесты каждый день.
¹ Подделывать различные сложные платформы и использовать только необходимые мне ресурсы.
² Протестировать их в браузерах Windows.
Вопрос :
Как мне настроить мои сетевые конфигурации Virtualbox / LXC / host для доступа к веб-сайтам в контейнерах LXC из гостевой Virtualbox?
Что я сделал до сих пор
Моя текущая настройка виртуального бокса - иметь 2 сетевые карты.
wlan0
(для доступа в Интернет)lxcbr0
(для доступа к контейнерам)Странная вещь: я могу пинговать контейнеры LXC с виртуальной машины Windows, но не могу получить к ним доступ по HTTP (браузеры или telnet на 80-м порту).
На пинг реагируют только реально запущенные контейнеры.
Я пробовал множество других установок, но я больше «догадываюсь», чем понимаю, что происходит.
Мой текущий обходной путь
Я настраиваю переадресацию порта на своем хосте с помощью iptables, как я бы сделал, чтобы сделать контейнер доступным для всей сети (это на самом деле то, что он делает).
Когда я это сделаю, я могу получить доступ к перенаправленному контейнеру из виртуальной машины Windows.
Но это определенно не чистое решение:
Следуя предложению пользователя 228273, я смог найти конфигурацию, которая решила проблему: сначала я создал интерфейс касания с именем tap0 и поднял его:
ip tuntap add mode tap tap0
ip link set tap0 up
если одна из предыдущих команд не работает, вероятно, это потому, что у вас уже есть tap0
интерфейс. Используйте команду
ip link show
чтобы оценить ситуацию и в конечном итоге изменить имя интерфейса. Теперь вы можете добавить tap0
интерфейс к мосту по умолчанию, который в Ubuntu называется lxcbr0
.
brctl addif lxcbr0 tap0
Затем я настроил свой VirtualBox на использование «мостового адаптера» в интерфейсе. tap0
как показано ниже:
И тогда экземпляр VirtualBox и LXC могут «видеть» друг друга.
Обновление 2019 : Если вы используете NetworkManager, вы можете сделать это дополнение с помощью nmcli:
nmcli connection add type tun ifname tap0 con-name tap0 mode tap master lxcbr0
Была точно такая же проблема. Почти наверняка «виноват» VirtualBox, который, кажется, по-своему использует мостовые сети, вероятно, в том, чтобы оставаться последовательным на различных платформах (Mac, Solaris и тому подобное). Свидетельство:
Действительно странно, что ICMP проходит, но TCP (и, вероятно, другие) не ...
Однако в документации также указано, что «вы все еще можете использовать интерфейсы TAP для определенных расширенных настроек», поэтому я исследовал возможность подключения нового TAP к моему мосту:
# ip tuntap add mode tap
# brctl addif brY tapX
# ip link set tapX up
Затем скорректировал настройки сети VBox, чтобы использовать tapX вместо brY, и все прошло хорошо (после перезагрузки гостя).
Поэкспериментировал с двумя гостями, использующими один и тот же tapX, не уверен, что это так хорошо работает. Наверное, безопаснее всего использовать одно нажатие для каждого гостя VBox.
Если вы можете пропинговать цель, но не можете получить там доступ к приложениям, то это почти наверняка проблема iptables.
Я предполагаю, что в процессе обновления вы получили системный флаг "net.bridge.bridge-nf-call-iptables = 1"
отметился в /etc/systcl.conf
.
Если это так, я бы не отказывался от него, а вместо этого пересмотрел настройку iptables.