LINUX.ORG.RU
ФорумAdmin

iptables: FORWARD и NAT


0

0

Добрый день.

Подскажите пожалуйста, как решить след задачу:
имеется роутер, внутрення (eth1 - 192.168.10.0/24) и внешняя (eth0 192.168.1.0/24) подсеть. 
На роутере поднят NAT:
# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -o eth0 -j SNAT --to-source 192.168.1.33

Пинг проходит, НАТ работает, вроде все нормально.

Понадобилось следующее - чтобы проходили только пакеты с определенных ip.
Делаю:
# iptables -A FORWARD -s 192.168.10.36 -j ACCEPT
# iptables -A FORWARD -j DROP

Все, пакеты не проходят ни от кого, в т.ч. и от 192.168.10.36.
Почему???

P.S. может это нужно делать в -t nat -A PREROUTING? Но FORWARD то чем плох?

Ответ на: комментарий от bakagaijin

Спасибо!

А iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT
всегда надо добавлять, когда поднят NAT?

Reks
() автор топика
Ответ на: комментарий от Reks

>А iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT всегда надо добавлять, когда поднят NAT?

почитайте документацию/маны по iptables

Вкратце: Правило iptables -A FORWARD -s 192.168.10.36 -j ACCEPT разрешает прохождение пакетов в одну сторону, но теперь пакеты которые идут обратно не попадают под это правило (айпи отправителя теперь же не 192.168.10.36) и DROPаются следующим за ним правилом (iptables -A FORWARD -j DROP)

Поэтому нужно правило которое будет разрешать прохождение пакетов в уже установленных(ESTABLISHED) соединениях. (iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT)

Также нужно разрешить RELATED если используются такие протоколы как фтп например, но это отдельная тема для разговора.

Nao ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.