snwxf 发表于 2013-05-26 12:21

PF转发HTTP请求到另一台服务器上的SQUID

我的网络结构是这样的:

squid(Ubuntu)<->gateway(FreeBSD) <-> Internet

Client 直接连接到GateWay 通过Nat上网

目前,我在GateWay上安装了Squid,通过PF的rdr将HTTP请求转发到本机的Squid上,可以实现 透明代理上网。

现在我想实现以下功能:

在GateWay上通过PF将HTTP转发到另一台服务器(与客户端同在内网一侧)上的Squid。

目前出现的情况是这样的:
1)GateWay上的PF配置了如下一行:
rdr on $int_if proto tcp from any to $ext_net port 80 -> 192.168.1.3 port 3128(192.168.1.3 是另一台服务器 ,并且 SQuid正确运行)
2)在192.168.1.3 上通过 TCPdump可以看到转发过来的包,但是Squid的日志记录里没有任何记录,同时客户端 显示连接超时。

3)如果在客户端 的IE里设置代理地址为192.168.1.3:3128(则不使用网关的转发功能) ,则客户端可以正常上网(这是否说明 192.168.1.3 的Squid配置正确?)

4) 如果SQuid跟PF在同个服务器上,工作是正常的。

请问大家,我的PF是否配置不正确?是否转发的包有问题?

谢谢大家!

gjie2008 发表于 2013-05-26 14:51

pf.conf Configuration
In pf.conf, the following changes need to be made.

In the top portion where you set skip on your internal interfaces, remove those lines. They tell the pf filter not to do any processing on packets coming in on an internal interface.


#set skip on $int_if << These lines commented out
#set skip on $wi_if

# redirect only IPv4 web traffic to squid
rdr pass $init proto tcp from $net to any port 80 -> $squidserver port 3129

block in
pass in quick on $int_if
pass in quick on $wi_if
pass out keep state
不要用on用pass就可以了

snwxf 发表于 2014-05-08 09:31

非常感谢您的回复!

我再找时间试试。

回复 2# gjie2008


   
页: [1]
查看完整版本: PF转发HTTP请求到另一台服务器上的SQUID