Хай All
двухинтерфейсовая линуховая машинка, один "внешний" один соответственно "внутренний"
проблема следующая: есть некий набор правил прокидывающий соединения в серую сетку.
===
#! /bin/sh
ip=192.168.0.3
echo 0 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -F -t nat
/sbin/iptables -F -t filter
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
echo 1 > /proc/sys/net/ipv4/conf/all/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/default/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth0/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/eth1/rp_filter
echo 1 > /proc/sys/net/ipv4/conf/lo/rp_filter
echo 1 > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -A INPUT -i eth1 -p ICMP --icmp-type echo-request -d 10.0.2.1 -j ACCEPT
/sbin/iptables -A INPUT -i eth0 -j ACCEPT
/sbin/iptables -I INPUT 1 -i eth1 -p TCP -m state --state NEW,RELATED,ESTABLISHED -d 10.0.2.1 --dport 8202:8202 -j LOG
/sbin/iptables -I INPUT 1 -i eth1 -p TCP -m state --state NEW,RELATED,ESTABLISHED -d 10.0.2.1 --dport 8202:8202 -j ACCEPT
/sbin/iptables -I FORWARD 1 -i eth1 -p TCP -s ${ip} -j LOG
/sbin/iptables -I FORWARD 1 -i eth1 -p TCP -s ${ip} -j ACCEPT
/sbin/iptables -I FORWARD 1 -i eth0 -p TCP -s ${ip} -j LOG
/sbin/iptables -I FORWARD 1 -i eth0 -p TCP -s ${ip} -j ACCEPT
/sbin/iptables -t nat -I POSTROUTING 1 -o eth1 -p TCP -s ${ip} -j LOG
/sbin/iptables -t nat -I POSTROUTING 1 -o eth1 -p TCP -s ${ip} -j SNAT --to-source 10.0.2.1
/sbin/iptables -t nat -I PREROUTING 1 -p TCP -i eth1 --dport 8202:8202 -d 10.0.2.1 -j LOG
/sbin/iptables -t nat -I PREROUTING 1 -p TCP -i eth1 --dport 8202:8202 -d 10.0.2.1 -j DNAT --to-destination ${ip}:8202-8202
/sbin/iptables -I FORWARD 1 -i eth1 -p TCP -d ${ip} -j LOG
/sbin/iptables -I FORWARD 1 -i eth1 -p TCP -d ${ip} -j ACCEPT
/sbin/iptables -I FORWARD 1 -i eth0 -p TCP -d ${ip} -j LOG
/sbin/iptables -I FORWARD 1 -i eth0 -p TCP -d ${ip} -j ACCEPT
exit 0
===
если указать комп (.0.3) в серой сетке всё работает. но если указать внутренний адрес ентого "шлюза" (.0.1) - пакеты словно в чёрную дыру попадают: в соответствии с выводом tcpdump`а
на внешнем интерфейсе пакет приходит и сё. пипец. тишина
отладить набор правил оказалось невозможным - потому что iptables если пакет должен натится/де натится в лог ничего не пишет.
а вот если влепить в начале какоенить привало типа
/sbin/iptables -I INPUT 1 -i eth1 -d 10.0.2.1 -j LOG
и ткнуться например по tcp в какой нить порт (номер которого не совпадает с портом который прокидываем) - тогда в лог записывает. мистика какаято
я знаю что для перенаправления портов есть REDIRECT но мне нужно на др интерфейс перенаправить трафик а соответственно редирект для этого не катит.
почему трафик не перенаправляется на др интерфейс? почему в лог не пишет? и как его заставить всё вышеперечисленное сделать?
заранее благодарен за ответы и за то что дочитали до конца