маршрутизация через qemu вм c openbsd
Eсть хост openbsd7.5, в нём есть qemu тоже с openbsd7.5. Хост смотрит в сеть через re0. Между ними прокинут мост для предоставления вм доступа к внешнему миру.
Хочу маршрутизировать трафик хоста через вм. Предвкушая вопросы пытливых умов о целесообразности, скажу, что нужно поиграться с железками при подключении к провайдеру трёхбуквенного запрещенного. собсвенно, подключаться буду с вм.
а теперь обо всём и поподробнее))
то, что работает
на хосте:
/etc/hostname.tap0
inet 10.0.0.1 255.255.255.0
up
/etc/hostnme.bridge0
add tap0
add re0
up
/etc/pf.conf
match out on re0 from 10.0.0.0/24 to any nat-to (re0)
/etc/sysctl.conf
net.inet.ip.forwarding=1
сам qemu
qemu-system-x86_64 \
-m 4096 \
-hda /usr/disk.qcow2 \
-netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=net0
на вм
/etc/hostname.vio0
inet 10.0.0.2 255.255.255.0
up
/etc/resolv.conf
nameserver 8.8.8.8
маршрут по умолчанию
route add default 10.0.0.1
Все прекрасно - машины друг друга видят, пингуют. С вм идет пинг на внешние айпи. Сказка!
Но тут начинается самое интересное.
на хосте создаю второй tap /etc/hostname.tap1
inet 10.0.1.1 255.255.255.0
up
qemu
qemu-system-x86_64 \
-m 4096 \
-hda /usr/disk.qcow2 \
-netdev tap,id=net0,ifname=tap0,script=no,downscript=no \
-device virtio-net-pci,netdev=net0 \
--netdev tap,id=net1,ifname=tap1,script=no,downscript=no \
-device virtio-net-pci,netdev=net1
на вм /etc/hostname.vio1
inet 10.0.1.2 255.255.255.0
up
/etc/sysctl.conf
net.inet.ip.forwarding=1
/etc/pf.conf
match out on vio0 from 10.0.1.0/24 to any nat-to (vio0)
на хосте меняю маршрут по умолчанию
route add default 10.0.1.2
Машины друг друга видят, пингуют. Причём как по 10.0.0.0, так и по 10.0.1.0. Выхода во внешний интернет нет ни на хосте, ни на вм. Чувствую где-то циклится, но, скорее всего, ошибаюсь. Да и как исправить не знаю.