Рейтинг:1

Контейнер LXC в той же сети, что и хост с доступом в Интернет

флаг ng

Прежде всего позвольте мне рассказать, какую конфигурацию сети я пытаюсь достичь:

  1. Контейнер LXC должен быть доступен в моей локальной сети.
  2. Контейнер LXC должен иметь доступ в Интернет

Вот чего я смог достичь до сих пор:

сеть

я упомянул Преобразование eth0 в br0 и подключение всех ваших LXC или LXD к вашей локальной сети | Убунту для достижения требования № 1 в приведенной выше конфигурации. Однако у LXC нет подключения к Интернету.

Некоторые другие наблюдения:

  • Я могу пинговать все устройства в сети, кроме контейнера LXC.
  • Я могу пропинговать контейнер LXC и его хост: виртуальную машину Ubuntu.

Я ссылался на некоторые темы на этом форуме, которые имеют отношение к моей проблеме, но безрезультатно. Любые идеи относительно как включить доступ в интернет внутри контейнера?


На хосте (Ubuntu VM)

ajinkya@metaverse:~$ lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Ubuntu 20.04.2 LTS
Релиз: 20.04
Кодовое название: фокальный
ajinkya@metaverse:~$ lxc-ls --version
4.0.6
ajinkya@metaverse:~$ uname -a
Метавселенная Linux 5.11.0-25-generic #27~20.04.1-Ubuntu SMP Вт, 13 июля, 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ ip шоу
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
    inet6 :: 1/128 узел области видимости 
       valid_lft навсегда
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel master br0 state UP group default qlen 1000
    ссылка/эфир 08:00:27:db:a6:da brd ff:ff:ff:ff:ff:ff
3: br0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир 08:00:27:db:a6:da brd ff:ff:ff:ff:ff:ff
    inet 192.168.0.161/24 brd 192.168.0.255 область действия глобальная динамическая br0
       valid_lft 85 283 сек. selected_lft 85 283 сек.
    inet6 fd01::124:c625:211:6384/64 область глобальная временная динамическая 
       valid_lft 251 сек. предпочтительный lft 251 сек.
    inet6 fd01::a00:27ff:fedb:a6da/64 глобальная динамическая область действия mngtmpaddr 
       valid_lft 251 сек. предпочтительный lft 251 сек.
    ссылка на область inet6 fe80::a00:27ff:fedb:a6da/64 
       valid_lft навсегда
4: veth1000_JY5u@if2: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master br0 состояние UP группа по умолчанию qlen 1000
    ссылка/эфир fe:03:d9:b4:05:29 brd ff:ff:ff:ff:ff:ff ссылка-netnsid 0
    ссылка на область inet6 fe80::fc03:d9ff:feb4:529/64 
       valid_lft навсегда

--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ brctl шоу
имя моста идентификатор моста интерфейсы с поддержкой STP
br0 8000.080027dba6da нет enp0s3
                                                 veth1000_JY5u
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat /etc/default/lxc-net
# Этот файл автоматически создается lxc.postinst, если он не
# существовать. Индивидуальные настройки не будут переопределены.
# Оставьте USE_LXC_BRIDGE как "true", если вы хотите использовать lxcbr0 для вашего
# контейнеры. Установите значение «false», если вы будете использовать virbr0 или другой существующий
# мост или mavlan к сетевой карте вашего хоста.
USE_LXC_BRIDGE="ложь"

# Если вы измените LXC_BRIDGE на что-то отличное от lxcbr0, тогда
# вам также потребуется обновить файл /etc/lxc/default.conf, а также
# конфигурация (/var/lib/lxc/<container>/config) для любых контейнеров
# уже создан с использованием конфигурации по умолчанию, чтобы отразить новый мост
# имя.
# Если у вас установлен демон dnsmasq, вам также придется обновить
# /etc/dnsmasq.d/lxc и перезапустите общесистемный демон dnsmasq.
LXC_BRIDGE="lxcbr0"
LXC_ADDR="10.0.3.1"
LXC_NETMASK="255.255.255.0"
LXC_NETWORK="10.0.3.0/24"
LXC_DHCP_RANGE="10.0.3.2,10.0.3.254"
LXC_DHCP_MAX="253"
# Раскомментируйте следующую строку, если вы хотите использовать conf-файл для lxcbr0
# маска DNS. Например, вы можете использовать 'dhcp-host=mail1,10.0.3.100', чтобы
# контейнер 'mail1' всегда получает IP-адрес 10.0.3.100.
#LXC_DHCP_CONFILE=/etc/lxc/dnsmasq.conf

# Раскомментируйте следующую строку, если вы хотите, чтобы dnsmasq lxcbr0 разрешил .lxc
# домен. Затем вы можете добавить «server=/lxc/10.0.3.1» (или ваш фактический $LXC_ADDR)
# в системный файл конфигурации dnsmasq (обычно /etc/dnsmasq.conf,
# или /etc/NetworkManager/dnsmasq.d/lxc.conf в системах, использующих NetworkManager).
# После внесения этих изменений перезапустите службы lxc-net и network-manager.
# 'container1.lxc' будет разрешен на вашем хосте.
#LXC_DOMAIN="lxc"
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat /etc/lxc/default.conf 
lxc.net.0.type = veth
lxc.net.0.link = br0
lxc.net.0.flags = вверх
lxc.net.0.hwaddr = 00:16:3e:xx:xx:xx
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ cat .config/lxc/default.conf
lxc.include = /etc/lxc/default.conf
lxc.idmap = и 0 100000 65536
lxc.idmap = г 0 100000 65536
--------------------------------------------- ----------------------------------
ajinkya@metaverse:~$ lxc-ls --fancy
НАЗВАНИЕ СОСТОЯНИЕ ГРУППЫ АВТОЗАПУСКА IPV4 IPV6 НЕПРИВИЛЕГИРОВАННЫЕ 
con1 ВЫПОЛНЯЕТСЯ 0–192.168.0.185 fd01::216:3eff:fe67:d14e true 
--------------------------------------------- ----------------------------------

На контейнере

root@con1:/# lsb_release -a
Нет доступных модулей LSB.
Идентификатор дистрибьютора: Ubuntu
Описание: Ubuntu 16.04.7 LTS
Релиз: 16.04
Кодовое имя: xenial
root@con1:/# uname -a
Linux con1 5.11.0-25-generic #27~20.04.1-Ubuntu SMP Вт, 13 июля, 17:41:23 UTC 2021 x86_64 x86_64 x86_64 GNU/Linux
--------------------------------------------- ----------------------------------
root@con1:/# IP-адрес шоу
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    ссылка/петля 00:00:00:00:00:00 брд 00:00:00:00:00:00
    инет 127.0.0.1/8 область хоста lo
       valid_lft навсегда
    inet6 :: 1/128 узел области видимости 
       valid_lft навсегда
2: eth0@if4: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
    ссылка/эфир 00:16:3e:67:d1:4e brd ff:ff:ff:ff:ff:ff ссылка-netnsid 0
    inet 192.168.0.185/24 brd 192.168.0.255 глобальная область eth0
       valid_lft навсегда
    inet6 fd01::216:3eff:fe67:d14e/64 глобальная область mngtmpaddr динамическая 
       valid_lft 272 сек. preferred_lft 272 сек.
    ссылка на область inet6 fe80::216:3eff:fe67:d14e/64 
       valid_lft навсегда
--------------------------------------------- ----------------------------------
root@con1:/# ping google.com
ping: неизвестный хост google.com
--------------------------------------------- ----------------------------------
root@con1:/# пинг 192.168.0.161
PING 192.168.0.161 (192.168.0.161) 56 (84) байт данных.
64 байта из 192.168.0.161: icmp_seq=1 ttl=64 время=0,115 мс
64 байта из 192.168.0.161: icmp_seq=2 ttl=64 время=0,133 мс
64 байта из 192.168.0.161: icmp_seq=3 ttl=64 время=0,189 мс
64 байта из 192.168.0.161: icmp_seq=4 ttl=64 время=0,127 мс
^ С
--- Статистика пинга 192.168.0.161 ---
4 пакета передано, 4 получено, 0% потери пакетов, время 3069 мс
rtt min/avg/max/mdev = 0,115/0,141/0,189/0,028 мс
--------------------------------------------- ----------------------------------
Ajinkya Bawaskar avatar
флаг ng
![Сетевая архитектура](https://discuss.linuxcontainers.org/uploads/default/original/2X/3/347711b37bf6c52a5b55bceae877378a5d5811a0.png)
A.B avatar
флаг cl
A.B
Просто заметил несоответствие: ваши интерфейсы предполагают обычный Ethernet, а на картинке - Wifi. Мост, работающий в Ethernet, обычно не будет работать в беспроводной сети для STA (клиента), а не для точки доступа: по умолчанию используется режим 3 адресов вместо 4 (https://networkengineering.stackexchange.com/questions/25100/four- Layer-2-address-in-802-11-frame-header для некоторых подробностей).
Рейтинг:0
флаг np

Согласно этому:

ping: неизвестный хост google.com

У вас нет действительного DNS-сервера в /etc/resolv.conf вашего контейнера. Отредактируйте его и включите сервер имен x.x.x.x строки, соответствующие вашим DNS-серверам. Или установите локальный рекурсивный сервер имен, например dnsmasq, внутри вашего контейнера.

Ты можешь использовать Общедоступный DNS Google сервера например:

сервер имен 8.8.8.8
сервер имен 8.8.4.4

Если это не сработает, вы можете сначала попробовать пропинговать действительные IP-адреса в Интернете из своего контейнера (то есть не по DNS-имени), например пинг 8.8.8.8. Также вы должны убедиться, что вы можете пропинговать ваш реальный хост Ubuntu. 192.168.0.166 из вашего контейнера. Он должен быть доступен.

Ajinkya Bawaskar avatar
флаг ng
Я могу получить доступ к реальному хосту Ubuntu внутри контейнера, хотя редактирование `/etc/resolv.conf` не решило проблему. Я не мог связаться с google.com или 8.8.8.8 напрямую.
флаг np
@AjinkyaBawaskar, пожалуйста, запустите `ip route && traceroute 8.8.8.8` из CT и опубликуйте его здесь.
Ajinkya Bawaskar avatar
флаг ng
Спасибо за ответ. ``` Баш root@con1:/# ip маршрут по умолчанию через 192.168.0.1 dev eth0 192.168.0.0/24 dev eth0 прото-область ядра ссылка src 192.168.0.185 ``` Однако мне не удалось запустить traceroute, поскольку он не был предварительно установлен внутри контейнера, и я не смог установить его с помощью apt-get из-за отсутствия Интернета внутри контейнера.
флаг np
Ваш маршрутизатор `192.168.0.1` пингуется из контейнера? Если да, то получили ли вы его IP-адрес 192.168.0.185 через DHCP или установили его вручную (т. е. статический IP-адрес)?
Ajinkya Bawaskar avatar
флаг ng
Я получаю IP-адрес от аренды DHCP с моего маршрутизатора. Результаты `ping` демонстрируются [здесь](https://discuss.linuxcontainers.org/t/lxc-container-on-same-network-as-host-with-internet-access/12038/7?u=ajinkyabawaskar )
флаг np
Хорошо, кажется, я добрался до тебя, теперь у тебя проблемы. Вы должны каким-то образом соединить проводную и беспроводную сеть. В настоящее время они находятся в одной IP-подсети, но на разных интерфейсах. Вы можете попробовать преобразовать eth & wlan в мост на `192.168.0.166`, но ваш беспроводной маршрутизатор должен «понимать», что за беспроводным соединением может быть более 1 IP-адреса. Это действительно зависит от маршрутизатора, но это должно работать для большинства из них.
Ajinkya Bawaskar avatar
флаг ng
Давайте [продолжим это обсуждение в чате](https://chat.stackexchange.com/rooms/129158/discussion-between-ajinkya-bawaskar-and-nstorm).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.