用Squid + Tor 构建小型技术型公司开放网络

来源:http://buoren2006.spaces.live.com/Blog/cns!6E9226CE09B2779D!175.entry

用于公司内部上网代理的时候一方面可以通过缓存加速网站访问,另一方面也可以过滤一些上班不能访问的网站,例如国内的SNS网站。这里我就不赘述了,我先在这里假设你已经搭建好了一个能够允许内部通过squid代理上网的环境。
Tor 软件最近也升级到2.1.22了,并提供了linux下的RPM安装包,使用起来非常方便。参看官方的安装资料很轻易的就可以安装好tor。Tor 本身只支持SOCKS代理,安装好tor后还需要安装一个privoxy件做HTTP Proxy。安装好后,确保能通过本地的8118端口上网。Tor本身因为被国家级防火墙屏蔽,这里需要在/etc/tor/torrc中加入如下几行才 能正常连接:

    #访问 https://bridges.torproject.org 获取bridge IP
    Bridge 8.98.151.48:80       
    Bridge 81.59.250.53:43
    Bridge 108.125.18.153:91
    UpdateBridgesFromAuthority 1
    UseBridges 1

    squid负责代理内网请求和缓存,tor负责绕墙获取被屏蔽的技术资料。tor本身来说是比较慢的,但是因为有了squid做缓存,效果就变得非常好 了。构建这样的网络必须具备如下特点,即只通过tor访问被屏蔽的网站,不被屏蔽的网站则直接连接,这样就兼备了未被屏蔽网站的正常上网速度和开放性。感 谢squid软件的强大,我们能通过一些巧妙的设定轻易完成这样的设置。连接的要点就在于squid.conf加入如下几句。

    cache_peer tor parent 8118 0 no-query     # 申明tor代理服务器,主机名tor,端口8118
    connect_timeout 2 seconds  #    2秒内连接不上就认为网站被屏蔽,应该走tor通路
    prefer_direct on  # 倾向于直接连接

编辑好squid.conf后,需要在hosts加入

    127.0.0.1  xxxxx,…………… tor

保证ping tor 能ping到127.0.0.1。 然后reload squid.conf!
恩,结束了,就这么简单,这样你就实现了一个既能高速上国内网,同时也能通过tor访问被屏蔽技术类网站的代理服务器。
这样设置好的服务器上通常的网站是没有问题的,但是登陆twitter有点问题,问题在于如果网站URL Redirection,即HTTP 301,squid不是能够很
好的选择tor通路,有可能会选择direct link现象。如果发现有这样的网站,加入如下两句就可以解决问题了。

     acl twitter dstdomain .twitter.com    #申明规则
     never_direct allow twitter     #永远不让twitter直接连接

通过always_direct 可以屏蔽被国家级防火墙屏蔽的网站,以免沾染上西方不良思想,例如将下面两行加入squid.conf

    acl avno1 dstdomain .avno1.com #申明规则
    always_direct allow avno1 #永远让avno1网站直接连接,因为被国家级防火墙保护,所以只有在解封时才能正常访问。


没有评论: