[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

iptables - на неск. итерфейсов



пару лет назад надо было сгородить фаервол, воспользовался каким-то
генератором и проглядел то, что он сгенерил по докам
а теперь появилась более сложная задачка (чем тогда)
и приходится втыкаться в логику работы iptables, но
что-то сложновато идет пока.

в общем так:
имеем три интерфейса
eth[01] ppp0 (в общем еще будет и ppp1)

eth0 смотрит в сеть a.a.a.a и через маршрутизатор там доступны
сети b.b.b.b c.c.c.c и d.d.d.d

eth1 смотрит в мою локалку - сеть m.m.m.m

ppp0 смотрит через eth0 и один из хостов сети b.b.b.b в интернет
(выделенный ip)

теперь мне надо сделать, чтобы

1. из локалки было видно все (все сети и интернет)
2. настроить фаервол


что я делаю:
1. прописал роутинг так что с хоста стали доступны все три сети
2. включил я форвардинг пакетов

теперь надо описать правила
пишу:

1. для того, чтобы было видно сети а.а.а.а ...

iptables -s m.m.m.m -d a.a.a.a -t nat -A POSTROUTING -o eth0 \
     -j SNAT --to-source $ETH0_IP

с локалки стало видно сеть a.a.a.a

далее

iptables -s m.m.m.m -d b.b.b.b -t nat -A POSTROUTING -o eth0 \
     -j SNAT --to-source $ETH0_IP

стало видно сеть b.b.b.b

аналогично для сетей d.d.d.d и c.c.c.c

2. интернет

iptables -s m.m.m.m -t nat -A POSTROUTING -o ppp0 \
     -j SNAT --to-source $INET_IP

с локалки стало видно интернет


соответственно сразу вопрос:
когда мы задали несколько правил (как описано выше) для пакета, пришедшего на хост правило выбирается в том порядке, как мы их задали? то есть в моем случае, если пакет идет в сеть a.a.a.a то уйдет по первой директиве, а в сеть b.b.b.b - по второй итд, а во все остальные сети по последней?

дело в том, что я не знаю как задать правило для конкретно пакетов в интернет, то есть если сформулировать применительно к моей задаче, то
в ppp0 должны отправляться пакеты не предназначенные для сетей
a.a.a.a, b.b.b.b, c.c.c.c, d.d.d.d

если для одной сети мы можем записать
-d ! a.a.a.a
то как то же самое записать для нескольких сетей?
или вообще я не в ту степь лезу, и нужное мне действие по другому делается?

теперь еще вопрос по цепочкам:
пакет, идущий из моей сети (m.m.m.m) проходит
цепочки INPUT для интерфейса eth1,
FORWARD: правила попададающие на пути eth1-eth0 или eth1-ppp0
и OUTPUT для eth0 или ppp0

я правильно понимаю? или правила INPUT и OUTPUT при форвардинге не применяются?

и еще вопрос:
как правильно включить лог для написанных выше правил?



Reply to: