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: