MASQUERADE — это просто SNAT (исходный NAT )с источником исходящего интерфейса (см. man iptables-extensions
.
Попытка подключения (начальный SYN )подвергается NAT, а затем соединение отслеживается в ядре ("conntrack" ), и все пакеты в этом соединении проходят NAT в соответствующем направлении.
Так что да, исходящие ответы SYN/ACK на входящие SYN не будут преобразованы SNAT в NAT. Если вы хотите использовать NAT для входящих SYN, вам нужен DNAT, а не SNAT. Это также будет транслировать ответы SYN/ACK.
Я успешно использовал эти команды для загрузки образа alpine и его установки в образ qcow2
:
# create qcow2 image
qemu-img create -f qcow2 alpine.qcow2 10G
# boot up with install medium
qemu-system-aarch64 \
-machine virt -cpu cortex-a57 \
-drive if=pflash,format=raw,readonly,file="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" \
-m 512M \
-drive format=raw,readonly,file=/path/to/alpine-standard-3.12.1-aarch64.iso \
-drive file=alpine.qcow2
Вам нужен пакет edk2
на вашем хосте или получите файл QEMU_EFI-pflash.raw
другими способами.
Затем вы можете запустить setup-alpine
и установить sys на/dev/vdb
(alpine.qcow2
). setup-alpine
, кажется, здесь работает из коробки просто отлично.
После завершения установки выключите систему и извлеките установочный носитель.:
qemu-system-aarch64 \
-machine virt -cpu cortex-a57 \
-drive if=pflash,format=raw,readonly,file="/usr/share/edk2/aarch64/QEMU_EFI-pflash.raw" \
-m 512M \
-drive file=alpine.qcow2
Теперь вы должны загрузить новую установку Alpine.
Если вам нужна графика, вы можете добавить:
# ramfb seems to work (altough it wont be fast)
-device ramfb
# or virtio gpu, should be faster, but will be detected later
-device virtio-gpu
Вам также потребуется добавить периферийные устройства, если вы хотите взаимодействовать с виртуальной машиной:
-device usb-ehci -device usb-kbd -device usb-mouse
Если вы хотите поделиться папкой, вы можете использовать 9p или включенный сервер samba. 9p должен работать так (, как в документации qemu):
-fsdev local,path=/path/to/your/folder,security_model=none,id=test_dev \
-device virtio-9p-pci,fsdev=test_dev,mount_tag=test_mount
И в гостях:
mount -t 9p -o trans=virtio test_mount /mnt