Подскажите каким способом, как написать ip route add что бы
192.168.1.0/24 шлюз был dev tun0
192.168.2.0/24 шлюз был dev pppoe
Да что же...
Я именно ЭТО повторяю Вам в
третий раз.

Интерфейса у Вас два! Каналов в интернет ДВА, столько же нужно таблиц маршрутизации с шлюзом по умолчанию на каждый канал. По-другому работать НЕ БУДЕТ! Как они получились — НЕВАЖНО!
Ваши команды iptables для NAT не трогаете, они логичные.
Смотрите пример по LARTC, делаете все, что там описано.
Затем жёстко указываете, что весь траффик от сети 192.168.1.0/24 рулить (ip rule же

) в одну таблицу, а трафик от 192.168.2.0/24 в другую.
ip rule add from $local_net lookup $table
Всё, блин! Что непонятно — показывайте.
Можно ещё рулить траффик по меткам, через iptables, если требуется более хитрый способ распределения нагрузки.
PS А ещё можно обойтись двумя таблицами с именами main и default, они по идее в ubuntu by default и вообще by default (я не встречал других).
Я всё сказал, дальше сами
