Судя по моему опыту с NAT, это всегда сложная проблема для VoIP, если у вас есть резервный шлюз для доступа в публичную сеть. Нужно вручную удалять (или используя скрипт) неправильные соединения после смены шлюза, иначе VoIP-трассы могут "задыхаться" при возвращении к основному шлюзу. Это касается и SIP, но такая же проблема может проявляться и с IAX. Думаю, что эта проблема может проявляться и для другого трафика, отправляющего пакеты практически непрерывно: соединение никогда не сбрасывается по таймауту и сохраняет неправильный адрес источника после смены шлюза. Иногда из-за NAT я даже видел, как Linux-боксы отправляют приватный IP в интернет через публичный интерфейс. Я видел это на старых OpenWRT-роутерах, которые я использовал раньше. Mikrotik действительно более мощный и проще настраивать все, особенно продвинутое маршрутизирование. Так что я использую только его сейчас, даже если NAT все еще не идеален. Linux-соединения не кажутся достаточно "умными", чтобы использовать NAT с несколькими шлюзами без помощи скрипта. Winbox и Dude – это мощнейшие инструменты для администрирования. Решение, если возможно, — использовать туннели и чистое маршрутизирование, а также добавить blackhole-маршрут к приватному подсегменту назначения (используя меньший префикс), чтобы избежать "призрачных" застрявших соединений во время переключения маршрутов. После переключения маршрутов blackhole-маршрут больше не будет использоваться, так как маршрут к подсегменту назначения будет иметь больший префикс. Это должно защитить от неправильного отслеживания соединений. Как правило, не используйте NAT, если хотите добиться высокой надежности или тщательно тестируйте его перед внедрением в продакшн.