squid 透明代理求解

Web、Mail、Ftp、DNS、Proxy、VPN、Samba、LDAP 等基础网络服务
回复
snfie
帖子: 7
注册时间: 2010-10-11 12:37
送出感谢: 0
接收感谢: 0

squid 透明代理求解

#1

帖子 snfie » 2011-04-20 16:02

在ubuntu server 10.10上使用squid做透明代理,配置文件如下:

1.网络:(/etc/network/interfaces)

代码: 全选

auto lo
iface lo inet loopback

auto eth1
iface eth1 inet static
	address 192.168.1.10
	netmask 255.255.255.0
	network 192.168.1.0
	broadcast 192.168.1.255

auto eth0
iface eth0 inet dhcp


pre-up iptables-restore < /etc/iptables.rules
post-down iptables-save -c > /etc/iptables.rules

2.squid.conf配置

代码: 全选

http_port 192.168.1.10:3128 transparent
http_access allow all
(其它采用默认设置)


3.防火墙设置(/etc/iptables.rules)

代码: 全选

# Generated by iptables-save v1.4.4 on Tue Apr 12 10:04:55 2011
*filter
:INPUT ACCEPT [51076:5585982]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [142531:117080848]
[63922:9397473] -A INPUT -i eth1 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 3128 -j ACCEPT 
[123758:128588019] -A INPUT -i eth0 -p tcp -m state --state RELATED,ESTABLISHED -m tcp --sport 80 -j ACCEPT 
[100871:13304069] -A OUTPUT -o eth0 -p tcp -m state --state NEW,RELATED,ESTABLISHED -m tcp --dport 80 -j ACCEPT 
[0:0] -A OUTPUT -o eth1 -p tcp -m state --state RELATED,ESTABLISHED -m tcp --sport 80 -j ACCEPT 
COMMIT
# Completed on Tue Apr 12 10:04:55 2011
# Generated by iptables-save v1.4.4 on Tue Apr 12 10:04:55 2011
*nat
:PREROUTING ACCEPT [193858:26174737]
:OUTPUT ACCEPT [6355:405438]
:POSTROUTING ACCEPT [6355:405438]
[3292:173128] -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 
COMMIT
# Completed on Tue Apr 12 10:04:55 2011

问题如下:
在配置文件中已经设置声明使用透明代理,但在客户端测试时仍然需要设置代理服务器,但此时代理服务器地址为:192.168.1.10:80,个人认为防火墙已经进行了端口的转发(80->3128)。注:客户端IP地址和服务器eth1
在同一网段,并可以PING通。请大家看看我哪做的不对,怎么解决?
头像
sense
帖子: 308
注册时间: 2007-02-14 13:54
送出感谢: 0
接收感谢: 0

Re: squid 透明代理求解

#2

帖子 sense » 2011-04-20 23:50

怀疑你的 iptables 有没有生效,用

代码: 全选

 sudo iptables -L -v -n -t nat
检查一下
snfie
帖子: 7
注册时间: 2010-10-11 12:37
送出感谢: 0
接收感谢: 0

Re: squid 透明代理求解

#3

帖子 snfie » 2011-04-21 9:42

sense 写了:怀疑你的 iptables 有没有生效,用

代码: 全选

 sudo iptables -L -v -n -t nat
检查一下
结果如下,麻烦你看一下。

代码: 全选

Chain PREROUTING (policy ACCEPT 897K packets, 90M bytes)
 pkts bytes target     prot opt in     out     source               destination 
28479 1525K REDIRECT   tcp  --  eth1   *       0.0.0.0/0            0.0.0.0/0           tcp dpt:80 redir ports 3128

Chain OUTPUT (policy ACCEPT 37620 packets, 2519K bytes)
 pkts bytes target     prot opt in     out     source               destination 

Chain POSTROUTING (policy ACCEPT 37620 packets, 2519K bytes)
 pkts bytes target     prot opt in     out     source               destination 
头像
sense
帖子: 308
注册时间: 2007-02-14 13:54
送出感谢: 0
接收感谢: 0

Re: squid 透明代理求解

#4

帖子 sense » 2011-04-21 10:30

你的客户端是以 192.168.1.10 作为默认网关吗?看你的服务器不象做网关的配置。不做网关也是做不了透明代理的
snfie
帖子: 7
注册时间: 2010-10-11 12:37
送出感谢: 0
接收感谢: 0

Re: squid 透明代理求解

#5

帖子 snfie » 2011-04-21 17:36

我的网关设置确实是192.168.1.10,没有采用192.168.1.1。并且在每个客户机上都设置192.168.1.10为网关。但还是必须设置代理后才能上网。
头像
sense
帖子: 308
注册时间: 2007-02-14 13:54
送出感谢: 0
接收感谢: 0

Re: squid 透明代理求解

#6

帖子 sense » 2011-04-21 19:34

你的 iptables 设置中没有设 nat,客户端不能搜索 dns,所以不能上网。先执行下面的命令后再试

代码: 全选

sudo su
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
回复

回到 “服务器基础应用”