鱿鱼+;iptables:如何允许https通过和绕过Squid?

鱿鱼+;iptables:如何允许https通过和绕过Squid?,https,iptables,squid,pass-through,Https,Iptables,Squid,Pass Through,基本上从现在的Squid和iptables开始(谷歌是你的朋友)。这东西会让我丧命的 我在Ubuntu9.04服务器上安装了Squid3作为透明代理。当我使用代理框作为默认网关时,它工作得很好。此设置的iptable规则是教程的一部分:P 不幸的是,我不能访问https站点(比如Gmail或者443端口上的任何东西)。这是因为Squid不喜欢它不能缓存的内容,在本例中,这就是https流量 我想添加一个iptable规则,这样我基本上可以访问https站点并使用Skype。基本上允许这些类型的流

基本上从现在的Squid和iptables开始(谷歌是你的朋友)。这东西会让我丧命的

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

不幸的是,我不能访问https站点(比如Gmail或者443端口上的任何东西)。这是因为Squid不喜欢它不能缓存的内容,在本例中,这就是https流量

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

是否有人知道如何做到这一点,或者有任何来源的链接,可以帮助我弄明白这一点


谢谢。

在考虑过用自己的手腕嚼东西,整夜梦见IPs+暴力谷歌搜索/尝试任何我能用手指触摸到的东西后,我成功地组装了一些真正有效的东西。我不知道技术上的原因,所以如果你能提供一套解释,请这样做!:D

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

附言:这不是一个最终的解决方案,但在回答我自己的问题时,这是一个有效的解决方案

这是:

步骤1:必须在框上启用IP转发:

vim /etc/sysctl.conf
//查找并取消注释以下内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
第2步:添加环回规则(这更适用于覆盖所有端口的情况,显然许多应用程序需要它?

iptables -I INPUT -i lo -j ACCEPT
步骤3.添加绕过端口443的规则:(eth1是internet接口,x.x.x.x/eth0是LAN接口)

第4步。最后是使Squid透明的规则:(x.x.x.x是LAN接口的IP)


事实上,在考虑咀嚼我自己的手腕,整夜梦见IP+暴力谷歌搜索/尝试任何我能用手指触摸到的东西之后,我设法把一些东西组合起来,真正起作用。我不知道技术原因,所以如果你能提供一套解释,请这样做!:D

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

附言:这不是一个最终的解决方案,但在回答我自己的问题时,这是一个有效的解决方案

这是:

步骤1:必须在框上启用IP转发:

vim /etc/sysctl.conf
//查找并取消注释以下内容

net.ipv4.ip_forward=1
net.ipv4.conf.all.rp_filter=1
第2步:添加环回规则(这更适用于覆盖所有端口的情况,显然许多应用程序需要它?

iptables -I INPUT -i lo -j ACCEPT
步骤3.添加绕过端口443的规则:(eth1是internet接口,x.x.x.x/eth0是LAN接口)

第4步。最后是使Squid透明的规则:(x.x.x.x是LAN接口的IP)

这是错误的。这意味着,您从实习生LAN发送到Internet的每个数据包
TCP/UDP/etc
,都将使用专用LAN IP(可能是192.178.x.x)作为源IP,而不是公共IP

也许这对你有帮助:

PREROUTING == DestinationNAT -> From Internet to Intern LAN

POSTROUTING == SourceNAT -> From Intern LAN to Internet


iptables -t nat -A PREROUTING -i intern -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i intern -p tcp --dport 3128 
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o extern -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i extern -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m --state ESTABLISHED,RELATED -o intern -p tcp --sport 80
在以下情况下,绕过443就足够了:

iptables -I FORWARD -p tcp --dport 443 -j ACCEPT
如果您的
系统/squid/firewall
也是从网络到internet的路由器,请不要忘记:

iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP
这是错误的。这意味着,您从实习生LAN发送到Internet的每个数据包
TCP/UDP/etc
,都将使用专用LAN IP(可能是192.178.x.x)作为源IP,而不是公共IP

也许这对你有帮助:

PREROUTING == DestinationNAT -> From Internet to Intern LAN

POSTROUTING == SourceNAT -> From Intern LAN to Internet


iptables -t nat -A PREROUTING -i intern -p tcp --dport 80 -j REDIRECT --to-ports 3128
iptables -A INPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -i intern -p tcp --dport 3128 
iptables -A OUTPUT -j ACCEPT -m state --state NEW,ESTABLISHED,RELATED -o extern -p tcp --dport 80
iptables -A INPUT -j ACCEPT -m state --state ESTABLISHED,RELATED -i extern -p tcp --sport 80
iptables -A OUTPUT -j ACCEPT -m --state ESTABLISHED,RELATED -o intern -p tcp --sport 80
在以下情况下,绕过443就足够了:

iptables -I FORWARD -p tcp --dport 443 -j ACCEPT
如果您的
系统/squid/firewall
也是从网络到internet的路由器,请不要忘记:

iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP

对于这些解释

步骤#1将机器设置为路由器。这对于任何要接受或转发目的地为机器而非自身的IP流量的Linux机器来说都是必需的。没有这一点,网络堆栈的最低级别将拒绝流量,NAT甚至没有机会做它的事情

第2步与所询问的问题无关。与代理无关的路由器操作可能需要,也可能不需要

步骤#3让机器正常地将端口443中继为路由器。通过使用伪装而不是SNAT,可以改进后路由规则

步骤#4两行以不同的方式做相同的事情。如果您不知道DNAT和重定向之间的区别,那么第一行将来可能会给您带来麻烦。为简单起见,请仅使用重定向

阅读本可以帮你省去很多麻烦


您的设置中还缺少一个关键的mangle table规则,该规则已在该wiki页面上进行了解释。

有关这些解释

步骤#1将机器设置为路由器。这对于任何要接受或转发目的地为机器而非自身的IP流量的Linux机器来说都是必需的。没有这一点,网络堆栈的最低级别将拒绝流量,NAT甚至没有机会做它的事情

第2步与所询问的问题无关。与代理无关的路由器操作可能需要,也可能不需要

步骤#3让机器正常地将端口443中继为路由器。通过使用伪装而不是SNAT,可以改进后路由规则

步骤#4两行以不同的方式做相同的事情。如果您不知道DNAT和重定向之间的区别,那么第一行将来可能会给您带来麻烦。为简单起见,请仅使用重定向

阅读本可以帮你省去很多麻烦


您的设置中还缺少一条关键的mangle table规则,该规则已在该wiki页面上解释。

谢谢您的回答。我不再处理此问题,但我已将您的答案转发给负责我所做工作的IT部门。谢谢您的回答。我不再处理此问题,但已转发了y