Поправлю
iptables -t nat -A POSTROUTING -o ppp11 ! -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 192.168.10.0/24 -j MASQUERADE
К сожалению, не дождавшись вашего ответа, читая маны, написал вот так:
iptables -t nat -A POSTROUTING -o ppp11 -d 192.168.0.0/24 -j MASQUERADE
iptables -t nat -A POSTROUTING -o eth0 ! -d 172.21.1.0/24 -j MASQUERADE
Вроде работает.
Как я это понимаю:
source-addr пакетов в направлении ppp11 с dest-addr из диапазона 192.168.0.0/24 - маскарадятся (адресом интерфейса ppp11)
source-addr пакетов в направлении eth0 с dest-addr не из диапазона 172.21.1.0/24 - маскарадятся (адресом интерфейса eth0)
1) Правильно ли я понимаю, что, в направлении какого интерфейса пускать пакет, решается по правилам route?
2) Также думается, что строго говоря условия -o ppp11 / -o eth0 можно не писать...
3) Может, тогда вообще достаточно написать?:
iptables -t nat -A POSTROUTING ! -d 172.21.1.0/24 -j MASQUERADE
4a) И вот ещё в голову пришло: пакеты, отправленные, допустим, из eth0 по адресу из диапазона 192.168.0.0/24 с нашим сервером, указанным в качестве шлюза тоже отмаскарадятся. Может, тогда нужно добавлять к правилам условия -i eth0:1, чтобы маскарадились только пакеты, следующие из eth0:1? Попытки же запросов из других как-то нужно блокировать.
4b)Если не маскарадятся, то они будут автоматически дропиться? Или сервер свободно кидает пакеты между всеми интерфейсами, если иного явно не задано?