Я пытаюсь установить соединение между Windows 10, работающим с контейнером Docker (Linux), который запускает QEMU для размещения ОС QNX. Эта картина должна прояснить ситуацию: Структура
Я хотел бы выделить то, чего мне удалось достичь на данный момент:
Команды, используемые для запуска среды:
#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.
То, что я пробовал до сих пор, к сожалению, безуспешно:
#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
-device e1000,netdev=net0
-netdev user,id=net0,hostfwd=tcp::2222-:22
Пожалуйста, дайте мне знать, если я могу предоставить дополнительную информацию.
К сожалению, Windows (и Mac) не поддерживают режим --network=host
, как можно прочитать в официальной документации
Хост сетевой драйвер работает только на хостах Linux и не поддерживается в Docker Desktop для Mac, Docker Desktop для Windows или Docker EE для Windows Server.