Рейтинг:0

Доступ к виртуальной машине с использованием мостового сетевого интерфейса KVM внутри сети компании не работает за пределами локальной сети помещения

флаг br

Я работаю в институте, так что, как вы можете себе представить, у нас есть типичные прокси, AD, DNS и так далее. Моя группа рассматривает возможность перехода на Linux для наших серверов (содержащих несколько графических процессоров для различных исследовательских целей) из-за более простой настройки наших сред (машинное обучение, рендеринг) и доступа к инструментам, необходимым для нашей работы. Но прежде чем мы это сделаем, я взял на себя ответственность (с разрешения нашего ИТ-администратора и моего начальника) создать простую настройку, которая даст нам некоторое представление о том, что именно нам нужно.

Я использую обычный настольный ПК с Ubuntu Server 20.04 LTS, установленным в качестве хоста. Для управления им я использую SSH (через Putty) или веб-интерфейс (cockpit). Поверх хоста я запускаю KVM с кучей виртуальных машин QEMU, каждая из которых использует один и тот же мостовой сетевой интерфейс (одновременно может работать только одна виртуальная машина из-за сквозной передачи PCI). Хост, а также виртуальные машины имеют имена хостов по схеме

<hostname>.<domain>

Поскольку наш ИТ-специалист был откровенной движущей силой против Linux в нашем отделе, каждая машина в отделе, на которой работает Linux, должна управляться сотрудником, который «владеет» ею. Мы не получаем никакой помощи от администратора, если у нас есть проблема с этими машинами. Linux-машины также должны иметь суффикс, чтобы он знал, что это не его проблема. В целом имя хоста для ПК и ноутбуков следует схеме

<department>-<machine type><3 digit numeric value>

так что полный будет

<department>-<machine type><3 digit numeric value>.<domain>

Скажем, у меня есть следующее с foo.bar.com существование <domain>:

  • ABC-DT001-L.foo.bar.com - ПК, хост с Ubuntu Server 20.04, IP-адрес 10.21.5.83
  • ABC-DT001-L-VM0.foo.bar.com - ВМ, гость с Xubuntu 20.04, IP-адрес 10.21.5.104
  • ABC-NB001.foo.bar.com - ноутбук, работающий под управлением Windows 10 с пользователем AD, IP-адрес 10.21.5.104
  • Сетевой мост - преобразован единый сетевой интерфейс ABC-DT001-L к мосту, который, в свою очередь, используется каждой виртуальной машиной, которую я планирую запустить
  • Коммутатор HP ProCurve 1810g-8 J9449A - управляемый коммутатор, к которому подключены мои машины внутри моего офиса (у меня нет к нему доступа), IP-адрес 10.21.99.10 (или так написано на этикетке)
  • Шлюз по умолчанию - Айпи адрес 10.21.5.1
  • DHCP-сервер - Айпи адрес 10.21.1.3
  • DNS-сервер - Айпи адрес 10.21.1.3
  • Основной WINS-сервер - Айпи адрес 10.21.1.10

В нашем ИТ-отделе мне сказали, что если у машины есть постоянный MAC-адрес, я всегда могу, например. ABC-DT001-L.foo.bar.com чтобы получить доступ к моему ABC-DT001-L машина.

На уровне KVM у меня есть мост по умолчанию (virbr0 или что-то), который устанавливается при создании виртуальной машины, чтобы позволить системе виртуальной машины каким-то образом синхронизировать время, а также мой собственный мост, который привязывает виртуальную машину к единственному порту Ethernet, который есть у моего хоста, позволяя ему получить доступ к Интернету, а также к внутренняя сеть нашего института. Итак, с точки зрения MAC-адресов на моем ПК у меня есть

  • ABC-DT001-L.foo.bar.com - MAC-адрес 14:b3:1f:07:ee:5a
  • ABC-DT001-L-VM0.foo.bar.com - MAC-адрес 52:54:00:2а:б8:4ф

по поводу моего моста.

Если вас интересует мост по умолчанию, у меня есть 52:54:00:58:04:50 (принимающая сторона) и 52:54:00:1e:cf:8b (сторона ВМ).

Вот что работает:

  • ABC-NB001 - может пинговать и SSH ABC-DT001-L
  • ABC-NB001 - может пинговать, SSH и VNC подключаться к ABC-DT001-L-VM0 (порт 5900 для кабины, порт 5901 для любого другого средства просмотра VNC, поскольку я также запускаю X11VNC параллельно с тем, что уже предоставляет кабина, чтобы в будущем разрешить доступ только к виртуальной машине, а не к базовому серверу)
  • ABC-DT001-L - может пинговать и SSH ABC-DT001-L-VM0, может пинговать ABC-NB001
  • ABC-DT001-L-VM0 - может пинговать и SSH ABC-DT001-L, может пинговать ABC-NB001

Кроме того, я могу пинговать и получать доступ к веб-консоли ABC-DT001-L с наших серверов Windows (тех, которые мы будем конвертировать в Linux в будущем). Мои коллеги, работающие в домашнем офисе, также могут (через нашу VPN) пинговать и получать доступ ABC-DT001-L.

Вот что не работает:

  • Доступ к ABC-DT001-L-VM0 с наших серверов включая даже просто пинг
  • Доступ к ABC-DT001-L-VM0 с машин моих коллег через VPN

Таким образом, кажется, что что-либо за пределами коммутатора не может получить доступ к виртуальным машинам любым возможным способом. Одна вещь, которую я заметил, чего, я думаю, и следовало ожидать, заключается в том, что за коммутатором я также могу просто использовать имя хоста вместо полного имени, чтобы получить доступ ко всем моим машинам.

Оказывается, проблема в мосте. Прежде чем я начну ткнуть медведя (нашего ИТ-отдела), я хотел бы попробовать решить проблему (конечно, с вашей помощью).

drookie avatar
флаг za
В вашем вопросе полностью отсутствует схема проектирования ip-сети, - вы пропустили все маски сети, поэтому трудно предположить, что происходит на самом деле. Вы преобразовали сетевой интерфейс хоста в мост? «Мост», который вы упоминаете в вопросе, может относиться к чему угодно.
rbaleksandar avatar
флаг br
Я предоставлю маски. Что касается моста - да, я преобразовал сетевой интерфейс хоста (один порт) в мост.

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

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