Назад | Перейти на главную страницу

Подключиться с хоста Windows к QEMU внутри Docker

Я пытаюсь установить соединение между Windows 10 под управлением контейнера Docker (Linux), в котором запущен QEMU для размещения ОС QNX. Эта картинка должна прояснить ситуацию: Структура

Хочу выделить то, чего мне удалось достичь:

  1. С хоста я могу пропинговать IP-адрес внутри контейнера докеров: 10.0.75.2
  2. Из контейнера докеров я установил интерфейс касания и переключатель VDE, и я могу проверить связь с QNX: 192.168.56.51

Команды, используемые для запуска среды:

#add new network interface
ip tuntap add mode tap dev tap0
ip addr add 192.168.56.1/24 dev tap0
ip link set dev tap0 up

#start vde switch connected to tap0
vde_switch -F -d -sock /tmp/myswitch -tap tap0

#start QEMU
qemu-system-x86_64  \
-m 1024  \
-cpu qemu64  \
-smp 2  \
-netdev vde,id=t0,sock=/tmp/myswitch  \
-device e1000,netdev=t0,mac=52:54:00:12:34:50  \
-drive file=/qnx/qnx_vm_x86_64-qemu.img  \
-D /var/log/qemu_err.log \
-serial file:/var/log/qemu_out.log  \
-display none -daemonize

Команда для запуска контейнера докеров:

docker run -it --rm --network=host --cap-add=NET_ADMIN --privileged qemu_qnx

Чего не хватает, так это возможности подключения между хостом и QNX. Можно ли например перенаправить соединение с Hvint0 на Tap0?

Примечание: на хосте Linux я могу запустить контейнер Docker с помощью network = host, и я могу легко получить к нему доступ с хоста, но, к сожалению, это не сработает на хосте Windows.

То, что я пробовал до сих пор, к сожалению, не повезло:

  1. Сделайте переадресацию портов для гостя QNX:
#flush iptables rules
iptables -F
iptables -t nat -F

#Add rule
iptables -t nat -A PREROUTING -p tcp --dport 2222 -j DNAT --to-destination 192.168.56.51:22

#Save the iptables rule :
sudo iptables-save | sudo tee /etc/iptables.up.rules

  1. Запустите QEMU с опцией hostfwd, я вижу, что порт открыт, но я не могу подключиться к нему по ssh (сомневаюсь, что это также может быть связано с настройками сети QNX)
-device e1000,netdev=net0
-netdev user,id=net0,hostfwd=tcp::2222-:22

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