ProxMox, встроенный Firewall и NAT

... Иногда "от нищеты" нет возможности организовать "отдельную" железку-маршрутизатор. Ну там жаба душит лишний юнит в серверном шкафу оплатить и всё вот это. Тогда приходится маршрутизировать на самих хост-машинах.
Вроде бы оно и не страшно. Но иногда "до кучи" хочется задействовать красивую встроенную веб-морду от iptables. И тогда начинаются разные чудеса.
Так, я передвинул одну из виртуалок с хоста на хост и обнаружил, что она потеряла доступ в интернеты. То есть снаружи на её веб-сервер вполне можно достучаться, а вот она сама за обновлениями, например, сходить больше не может.
Стал разбираться. Оказалось, не отрабатывает правило Source NAT в Iptables хост-машины. Притом, пока виртуалка жила на не-маршрутизирующем хосте, всё было ОК. А как только подвинул на маршрутизирующий — сломалось.
Оказывается, трассировщик соединений ядра (conntrack) с какого-то момента стал мультизональным. Это что-то типа namespace-ов, но только чисто для трассировщика. И когда включаешь Firewall средствами ProxMox-а прицельно для какой-то отдельно взятой виртуалки, её соединения начинают попадать в другую зону трассировщика. Не в ту, где обитает Source NAT. Поэтому последний и не отрабатывает.
Лечится примерно так.
iptables -t raw -I PREROUTING -i fwbr+ -j CT --zone 1
М-дя.
|
</> |