Добрый день.
Подскажите пожалуйста, как решить след задачу:
имеется роутер, внутрення (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 то чем плох?
>А 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 если используются такие протоколы как фтп например, но это отдельная тема для разговора.