Squid + iptables:我如何允许https传递并绕过Squid?

Dav*_*er' 1 https iptables squid pass-through

基本上今天开始使用Squid和iptables(谷歌是你的朋友).这件事将成为我的死亡.

我在Ubuntu 9.04服务器上安装了Squid3作为Transparent Proxy.当我使用代理框作为我的默认网关等时,它工作得很好.此设置的iptable规则是本教程的一部分.:P

遗憾的是,我无法访问https网站(例如Gmail或基本上443端口上的任何内容).这是因为Squid不喜欢它无法缓存的内容,在这种情况下是https流量.

我想添加一个iptable规则,以便我基本上可以访问https网站并使用Skype.基本上允许这些类型的流量通过而不通过Squid代理?(绕过它可以这么说)

是否有人可能知道如何做到这一点或链接到任何可以帮助我搞清楚的来源?

谢谢.

Dav*_*er' 5

实际上考虑通过我自己的手腕咀嚼和梦想IP整晚+暴力搜索/尝试任何我可以得到我的数字手指我设法把一些实际工作的东西放在一起.我不知道技术原因,所以如果你能提供解释,请这样做!:d

PS:解释中的所有内容都是通过命令行完成的

PS:这不是最终的解决方案,但它是一个回答我自己的问题的工作方案.

这里是:

步骤1:必须在包装盒上启用IP转发:

vim /etc/sysctl.conf
Run Code Online (Sandbox Code Playgroud)

//查找并取消注释以下内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
Run Code Online (Sandbox Code Playgroud)

第2步:添加循环规则(这更适用于所有端口都被覆盖,显然许多应用程序需要它?

iptables -I INPUT -i lo -j ACCEPT
Run Code Online (Sandbox Code Playgroud)

步骤3.添加绕过端口443的规则:(eth1是Internet接口,xxxx/eth0是LAN接口)

iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

iptables -t filter -A FORWARD -i eth0 -p tcp --dport 443 -j ACCEPT

iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x
Run Code Online (Sandbox Code Playgroud)

步骤4.然后最后规则使Squid透明:(xxxx是LAN接口的IP)

iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination x.x.x.x:3128

iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
Run Code Online (Sandbox Code Playgroud)