Как перенаправить порт с гостя на хост в qemu (kvm)

Возможно ли это и как, перенаправить порт с гостя на хост в qemu / kvm?

Обратите внимание, я имею в виду (вне) от гостя к хосту, а не от хоста к гостю (это широко документировано).

Я думаю, что ищу для "противоположности" hostfwd / redir .. Как я понимаю, -net user, hostfwd = tcp :: 8022-: 22 , который соединяет порт 8022 на HOST и GUEST - отлично. Теперь мне также нужно "противоположное", и мне нужно, чтобы соединения, сделанные с портом 6633 в ГОСТЕ, выходили на ХОСТ, где какой-то процесс работает в ожидании соединений на нем.

Возможно ли это с помощью некоторого параметра, который я не могу найти, или это глупый запрос, свидетельствующий о моем непонимании сети - как будто это невозможно?

4
задан 12 April 2016 в 21:26
3 ответа

Это должно быть очень просто. Если вы используете NAT, вам просто нужно правило пересылки, которое отправляло бы пакеты на 192.168.122.1, это IP-адрес хоста в сети по умолчанию libvirt. Если вы используете мостовую установку, убедитесь, что у хост-моста есть IP-адрес, и перенаправьте туда пакеты. Все настройки должны выполняться на гостевой системе.

0
ответ дан 3 December 2019 в 04:09
**Try the below command for forwarding port from guest to host or vice-versa**
 # forwarding guest 8055 port to host 8055 port
    user@host_machine:~$ ssh -L 8055:localhost:8055 guest@IP_ADDRESS
    user@host_machine:~$ telnet localhost 8055  # verify by telnet command

    # forwarding host 8055 port to guest 8055 port
    user@host_Machine:~$ ssh -R 8055:localhost:8055 guest@IP_ADDRESS

    user@Guest_Machine:~$ telnet localhost 8055 
0
ответ дан 3 December 2019 в 04:09

Минимальная рабочая установка

Я могу получить доступ как к хосту, так и к внешней сети с помощью этой команды QEMU:

qemu-system-x86_64 \
  -append 'root=/dev/vda console=ttyS0' \
  -device rtl8139,netdev=net0 \
  -drive file=./out/buildroot/build/default/x86_64/images/rootfs.ext2.qcow2,format=qcow2,if=virtio,snapshot \
  -enable-kvm \
  -kernel ./out/linux/default/x86_64/arch/x86/boot/bzImage \
  -machine pc \
  -netdev user,id=net0 \
  -nographic \
  -serial mon:stdio \
;

Затем на хосте, установите файловый сервер на порт 8000:

python -m SimpleHTTPServer 8000

nc -kl 0.0.0.0 8000 также работает, но на одной из моих хост-систем он работал только с 0. 0.0.0], но не с localhost.

Теперь в госте:

# Done by init in most non-minimal systems.
ifup -a
ip route

Это даёт:

default via 10.0.2.2 dev eth0
10.0.2.0/24 dev eth0 scope link  src 10.0.2.15

, что говорит нам о том, что нам нужен порт 10.0.2.2:

cd /tmp
wget 10.0.2.2:8000
cat index.html

Протестировано со следующими изображениями:

Протестировано на хосте Ubuntu 18.10, QEMU 2.12

.
1
ответ дан 3 December 2019 в 04:09

Теги

Похожие вопросы