Будут ли NAT-мосты LXC непривилегированными контейнерами маршрутизировать http-вызовы на хост-http-сервер через локальную сеть?
- Пользователь A имеет http-сервер, работающий на хост-компьютере Ubuntu с IP-адресом "HostIP " и портом 8081.
- Теперь пользователь A создает непривилегированный контейнер lxc (container1).
- Пользователь А входит в
lxc-attach -n container1
, - Теперь пользователь root внутри container1 делает вызов как
http://HostIP:8081/api
вызов
Мой вопрос заключается в том, выполняет ли этот вызов маршруты к хосту напрямую или через локальную сеть. В основном, какие изменения конфигурации необходимо выполнить, чтобы избежать трафика локальной сети, если http-сервер размещен на хост-компьютере.
Наша конфигурация сети LXC:
lxc.network.type = veth
lxc.network.link = lxcbr0
lxc.network.flags = up
lxc.network.hwaddr = 00:16:3e:30:d2:42
Все контейнеры работают внутри хост-компьютера Ubuntu.
1 ответ
Подводя итог подробностям, которые вы мне сообщили, я могу ответить на это:
- Сетевой мост LXC настроен для подключения через NAT
- Сетевой мост LXC не подключен напрямую к локальной сети, в которой находится хост-система
Имея эту информацию в руках, ваш ответ: возможно. И это полностью зависит от хост-компьютера и от того, достаточно ли он умен, чтобы не перенаправлять трафик на адрес локальной сети с моста LXC через сеть локальной сети. (Что не всегда так)
Когда вы используете IP-адрес хост-компьютера, который у него есть для локальной сети, вполне возможно, что ваш компьютер будет глупым и не будет правильно маршрутизировать пакет, то есть пакет направляется на хост-компьютер по адресу локальной сети (а не частный диапазон IP для сети LXC) может передаваться в остальную часть локальной сети. Это не редкость, но это определенно не то, что вы ищете.
При работе с гостями LXC/LXD, подключенными к хосту, вы должны использовать IP-адрес шлюза от гостей (фактически частный IP-адрес на мосту LXC/LXD, который есть у хост-компьютера, чтобы он мог направлять трафик NAT к другим адресаты), когда трафик направляется напрямую от контейнеров к хосту и наоборот. Таким образом, трафик, направляемый от вашего гостя к вашему хосту (и наоборот), никогда не покидает ваш компьютер, так как он знает маршруты к гостю и хосту, соответственно, через эту ссылку NAT.
Если ваша подсеть для вашего моста, например, 192.168.230.0/24, и у гостя LXC есть IP 192.168.230.10, а у вашего хоста - 192.168.230.1, поэтому он ведет себя как маршрутизатор для гостей (это типичный NAT настройка моста, но с разными диапазонами IP), тогда вы должны использовать 192.168.230.1
вместо адреса локальной сети хост-системы, чтобы избежать утечки данных в сеть локальной сети.