http://blog.sina.com.cn/ning8823104[订阅]
字体大小: 正文
linux fedora 8用squid3.0单网卡配置简单透明代理(2008-10-15 02:36:44)
一、关于各种代理服务器的比较
linux下的代理服務器軟件很多,我從www.freshmeat.com(一個著名的linux軟件站點)查看了一下,足有六十多個。但是被廣泛應用的只有Apache、socks、squid等幾個實踐證明是高性能的代理軟件。下面我們分別來比較一下這幾個軟件:

1 Apache
Apache是世界上用的最廣泛的HTTP服務器,之所以用的最廣泛,是因為它強大的功能、高效率、安全性和速度。從1.1.x版本開始,Apache開始包含了一個代理模塊。用Apache作代理服務器的性能優勢並不明顯,不建議使用。


2 Socks
Socks 是一種網絡代理協議,該協議可以讓客戶機通過Socks服務器獲得對Internet的完全訪問能力。Scoks在服務器和客戶端之間建立一個安全的代理數據通道,從客戶的角度看來,Scoks是透明的;從服務器的角度看來,Socks就是客戶端。客戶端不需要具有對Internet的直接訪問能力(也就是說,可以使用私有IP地址),因為Socks服務器能夠把來自於客戶端的連接請求重定向到Internet。此外,Socks服務器可以對用戶連接請求進行認證,允許合法用戶建立代理連接。同理,Socks也能防止非授權的Internet用戶訪問及的內部網絡。所以常常把Socks當作防火牆來使用。
常見的瀏覽器如netscape、IE等可以直接使用Socks, 並且我們也可以使用socsk5的所帶的client來使那些不直接支持socks的internet軟件使用Socks。
更多的資料可以參考Socks官方站點http://www.socks.nec.com。

3 Squid
對於web用戶來說,Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher和HTTP協議。和一般的代理緩存軟件不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。
Squid 將數據元緩存在內存中,同時也緩存DNS查詢的結果,除此之外,它還支持非模塊化的DNS查詢,對失敗的請求進行消極緩存。Squid支持SSL,支持訪問控制。由於使用了ICP(輕量Internet緩存協議),Squid能夠實現層疊的代理陣列,從而最大限度地節約帶寬。
Squid由一個主要的服務程序squid,一個DNS查詢程序dnsserver,幾個重寫請求和執行認證的程序,以及幾個管理工具組成。當Squid啟動以後,它可以派生出預先指定數目的dnsserver進程,而每一個dnsserver進程都可以執行單獨的DNS查詢,這樣一來就大大減少了服務器等待DNS查詢的時間。

4. TIS(Trusted Information System)發佈的防火牆工具箱fwtk(firewall tool kits)不是一個單獨
的集成軟件包,而是用來建造防火牆的一套工具。其包括:http代理,ftp代理,telnet代理,
及其它代理服務程序。該套軟件配置相對簡單,功能強大,而且是個免費軟件,因此在實際應用
中得到了廣泛的應用,其與NEC的免費代理服務器socks5是世界上應用最為廣泛的防火牆/代理服
務器軟件包。fwtk目前的最新版本為2.1版。
二、安装并配置squid代理服务器

       1.非透明代理

              1》.squid3.0的安装就省略了,我的系统刚更新的,自己就是3.0了,不过安装它应该不难
              2》.对于没有特殊要求的,采用默认的配置文件就ok了,在/etc/squid/squid.conf,如果你一起有改过的话,可以copyd同目录 squid.conf.default到里面。
                whereis squid,看看安哪了,也可以rpm -ql squid
                sudo /usr/sbin/squid -z,初始化目录
                sudo /etc/rc.d/init.d/squid start
                此时默认的是3128端口,防火墙是通不过的,在防火墙-》可信端口-》添加3128,tcp
                                                                                                   》可信的服务->WWW选上
                另外,要确认服务中squid是enabled,而对于初始的默认cache目录,/var/spool/squid和/var/log/squid,我改变了他们的属主,但估计是多余了(squid用户和群早就有了,忘了是自己建的还是系统代的,哈哈)
               sudo chown -R squid:squid ~~~
              3》.在客户端ie,设置好ip:port就好了。

        2.改成透明代理
 
            1》.同样,没有特殊要求,还是采用默认的,只是在http_port 3128 后加一个transparent
            2》.关键是配置iptables控制转发
                   echo "1" >/proc/sys/net/ipv4/ip_forward
                    iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
             3》.如果是在命令行输入的话,那么每次重启系统和iptables后都要重新输入,可以这样解决:
           iptable的配置,在/etc/rc.d/目录下用touch命令建立firewall文件,执行chmod u+x firewll以更改文   件属性,编辑/etc/rc.d/rc.local文件,在末尾加上/etc/rc.d/firewall以确保开机时能自动执行该脚本。
                     echo "starting ip forward"
                     echo 1 >/proc/sys/net/ipv4/ip_forward
                     echo "starting iptables rules"
                     modprobe ip_tables
                     modprobe ip_nat_ftp
                     /sbin/iptables -F -t nat
                     iptables -t nat -A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128              #将所有80#端口的包转发到3128端口
//iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE          #对eth0端口进行欺骗,单网卡用不到

             4》.配置完以上内容后就可以配置客户端上网了
                    ie里取消代理的设置,将客户端的网关指向服务器ip,设置好dns,然后就可以上网了
                    如果不设好dns的话,就只有人工解析了,比如百度,202.108.22.43
                    关键是这里的dns的设置,网上说的都比较模糊,我猜测,应该有两种方法:
                     <1>.通过转发,就是讲内网的dns请求转发到外网的dns服务器进行解析
                     <2>.linux同时充当dns服务器,关于dns服务器的文章也很多,但本人菜鸟,要求不高,只有能用就 ok了。(将客户端dns指定为服务器ip)
                             A.我用的是dnsmasq:Linux下可以用Iptables加Dnsmasq做透明DNS代理。                  http://www.eit.name/blog/read.php?116,我并没有这么做,只是简单的开启了dnsmasq而已
                      B.就是用bind,有空再说吧
           5》.发现这样配置的透明代理上不了qq,但设置代理可以上,这应该是和squid有关

三、配置socks5代理服务器,失败了,但还是记下来
      
       1.源码编译
          http://freeware.sgi.com/source/socks5/
         下载socks5-v1.0r11.tar.gz
          并把patchs保存为socks5-v1.0r11patch.txt

          [ninga@localhost download]$ tar -zxvf socks5-v1.0r11.tar.gz
          [ninga@localhost download]$ cd socks5-v1.0r11
          [ninga@localhost socks5-v1.0r11]$ patch < socks5-vl.0r11patch.txt (把补丁放进来)
         ./configure  --enable-threads
          make;make install
         
       2.rpm包安装
           但可能是gcc版本差的太多了,所以我放弃自己编译,下载rpm
                        socks5-server-1.0r4-1.i386.rpm
          可以到这里找http://rpm.pbone.net/

                [ninga@localhost download]$ sudo rpm -ivh socks5-server-1.0r4-1.i386.rpm
                error: Failed dependencies:
                     libdl.so.1 is needed by socks5-server-1.0r4-1.i386
                     libc.so.5 is needed by socks5-server-1.0r4-1.i386
                [ninga@localhost download]$ sudo rpm -ivh ld.so-1.9.5-5.i386.rpm
                  Preparing...                ########################################### [100%]
                  1:ld.so                  ########################################### [100%]
                [ninga@localhost download]$ sudo rpm -ivh libc-5.3.12-24.i386.rpm
                  Preparing...                ########################################### [100%]
                  1:libc                   ########################################### [100%]
               
               解决了库的问题,由于版本太新,以前的一些东西没得
        
               [ninga@localhost download]$ sudo rpm -ivh socks5-server-1.0r4-1.i386.rpm
               Preparing...                ########################################### [100%]
                 1:socks5-server          ########################################### [100%]
                Remember to read the man page for socks5 and configure it for your
                situation.  No config file is installed by default but there are
                examples in the /usr/doc directory.

               好,终于好了
           3.开始配置:
                   可以用rpm -ql查询
                              /usr/sbin/socks5: can't handle reloc type <NULL>
                    由于我的系统刚升级到fc9,又socks5这版本太悠久了,官方网又上不去,哎,惨阿,得睡觉了,不管  了,好像是gcc,libc的问题,还望高手指点。
               
       参考:
       http://blog.chinaunix.net/u/13797/showart.php?id=440442
       http://www.3pcode.com/server/2004/10/11552.htm

四、总结
            squid 并不支持socks,和纯粹的ftp,看来还得用其它的进行补充啊
        参考:
       Fedora Core Linux上轻松搭建DNS服务器
       http://server.ccw.com.cn/jssc/htm2007/20070821_305142.shtml       
  • 评论加载中,请稍候...
发评论    明星私家相册

验证码:看不清楚数字吗?点击这里再试试。收听验证码

发评论

以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

相关博文
读取中...
推荐博文
读取中...