Попробуйте переписать правила на nftables. Задействуйте ipset. Можно попробовать использовать bpf программы для загрузки непосредственно в ядро (если обстоятельства позволяют), дело должно пойти в разы быстрей. В общем, есть что попробовать оптимизировать.
Где-то работает, иногда недостаточно менять TTL на исходящем трафике. Провайдеры хитрые и ставят на входящем к абоненту трафике TTL - 1. Такие пакеты далее раздающего устройства не уходят. Нужно модифицировать TTL в обе стороны. Мож поможет.
1User1, у гостей скорее всего есть default через хосты. Хосты друг о друге знают. Но при этом гости не "видят" друг друга. Тут только проблемы с форвардингом приходят на ум. Попробуйте трассировку с гостя на другого гостя, или хотя бы другого хоста.
Попробуйте с гостей пинговать хосты, хосты между собой. Если связь есть, то убедитесь что на хостах включена маршрутизация (форвардинг пакетов), прописаны нужные маршруты. Но если меж хостов поднят VPN, то в маршрутах скорее всего нет нужды.