红联Linux门户
Linux帮助

启动squid为透明代理

发布时间:2009-06-02 15:52:35来源:红联作者:eku123
启动squid为透明代理

1、透明代理的概念

如果需要使用户浏览器不需要任何代理设置就能用aquid cache代理服务器上网,需要使用透明代理。所谓透明代理就是让客户不设置浏览器的情况下通过squid server,当数据包经过透明代理服务器时实际上被重定向到squid代理服务器的代理端口(如8080),即由本地代理服务器向外请求所需数据,然后拷贝给客户端。这样客户端用户就感觉像是直接上网一样。

2、实现透明代理的环境

(1)客户端的网关必有设为squid代理服务器,因为既然浏览器中没有任何代理设置,要访问某个站点时,数据包必须经过squid服务器才能被重定向。

(2)客户端必须正确设置DNS服务器。因为不使用任何代理设置,则DNS必须由浏览器来解析。

(3)服务器可以安装squid。

3、配置squid代理的相关设置

编辑/etc/squid/squid.conf文件,将下面的语句加到文本最后

http_port 8080
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on

httpd_accel_host和httpd_accel_port这两个选项本来是用来定义squid加速模式的,在这里使用virtual来指定为虚拟主机模式。80端口为要加速的请求端口。采用这种模式时,squid就取消了缓存及ICP功能。如果需要这些功能,就必须设置httpd_accel_with_proxy选项。

httpd_accel_user_host_header选项定义为on后,在透明代理模式下,代理服务器的缓存功能才能正确工作,这时squid会把存储的对象加上主机名(而不是ip地址)作为索引。

(1)重新启动squid

使用下面的命令重新启动:
#/usr/sbin/squid -k reconfigure
(如果内核提示不支持透明代理,刚需要重新编译内核)

(2)配置

#Accept all on lookback
/sbin/ipchains -A input -j ACCEPT -i lo
#Accept my own IP, to prevent loops (repeat for each interface/alias)
/sbin/ipchains -A input -j ACCEPT -p tcp -d 192.168.11.1/32 80
#send all traffic destined to port 80 to squid on port 80
/sbin/ipchains -A input -j REDIRECT 8080 -p tcp -s 192.168.11.0/24 -d 0/0 80

(3)应注意的问题

a、这种透明代理只能针对http协议,不能针对ftp协议;
b、客户端的默认网关应该设成squid服务器;
c、防火墙重定向规则在其他input规则的前面,注意顺序。

(4)、配置iptables

iptables在这里起的作用是端口重定向,执行以下命令将所有由eth0接口进入的web服务80端口的请求直接转发到8080端口,由squid处理。

iptables -t nat -A PREROUTING -i eth0 -p -tcp -m -tcp -dport 80 -j REDIRECT --to-ports 8080

设置完成后,客户机可不做代理设置。
文章评论

共有 5 条评论

  1. cheng1988040 于 2009-12-05 17:53:01发表:

    3# Summerserenity


    那是因为squid的版本不一样, 上面的那个不管用,会提示错误。。。。
    关于Squid透明代理,网上千篇一律,真害人

  2. Summerserenity 于 2009-12-05 12:50:07发表:

    已经安装和设置好了,没感觉有什么与过去的不同。

  3. zw3312096 于 2009-12-05 11:26:06发表:

    学习 学习

  4. Summerserenity 于 2009-12-04 10:15:37发表:

    我的squid总是在这四行上通不过,提示不能识别,也不知道怎么办?
    httpd_accel_host virtual
    httpd_accel_port 80
    httpd_accel_with_proxy on
    httpd_accel_uses_host_header on

  5. Dssiuet 于 2009-06-02 15:56:42发表:

    路过