基本上是从Squid和iptables开始的(google是你的朋友)。这东西会让我送命的。
我在Ubuntu9.04服务器上设置了Squid3作为透明代理。当我使用proxy-box作为我的默认网关时,它工作得很好。:P
不幸的是,我无法访问https站点(例如Gmail或端口443上的任何内容)。这是因为Squid不喜欢它无法缓存的内容,在本例中是https流量。
我想添加一个iptable规则,这样我基本上可以访问https网站和使用Skype。基本上允许这些类型的流量通过而不通过Squid代理?(可以说绕过它)
也许有人知道如何做到这一点,或者有任何来源的链接,可以帮助我弄清楚它?
谢谢。
发布于 2010-04-09 20:30:41
在考虑过我自己的手腕,整晚都在想着i+暴力谷歌/尝试任何我可以用手指指着的东西后,我设法把一些真正有效的东西放在了一起。我不知道为什么的技术原因,所以如果你可以提供一套解释请这样做!
PS:解释中的所有内容都是通过命令行完成的
PS:这不是最终的解决方案,但在回答我自己的问题时,这是一个有效的解决方案。
这就是它:
第1步: Had在机器上启用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为互联网接口,x.x/eth0为局域网接口)
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步骤4.最后是使Squid透明的规则:(x.x是局域网接口的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发布于 2011-09-27 22:33:07
iptables -t nat -A POSTROUTING -o eth1 -j SNAT --to-source x.x.x.x这是错误的。意味着您从内部局域网发送到互联网的每个数据包TCP/UDP/etc都将使用专用局域网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如果您的system/squid/firewall也是从您的网络到互联网的路由器,请不要忘记:
iptables -t nat -A POSTROUTING -o extern -j SNAT --to-source Public_external_IP发布于 2016-09-28 05:27:16
对于这些解释...
第1步将机器设置为路由器。对于任何要接受或转发发往自身以外的机器的IP流量的Linux机器来说,这都是必需的。如果没有这一点,网络堆栈的最低层将拒绝流量,NAT甚至没有机会做它的事情。
第2步与所询问的问题无关。对于与代理无关的路由器操作,可能需要也可能不需要。
第3步让机器的中继端口443正常作为路由器。通过使用伪装而不是SNAT,POSTROUTING规则可以变得更好。
步骤#4这两行代码以不同的方式做同样的事情。如果你不知道DNAT和重定向之间的区别,第一行可能会给你带来麻烦。为简单起见,仅使用重定向。
阅读http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxRedirect可以为您省去很多麻烦。
您的设置中还缺少一个关键的损伤表规则,该规则在维基页面上进行了解释。
https://stackoverflow.com/questions/2601400
复制相似问题