LINUX.ORG.RU
ФорумAdmin

Доступ к веб-серверу виртуальной машины qemu извне с использование wifi (vlan0 интерфейс). Мост. Он же Bridge. Памятка.

 ,


0

1

Доступ к веб-серверу виртуальной машины qemu извне с использование wifi (vlan0 интерфейс). Мост. Он же Bridge

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

Памятка (может, кому-то пригодится), настройка осуществлялась в Gentoo Linux на нетбуке hp mini (Atom n570). Виртуальная машина: XP с веб-сервером AppServ 2.5.1.

  1. Становимся root

su

  1. Разрешаем форвардинг пакетов

echo 1 > /proc/sys/net/ipv4/ip_forward

  1. В ядре следует включить CONFIG_BRIDGE=y Если не включен, то идём

cd /usr/src/linux nano .config

Находим CONFIG_BRIDGE и редактируем Далее закрываем и сохраняем

make && make modules_installl

Не помню, надо ли копировать образ ядра, но монтируем boot и копируем в него:

mount /boot

cp arch/x86_64/boot/bzImage /boot/kernel-5.15.75-gentoo

  1. Перезагрузка. reboot

  2. Ставим программы для работы с мостом

emerge net-misc/bridge-utils

  1. Создаем мост:

brctl addbr br0

  1. Для интерфейса wifi (vlan0 (у меня wlp1s0b1) можно добавить только в режиме точки доступа, вычитал в сети), поэтому:

ifconfig wlp1s0b1 down

  1. Если вай-фай, то переводим в режим точки доступа, иначе не заработает)

ifconfig wlp1s0b1 192.168.43.1/24

  1. Добавляем в мост

brctl addif br0 wlp1s0b1

  1. Разрешаем от пользователя доступ к мосту (я так понял):

mkdir -p /etc/qemu echo "allow br0" >> /etc/qemu/bridge.conf

  1. Запускаем qemu от пользователя (у меня так примерно) :

qemu-system-x86_64 -accel tcg -hda win.img -m 512 -netdev bridge,id=br0,br=br0 -device rtl8139,netdev=br0

  1. В гостевой машине прописываем сетевому интефейсу адрес: 10.0.2.15; маску подсети: 255.255.255.0; шлюз: 10.0.2.2

  2. Смотрим от root, что получилось

ifconfig -a

У нас должны быть интерфейсы br0 и tap0 (после запуска qemu)

  1. Далее я добавил для tap0 адрес

ifconfig tap0 10.0.2.3 up и для br0 ifconfig br0 10.0.2.2 up

  1. Добавил tap0 в мост, т.е. в br0

brctl addif br0 tap0

(Возможно, последние действия лишние) После этого сайт виртуальной машины стал доступен по адресу: 10.0.2.15



Дополнение: получить доступ к веб-серверу виртуальной машины можно, пробросив порт 80 через клиент ssh на ней.

  1. На хосте запускается sshd - сервер ssh.

  2. С клиентской машины используем reverse forwarding ssh -N -R localhost:8181:localhost:80 -l user 10.0.2.2

Т.е. с хоста, набрав в браузере localhost:8181, должны попасть на веб-сервер виртуальной машины.

В putty для Windows идём ssh -> tunnels -> source = 8181, Destination=localhost:80 Ставим галку на Remote.




Последнее исправление: AnonymUser (всего исправлений: 9)

Честно говоря инструкция крайне устарела(лет так на 5 минимум). Мосты(и не только) уже давно делаются через ip ( iproute2) или оболочками systemd-networkd/netifrc , а не через brctl (bridge-utils).
Это было актуально во времена ядра 2.4/2.6 .

Atlant ★★★★★
()
Ответ на: комментарий от Atlant

Честно говоря инструкция крайне устарела(лет так на 5 минимум). Мосты(и не только) уже давно делаются через ip ( iproute2)

Работает не трогай. От когда brctl закопают, тогда и будем делать по новому.

anc ★★★★★
()
Ответ на: комментарий от anc

Не знаю, закопают или же нет. Не сильно разбираюсь в стандартах, но исаходный код brctl вроде похож на стандартный C (не low level, но близко). Имею основания подозревать, что закапывать будут долго, а потом ещё и воскресят.

AnonymUser
() автор топика
Ответ на: комментарий от cubachi

А не знаете случайно, yggdrasil работает в виритуалке без доп. манипуляций?! Сорри за оффтоп. Но интересно. Не могу проверить у себя ускорения не хватает.

AnonymUser
() автор топика
Последнее исправление: AnonymUser (всего исправлений: 1)

Важно помнить, что не всякий WiFi вообще бриждуется.

//Комментарий для тех, кто зашёл сюда через поиск и столкнулся с проблемой.

Aceler ★★★★★
()

Дополнение: Получить доступ к веб-серверу виртуальной машины можно, пробросив порт 80 через клиент ssh на ней.

  1. На хосте запускается sshd - сервер ssh.

  2. С клиентской машины используем reverse forwarding ssh -N -R localhost:8181:localhost:80 -l user 10.0.2.2

Т.е. с хоста, набрав в браузере localhost:8181, должны попасть на веб-сервер виртуальной машины.

В putty для Windows идём ssh -> tunnels -> source = 8181, Destination=localhost:80 Ставим галку на Remote.

AnonymUser
() автор топика
Ответ на: комментарий от cubachi

Сам спросил, сам отвечаю: поскольку вариант проброса через ssh через reverse forwarding работает, то и указанный вариант должен заработать. Туннель в общем-то.

AnonymUser
() автор топика
Ответ на: комментарий от AnonymUser

Ну вот смотрите, как пример net-tools. Вроде как даже последняя версия всего 4 года назад вышла, но даже 4 года назад многие ли это пользовали? Многие дистры вообще давно это депрекейтнули.
Так вот brctl уже тоже того... https://wiki.linuxfoundation.org/networking/bridge
Для Ъ цитата оттуда:
Note: the bridge-utils package is DEPRECATED, instead use the bridge command from iproute2 package.
ЗЫ У меня тоже bridge-utils пользуется и дааавно, но это не повод затачивать что-то новое продолжая использовать его же.

anc ★★★★★
()