所以,是的,我对IPtables(和Squid)非常陌生。我将代理从基于Windows的安装移动到基于CentOS的安装。我的配置如下:
-------------
//|Squid proxy|
// -------------
-------- ---------------- ---------- -------------
|Modem |--|Router/Gateway|--| Switch |--| HTTP/FTP server |
-------- ---------------- ---------- -------------
\ ----------
\ | User 1 |
----------
:
:
Squid代理有两个NIC,eth0(LAN)和eth1(WAN / Internet)。我想以老式的方式使用鱿鱼,即不是"透明"代理,我也希望它也可以为FTP和HTTP服务器进行反向代理 - 这些应该可以从互联网上访问。
Squid正在侦听默认端口3128,我想正确定义IPtables,以便路由正确。我想通过IPtables路由所有交通的最简单方法。我已经对此进行了很多调查,并找到了dgabad的回复:Squid+iptables: how do i allow https to pass-through and bypassing Squid?
简而言之,它让我疯狂,我对我应该设定的规则有多大疑问,但我添加了以下规则:
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
(实习生= eth0,外部= eth1)
我的解释是第一条规则将所有TCP从eth0转发到端口3128,第二条规则将任何传出到端口80的eth1转发。第三条规则打开eth1上的传入端口80流量。
我的问题是: - 规则4究竟是什么? - 为了完成我想要的东西,我错过了什么吗?我认为使用非透明代理不需要预路由。 POSTROUTING?
非常感谢任何帮助实现这一目标。