Hi All,<br><br>&nbsp;&nbsp;&nbsp; I am new to this group and hope I have posted my (big)problem in the right place.<br><br>&nbsp;&nbsp;&nbsp; I am doing some test in my network using tproxy and a scanner process in a server (bridged/inline) machine.<br>The packet like http requests from my LAN side, goes to tproxy process and then pass through a scanner process and finally send out to the internet.<br><br>Topology:<br>LAN (192.168.11.0/24) &lt;-----&gt; Tprox-Server (bridge - 192.168.11.231) &lt;-----&gt; (192.168.11.1)router &lt;------&gt; Internet<br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-------------------------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; |&nbsp; +--------+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-----------+&nbsp; |<br>&nbsp;LAN -------+&nbsp; |tproxy|&lt;------&gt;|scanner|&nbsp; +------ WAN<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eth0|&nbsp; +--------+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +----------+ &nbsp; |eth1<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; +-------------------------------------+<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; Tprox-sever<br><br>&nbsp;&nbsp;&nbsp; iface ETH1 with no ip configured (connected in a gw ip 192.168.11.1)<br>&nbsp;&nbsp;&nbsp; iface ETH0 with no ip configured(all the clients behind this interface 192.168.11.0/24)<br>&nbsp;&nbsp;&nbsp; br0 with ip adress 192.168.11.231 with ports ETH0(lan) and ETH1(wan).<br><br>I have this test platform:<br>&nbsp;&nbsp;&nbsp; Fedora 13 (Linux)<br>&nbsp;&nbsp;&nbsp; kernel 2.6.34.9<br>&nbsp;&nbsp;&nbsp; iptables 1.4.7<br>&nbsp;&nbsp;&nbsp; tproxy process running on port 8080<br><br>Used proc interface for setting following:<br>&nbsp;&nbsp;&nbsp; echo 0 &gt; /proc/sys/net/ipv4/conf/lo/rp_filter<br>&nbsp;&nbsp;&nbsp; echo 1 &gt; /proc/sys/net/ipv4/ip_forward<br>&nbsp;&nbsp;&nbsp; echo 0 &gt; /proc/sys/net/ipv4/conf/eth1/rp_filter<br>&nbsp;&nbsp;&nbsp; echo 0 &gt; /proc/sys/net/ipv4/conf/eth0/rp_filter<br>&nbsp;&nbsp;&nbsp; echo 0 &gt; /proc/sys/net/ipv4/conf/br0/rp_filter<br><br>iptables/ebtables rules:<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -N DIVERT<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -A DIVERT -j MARK --set-mark 0x01/0x01<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -A DIVERT -j ACCEPT<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -A PREROUTING -p tcp -m tcp --sport 80 --m socket -j DIVERT<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -A PREROUTING -p tcp --dport 80 -j TPROXY --tproxy-mark 0x1/0x1 --on-port 8080 --on-ip 0.0.0.0<br><br>&nbsp;&nbsp;&nbsp; ebtables -t broute -A BROUTING -i eth0 -p ipv4 --ip-proto tcp --ip-dport 80 -j redirect --redirect-target DROP<br>&nbsp;&nbsp;&nbsp; ebtables -t broute -A BROUTING -i ! eth0 -p ipv4 --ip-proto tcp --ip-sport 80 -j redirect --redirect-target DROP<br><br>Policy routing:<br>&nbsp;&nbsp;&nbsp; ip rule add fwmark 1 lookup 1<br>&nbsp;&nbsp;&nbsp; ip route add local 0.0.0.0/0 dev lo table 1<br><br>Till here everything is working fine. I can access the Internet trough the tproxy and scanner process.<br><br><br>BUT --<br><br>In the scanner process I have reaction mechanism, if the scanner finds something bad in the packet it sends back a customized response/reaction to the client/browser and drop the packet (by hijacking the session). This scanner snips the packets in the OUTPUT chain of filter table.<br>&nbsp;&nbsp;&nbsp; With this tproxy configuration/setting, it seems the reacting method is not working. The client bowser keeps on waiting for the response without success, and finally gives server down kind of message in the browser window.<br><br>&nbsp;&nbsp;&nbsp; Using iptables trace, it seems that the scanner directly sends the react message to the client browser (the message is seen in OUTPUT and POSTROUTING chain), but since the sequence and acknowledge numbers do match the browser drops the react message. (The react message should go to tproxy from the scanner, then from tproxy to the client browser).<br><br><br>Then I used follwoing iptables rules so that the react packet is send back to the tproxy from OUTPUT chain.<br>&nbsp;&nbsp;&nbsp; iptables -t mangle -A OUTPUT -d 192.168.11.0/24 -p tcp -m tcp --sport 80 --m owner --uid-owner scan -j DIVERT<br>&nbsp;&nbsp;&nbsp; (where the scannner module is running under user scan)<br>But now it seems that the packet is getting dropped after OUTPUT chain, I can not trace the packet in INPUT chain, not even in POSTROUTING chain. I think the packet is getting dropped somewhere in the routing subsystem (policy routing).<br><br><br>Please help me how to overcome the problem. Also please let me know if you need any more information.<br><br>Best regards,<br>--Chinmay<br><br><br><A HREF="http://sigads.rediff.com/RealMedia/ads/click_nx.ads/www.rediffmail.com/signatureline.htm@Middle?" target="_blank"><IMG SRC="http://sigads.rediff.com/RealMedia/ads/adstream_nx.ads/www.rediffmail.com/signatureline.htm@Middle"></A><br><div style="font-family:Arial, Helvetica, sans-serif; font-size:14px">Get your own <span style="font-size:12px; font-family:Arial, Helvetica, sans-serif;background-color:#C00; color:#FFF; padding: 0 3px;"><b>FREE</b></span> website and domain with business email solutions, <a href="http://track.rediff.com/click?url=___http://hosting.rediff.com/rediffmailpro/business-email?sc_cid=sig___&cmp=sig&lnk=sig&nsrv1=host">click here</a></div>