Прошу помощи по iptables.Есть такое правило (приблизительно):
iptables -t nat -A POSTROUTING -o ppp0 -d ! $NET1 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -d ! $NET1 -p udp --dport 53 -j MASQUERADEКлиенты получают доступ в Инет, если --destination не есть одна конкретная сеть. В эту сеть они попадают посредством VPN и не должны натиться. Так работало до сегодняшнего дня. Возникли осложнения, - необходимо добавить $NET2 и $NET3 и правило должно стать следующим:
"Натить все что идет в направлении ppp0, но только если это не в $NET1 ИЛИ не в $NET2 ИЛИ не в $NET3"Ставить цепочки друг за другом нельзя, так как если мы прошли первое правило, которое не маскарадит пакеты для этой сети, то попадаемся на другом, которое говорит, что да - надо маскарадить.
Заранее благодорю за помощь.
>[оверквотинг удален]
>Так работало до сегодняшнего дня. Возникли осложнения, - необходимо добавить $NET2
>и $NET3 и правило должно стать следующим:
>"Натить все что идет в направлении ppp0, но только если это не
>в $NET1 ИЛИ не в $NET2 ИЛИ не в $NET3"
>
>Ставить цепочки друг за другом нельзя, так как если мы прошли первое
>правило, которое не маскарадит пакеты для этой сети, то попадаемся на
>другом, которое говорит, что да - надо маскарадить.
>
>Заранее благодорю за помощь.iptables -t nat -A POSTROUTING -o ppp0 -d $NET1 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -d $NET2 -p tcp --dport 80 -j ACCEPT
iptables -t nat -A POSTROUTING -o ppp0 -d $NET3 -p tcp --dport 80 -j ACCEPTiptables -t nat -A POSTROUTING -o ppp0 -p tcp --dport 80 -j MASQUERADE
iptables -t nat -A POSTROUTING -o ppp0 -p udp --dport 53 -j MASQUERADE
>"Натить все что идет в направлении ppp0, но только если это не
>в $NET1 ИЛИ не в $NET2 ИЛИ не в $NET3"-t NAT -N chain
-t NAT -A chain -d $NET1 -j RETURN
-t NAT -A chain -d $NET2 -j RETURN
-t NAT -A chain -d $NET3 -j RETURN
-t NAT -A chain -j MASQUERADE-t NAT -A POSTROUTING -o ppp0 -p tcp --dport 80 -j chain
>Ставить цепочки друг за другом нельзя, так как если мы прошли первое
>правило, которое не маскарадит пакеты для этой сети, то попадаемся на
>другом, которое говорит, что да - надо маскарадить.
>
>Заранее благодорю за помощь.что значит нельзя? не понимаем принцип acl или еще что? разбираемся в логике (алгоритме) того, что надо сделать; помним, что первый сработал -- остальные пох.
то бишь
1) если пришло на net1 и ppp0 -- пропускаем
2) если пришло на net2 и ppp0 -- пропускаем
3) если пришло на ppp0 -- натим
4) что-то делаем с остальным трафиком...уже потом переводим это на язык iptables и запускаем
Решение от Andrey Mitrofanov мне показалось наиболее элегантным. Попробовал - работает - "то что доктор прописал".Спасибо всем отклинувшимся - за просветление.