我有三个盒子:一个Linux客户端,一个OpenWRT路由器和一个Squid服务器。我试图让客户端(连接到路由器)的网络流量通过代理服务器而无需任何客户端配置。
在路由器上使用此iptables规则似乎使客户端流量转到代理就好了(我可以在access.log中看到请求):
iptables -t nat -A PREROUTING -i br-lan -p tcp --dport 80 -j DNAT --to $PROXY_IP:3128
但是流量似乎没有回到客户端。我在客户端的Web浏览器上收到此错误:
无法检索请求的网址。网址无效
当它回到客户端时,几乎看起来主机名丢失了。我错过了iptables规则吗?在路由器或代理服务器上?或者我需要设置路线吗?
我的最终目标是让dansguardian在代理服务器上运行。路由器的功能不足以运行过滤器,这就是为什么我有一个单独的服务器。
答案 0 :(得分:1)
让它发挥作用!
路由器上唯一需要的iptables规则是:
iptables -t nat -A PREROUTING -i br-lan -p tcp --dport 80 -j DNAT --to $PROXY_IP:8080
我在squid / dansguardian服务器上需要的规则是:
iptables -t nat -A PREROUTING -i tun0 -p tcp --dport 80 -j REDIRECT --to-port 8080
iptables -t nat -A OUTPUT -p tcp --dport 80 -m owner --uid-owner proxy -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 3128 -m owner --uid-owner proxy -j ACCEPT
iptables -t nat -A OUTPUT -p tcp --dport 3128 -j REDIRECT --to-ports 8080
创建这些规则后,我能够在/var/log/squid3/access.log
和/var/log/dansguardian/access.log
日志中看到客户端的流量,并且所有客户端的流量都恢复正常(网页内容过滤功能完美)。