Хай 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 ACCEPTexit 0
===
если указать комп (.0.3) в серой сетке всё работает. но если указать внутренний адрес ентого "шлюза" (.0.1) - пакеты словно в чёрную дыру попадают: в соответствии с выводом tcpdump`а
на внешнем интерфейсе пакет приходит и сё. пипец. тишина
отладить набор правил оказалось невозможным - потому что iptables если пакет должен натится/де натится в лог ничего не пишет.
а вот если влепить в начале какоенить привало типа
/sbin/iptables -I INPUT 1 -i eth1 -d 10.0.2.1 -j LOG
и ткнуться например по tcp в какой нить порт (номер которого не совпадает с портом который прокидываем) - тогда в лог записывает. мистика какаято
я знаю что для перенаправления портов есть REDIRECT но мне нужно на др интерфейс перенаправить трафик а соответственно редирект для этого не катит.
почему трафик не перенаправляется на др интерфейс? почему в лог не пишет? и как его заставить всё вышеперечисленное сделать?
заранее благодарен за ответы и за то что дочитали до конца
>Хай 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 но мне нужно на
>др интерфейс перенаправить трафик а соответственно редирект для этого не катит.
>
>почему трафик не перенаправляется на др интерфейс? почему в лог не пишет?
>и как его заставить всё вышеперечисленное сделать?
>заранее благодарен за ответы и за то что дочитали до концаИ еще: --dport 8202:8202 - это вот зачем? --dport 8202 оставь - и все!
Если не поможет, то посмотри че за версия, и просмотри KNOWN BUGS для нее. Попробуй версию сменить.