我在一台机器上运行了Ubuntu和Squid,作为一个透明的代理服务器,并且是我的networking上许多PC的默认网关,这意味着所有的Internet绑定活动都是通过接口进行过滤,然后才离开路由器(192.168.1.1) 。 HTTPS / SSL(443)不起作用,因为端口443上的数据包将会进入,因为我没有为它指定任何规则。
我如何使用iptables为443连接创build一个passthrough?
—————–编辑———————–
在设置SSL的代理设置指向鱿鱼框之后,pipe理得到https的工作。 但是,如果我正在制作一个Linux路由器(这是我的),这是否意味着SSL将永远不会工作,除非我有一个代理运行? Linux的IP地址是192.168.1.235,我已经设置了一台运行winXP的testing计算机作为它的默认网关。 当然,有一种方法可以让443 SSL“通过”,甚至没有触及代理?
我也有点困惑,为什么HTTPS工作在所有…我没有任何forms的路线或任何在iptables与443交易。任何灯光在此将不胜感激!
您不能透明地代理HTTPS。 当你透明代理时,客户端认为他们正在和远程服务器通话。 使用HTTPS,他们将尝试创build一个SSL连接,通过将远程证书与主机名进行比较来validation远程主机。 这是行不通的,因为你的鱿鱼没有合适的证书。
但是,您可以代理HTTPS连接,因为知道如何代理HTTPS的客户端将打开到您的代理的连接,并发出CONNECT请求,这基本上通过代理隧道连接。
要做的最好的事情是阻止直接访问端口443,并告诉你的用户,如果他们想要使用HTTPS,他们必须configuration他们的浏览器使用代理。
这假设了一下你的configuration,但是这应该接近你所需要的。 假设LAN端是eth1:
iptables -I INPUT -i eth1 -p tcp --dport 443 -j ACCEPT
这将从目的地端口443进入LAN端的所有数据包到ACCEPT目标,然后到路由器,再次我假设你已经设置了。
希望有所帮助。
编辑:根据你的评论只有一个接口:
您将需要一个基于源地址的规则,然后 – 根据需要修改地址:
iptables -I INPUT -p tcp -s 192.168.1.0/24 --dport 443 -j ACCEPT