first off this is what my firewall script looks like #!/bin/bash IPTABLES='/sbin/iptables' # EXTIF='ppp0' INTIF1='eth0' INTIF2='eth1' # EXTERNEL_NETWORK="69.159.33.78" INTERNAL_NETWORK1="192.168.2.0/24" INTERNAL_NETWORK2="10.0.0.0/24" # ROUTER_IP="10.0.0.1" PROXY_SERVER="10.0.0.1" PROXY_PORT="3128" # /bin/echo 1 > /proc/sys/net/ipv4/ip_forward # $IPTABLES -F $IPTABLES -X $IPTABLES -t nat -A POSTROUTING -o $EXTIF -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -o $INTIF1 -j MASQUERADE $IPTABLES -t nat -A POSTROUTING -o $INTIF2 -j MASQUERADE $IPTABLES -A FORWARD -i $INTIF1 -o $EXTIF -m state --state NEW,ESTABLISHED -j ACCEPT $IPTABLES -A FORWARD -i $INTIF2 -o $EXTIF -m state --state NEW,ESTABLISHED -j ACCEPT # $IPTABLES -A INPUT --protocol tcp --dport 20 -j ACCEPT $IPTABLES -A INPUT --protocol tcp --dport 21 -j ACCEPT $IPTABLES -A INPUT --protocol tcp --dport 22 -j ACCEPT $IPTABLES -A INPUT --protocol tcp --dport 23 -j ACCEPT $IPTABLES -A INPUT --protocol tcp --dport 80 -j ACCEPT $IPTABLES -A INPUT --protocol tcp --dport 443 -j ACCEPT # $IPTABLES -A INPUT -i $EXTIF -s $EXTERNEL_NETWORK -d $EXTERNEL_NETWORK --protocol tcp --dport 3128 -j DROP $IPTABLES -A INPUT -i $EXTIF -s $EXTERNEL_NETWORK -d $EXTERNEL_NETWORK --protocol tcp --dport 10000 -j DROP $IPTABLES -A INPUT -i $EXTIF -s $EXTERNEL_NETWORK -d $EXTERNEL_NETWORK --protocol tcp --dport 1337 -j DROP $IPTABLES -A INPUT -i $EXTIF -s $EXTERNEL_NETWORK -d $EXTERNEL_NETWORK --protocol tcp --dport 53 -j DROP $IPTABLES -A INPUT -i $EXTIF -s $EXTERNEL_NETWORK -d $EXTERNEL_NETWORK --protocol tcp --dport 67 -j DROP # $IPTABLES -A INPUT -i $INTIF1 -s $INTERNAL_NETWORK1 -d $INTERNAL_NETWORK1 --protocol udp --dport 67 -j REJECT $IPTABLES -A INPUT -i $INTIF2 -s $INTERNAL_NETWORK2 -d $INTERNAL_NETWORK2 --protocol udp --dport 67 -j ACCEPT # $IPTABLES -A INPUT -i $INTIF1 -s $INTERNAL_NETWORK1 -d $INTERNAL_NETWORK1 --protocol tcp --dport 3128 -j ACCEPT $IPTABLES -A INPUT -i $INTIF2 -s $INTERNAL_NETWORK2 -d $INTERNAL_NETWORK2 --protocol tcp --dport 3128 -j ACCEPT # $IPTABLES -A INPUT -i $INTIF2 -s $INTERNAL_NETWORK2 -d $INTERNAL_NETWORK2 --protocol tcp --dport 53 -j ACCEPT $IPTABLES -A INPUT -i $INTIF2 -s $INTERNAL_NETWORK2 -d $INTERNAL_NETWORK2 --protocol udp --dport 53 -j ACCEPT # # $IPTABLES -t nat -A PREROUTING -i $INTIF1 -s $INTERNAL_NETWORK1 -d $INTERNAL_NETWORK1 -p tcp --dport 80 -j ACCEPT $IPTABLES -t nat -A PREROUTING -i $INTIF1 -s ! $PROXY_SERVER -p tcp --dport 80 -j DNAT --to $PROXY_SERVER:$PROXY_PORT $IPTABLES -t nat -A POSTROUTING -o $INTIF2 -s $INTERNAL_NETWORK2 -p tcp -d $PROXY_SERVER -j SNAT --to $ROUTER_IP $IPTABLES -t filter -I FORWARD -s $INTERNAL_NETWORK2 -d $PROXY_SERVER -i $INTIF1 -o $INTIF2 -p tcp --dport $PROXY_PORT -j ACCEPT # $IPTABLES -t nat -A PREROUTING -i $INTIF2 -s $INTERNAL_NETWORK2 -d $INTERNAL_NETWORK2 -p tcp --dport 80 -j ACCEPT $IPTABLES -t nat -A PREROUTING -i $INTIF2 -s ! $PROXY_SERVER -p tcp --dport 80 -j DNAT --to $PROXY_SERVER:$PROXY_PORT $IPTABLES -t nat -A POSTROUTING -o $INTIF2 -s $INTERNAL_NETWORK2 -p tcp -d $PROXY_SERVER -j SNAT --to $ROUTER_IP $IPTABLES -t filter -I FORWARD -s $INTERNAL_NETWORK2 -d $PROXY_SERVER -i $INTIF2 -o $INTIF2 -p tcp --dport $PROXY_PORT -j ACCEPT # $IPTABLES -A INPUT -i $EXTIF -m state --state NEW,INVALID -j DROP $IPTABLES -A FORWARD -i $EXTIF -m state --state NEW,INVALID -j ACCEPT $IPTABLES -A FORWARD -i $INTIF2 -m state --state NEW,INVALID -j ACCEPT now that you have seen that this is my problem (this machine is located on eth1 lan ) nethic@s0cket-LPC:~$ ping google.com connect: Network is unreachable nethic@s0cket-LPC:~$ i'v called a ip from 10.0.0.1 via eth1 on my router . i can ssh to 10.0.0.1 and use my web via the proxy running on port 3128 and query hostnames via $host but i can not access anything otherwise is there something i'm not seeing here i can paste more info if needed