当前位置:Linux教程 - 代理服务 - 代理服务 - 设定代理服务器

代理服务 - 设定代理服务器

设定代理服务器
2004-04-23 15:18 pm
来自:Linux文档
现载:Www.8s8s.coM
地址:无名

下载安装 squid
安装各种套件的方法主要可以分成 rpm 升级以及用来源档(binary档案)升级,以 rpm 方法升级是比较简单的方法,而且以 rpm -q 的指令可以来查询目前你的系统中的套件版本!不过由于 rpm 出来的时间会比较慢,并且不同 linux 版本之间可能会有版本兼容性的问题,所以你也可以直接以 binary 升级(就是使用 *.tar.gz 的档案升级的方法)。要注意的是,你只要以其中一种方法升级就好了,不用重复升级喔!
下载:
目前使用最多的代理服务器程序,大概是 squid 这一套程序了!在 Redhat 6.1 中就已经有这套软件,只是版本比较旧(2.2.stable-4),通常我会喜欢把这一套软件升级后才予以设定!升级的方式有两种,一个是使用 rpm 升级,另一个则是直接使用 source code 升级,以下提供的是 squid-2.4.STABLE1-5.src.rpm 的升级方式。不过,由于 squid 在安装的时候需要其它的附属套件的安装,所以还需要一些套件,这里提供了使用 rpm 升级的所有需要的套件,你可以下载回去用用看!另外,如果你需要使用到原始码来安装的话,这个网站你也可以去看看!
rpm 安装方法:
我是以 RPM 程序来安装的,安装的附属套件要先安装才行,过程如下:

[root@tsai /root]# tar -zxvf squid-2.4.STABLE1-5.tar.gz
先解压缩吧,这时会有一些档案会产生出来,然后请接着执行下面的动作!
[root@tsai /root]# /bin/rpm --rebuild pam-0.74-22.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/pam-0.74-22.i386.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/pam-devel-0.74-22.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild sgml-common-0.5-7.src.rpm
[root@tsai /root]# /bin/rpm --rebuild sgml-tools-1.0.9-12.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/noarch/sqml-common-0.5-7.noarch.rpm
[root@tsai/root]#/bin/rpm -Uvh --nodeps /usr/src/redhat/RPMS/i386/sqml-tools-1.0.9-12.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild openjade-1.3-13.src.rpm
[root@tsai /root]# /bin/rpm -ivh /usr/src/redhat/RPMS/i386/openjade-1.3-13.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild bash-2.05-8.src.rpm
[root@tsai /root]# /bin/rpm -Uvh /usr/src/redhat/RPMS/i386/bash-2.05-8.i386.rpm
[root@tsai /root]# /bin/rpm --rebuild squid.2.4.STABLE1-5.src.rpm
[root@tsai/root]#/bin/rpm -Uvh --nodeps /usr/src/redhat/RPMS/i386/squid.2.4.STABLE1-5.i386.rpm
请注意,由于有些套件有点小错误,所以需要强制安装,因此有些安装过程需要加上 --nodeps 这个参数才能安装!!至于 --rebuild 是重新编译的意思,若对于 rpm 不明了,请在往前看看以 rpm 升级的办法一文吧!
基本上,经过上面的安装之后,应该就可以把 squid 升级了,你可以察看一下:

[root@tsai /root]# rpm -q squid
squid-2.4.STABLE1-5
这样就安装好啰!
来源档升级:(update 2001/11/09)
那如果你想要以最新版的 squid 来升级的话呢,要如何是好?这里提供了目前(2001/09/xx)最新的 squid 版本 squid-2.4.STABLE2-src.tar.gz ,新版的功能是比较多的。
安装的方法很简单,只是你要先将 RedHat 6.1 原先的 squid 移除,然后将刚刚捉下去的档案。整个安装的方法,简单的来说,有下列几个步骤:

[root@tsai /root]# cp squid-2.4.STABLE2-src.tar.gz /usr/local
将档案拷贝到 linux 预设的本机安装套件的目录 /usr/local 中!
[root@tsai /root]# cd /usr/local
[root@tsai local]# tar -zxvf squid-2.4.STABLE2-src.tar.gz
这时会产生一个名为 squid-2.4.STABLE2 的目录!
在这个目录中有一个 INSTALL 的档案,你可以看一下里面的流程!
[root@tsai local]# cd squid-2.4.STABLE2
[root@tsai squid-2.4.STABL2]# ./configure --prefix=/usr/local/squid
--enable-icmp --enable-async-io=40
--enable-err-language="Traditional_Chinese"
--enable-cache-digests
上面 --prefix 后面接的是 squid 即将安装的目的目录,
也就是说,你的这一版 squid 会安装在 /usr/local/squid 中!
另外, --enable-async-io=40 这一个咚咚最好加上去!
会增加很多的总体效能喔!(快得不得了!)
至于 --enable-err-language-"Traditional_Chinese" 是指将错误讯息
以中文输出!
[root@tsai squid-2.4.STABL2]# make
[root@tsai squid-2.4.STABL2]# make install
上面就是在编译及安装啦!
这样就安装完毕啰!

设定代理服务器
这里仅提供简单的代理服务器的设定,如果你需要更详细的设定的话,请到 squid 的网页去看看吧!
需要给予设定的档案:
基本上,需要给予设定的档案只有一个,即是 squid.conf 这个档案。要注意的是,如果你是以 rpm 安装的,则这个档案会放在 /etc/squid/ 中,如果你是以 binary 安装的,那这个档案就会放在 /usr/local/squid/conf 当中!
另外,程序预设的激活批次檔, rpm 的是 /etc/rc.d/init.d/squid 这个档案,而 binary 则在 /usr/local/squid/bin/squid 这个档案;
而程序预设的暂存目录在 /var/spool/squid !
以下我将以 rpm 的档案进行说明,当然啰, binary 的修改是一样的,只是档案放置的地点不一样罢了!
确定 squid 可以正常执行:
我们先简单修改一下 /etc/squid/squid.conf 这个档案,让他可以被激活,然后再继续往下修改!

找到下面几行,将批注(#)拿掉:

http_port 3128
icp_port 3130
cache_mem 8 MB
cache_dir ufs /var/spool/squid 100 16 256
cache_access_log /var/log/squid/access.log
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
找到下面这行,并改成下列情况:
http_access deny all ==> http_access allow all
上面那一行改好之后,储存并离开 vi ,然后执行:
/etc/rc.d/init.d/squid start
或者是
/usr/local/squid/bin/squid
如此则 squid 应该可以正常执行了!接下来请到 IE 中,如果你是 IE 5.0 以后的版本,请到:
『工具』->
『Internet 选项』->
『联机』->
『局域网络设定』中,点选
『使用 Proxy 服务器』
并在网址列输入你的主机名称(或者是 IP 均可),然后按确定离开!然后在 IE 中按按看网页的设定有没有成功,如果可以读到网页的话,表示 squid 可以正常的被使用了!
虽然 squid 可以被使用,但是要让你的 squid 实际发挥应有的能力时,你应该最少要设定一些基础的参数的!所以请继续往下看吧!
进阶的 squid.conf 设定:
在完成了上述的设定之后,你的 Proxy Server 就可以激活了,不过,如果你想要再进一步进行设定的话,例如刚刚提过的,你想要让 squid 的上层代理伺服器具有选择性,以及想让 squid 的暂存空间更大,那你就必须要再设定了,以下提供几个不错的网页提供给你做为参考!
优克笔记本;
台北市教育网络中心;
基本上,需要注意的地方主要可以分为底下几个:
http_port 3128:
这个东西是用来设定你的 Proxy 监听讯息的 port ,目前 proxy 通用的 port 是 3128 ,但是你也可以自行设定一个大于 1024 的 port ,例如另一个常用的 port 是 8080 这一个。不过我并不建议你修改这个 port ,因为如果你修改了之后,很有可能会造成无法联机的情况,所以还是使用默认值 3128 吧!
cache_peer:(相当重要的!)
这个就是用来设定上层代理服务器的指令,刚刚有提过『代理服务器可以设定多个』,而且你可以将代理服务器分类,以我为例,因为我住台南,所以成大计中对我而言是一个很不错的服务器,则我如果要向上层代理服务器要求讯息,可以指向成大计中(快很多喔!),亦即是 proxy.ncku.edu.tw 3128 这一个,请你依照你的所在地来设定你的代理服务器吧。
cache_peer proxy.ncku.edu.tw parent 3128 3130
上面的说明是,使用 proxy.ncku.edu.tw 这个主机当作 主要的(parent,就是父母的意思)上层代理服务器,另外,如果你想要向对等的服务器要求东西,就可以将 parent 写成 slbling 啰!除此之外,这一个指令可以重复写入,也就是说,你可以同时设定多个上层代理服务器!不过这里要向大家报告一下,如果设太多上层服务器的话,由于资料会一层层的去要求,所以速度反而会变慢!基本上是建议大家只要设定两个到三个左右的上层代理服务器就好了。
再者,3128是 squid 主要的 port ,而 3130 则是另外一个监听的 port ,也要写上去喔!
cache_peer_domain:(相当重要的!)
这个参数可以用来分别指定不同网域的代理服务器,以我为例,因为常上美国 EPA 的网站,而 proxy.ncku.edu.tw 对于这个网站的读取能力很强,另外,gate.ncku.edu.tw 这个 proxy 则对 ucar.edu 这个美国网域的读取能力较强,那我可以使这两个网域向不同的 proxy 索取资料:
cache_peer_domain proxy.ncku.edu.tw .epa.gov
cache_peer_domain gate.ncku.edu.tw .ucar.edu
那你晓得了吗?只要你在这里分别指定不同的代理服务器,那你自己的这个代理服务器就自动的帮你完成你需要的资料来源了!很重要吧!
cache_mem 8 MB:
这东西与你的内存有关,如果你的内存够大的话,这个 8 可以变大一些,例如你的内存有 256 MB 时,你可以设成 256*1/4 ==> 64 MB,如果你只有 64MB,而且主机还有其它用途,那使用预设的 8 MB 就好了。
cache_dir ufs /var/spool/squid 100 16 256:(update 2001/11/09)
这个指令就是限制暂存区大小的地方啦,上面的说明是:暂存区目录为 /var/spool/squid ,而暂存空间大小为 100M , 在这个暂存目录下有 16 个目录,而每个目录中又有 256 个目录(你可以实际进入 /var/spool/squid 当中去看看)。如果你要改变暂存盘目录及这个目录的大小时,可以在这里修改!不建议修改 16, 256 这两个数值。另外,通常,如果是我们一般小型的区网(不超过10个人),那设定个 500 应该够了,如果你的硬盘够大,设定成 1000 以上更好。修改过这个指令后,要再重新激活 squid 之前,请先使用下面的指令来使你的目录可以进行存取的动作,否则你的 squid 是不会工作的!例如你将上面的参数修改成:
cache_dir ufs /var/spool/squid 1000 16 256
然后再进行下面的指令:
rm -rf /var/spool/squid
mkdir /var/spool/squid
chown squid:squid /var/spool/squid
/usr/sbin/squid -z
这样你的squid暂存目录就可以使用啰!
另外,如果你刚刚在安装的时候有将 --enable-async-io=40 这一个加进来的话,将可以增加 aufs 这一个磁盘的用途!这个东西可真是好呀!可以将你的硬盘发挥到最极限的速度喔!虽然在 squid.conf 档案中有提及,这个 type 可能会有 bug 存在,不过,据鸟哥的使用结果,发现,没啥大问题!好用的很!所以,你可以将上面的咚咚改成下面的样子:
cache_dir aufs /var/spool/squid 1000 16 256
acl 与 http_access:
这两个档案是相互辉映的,例如:如果你只要将这个 Proxy 开放给内部网络 192.168.1.XXX 用的话,你可以增加这三行:
acl insidenet src 192.168.1.0/255.255.255.0 (insidenet 只是一个代号,你可以任意设定,但须与底下的相同名称。而 src 代表后面接的是 IP 的意思,而后面的 IP(255.255.255.0) 表示 192.168.1.0~192.168.1.255 均为此设定中!)
http_access deny all(关于 proxy 全部的服务均取消)
http_access allow insidenet localhost(仅开放 Proxy 给 insidenet 及 localhost 两个网域使用)
cache_mgr root:
当 squid 有问题的时候,要联络谁?通常我都将 root 改成我自己的 ID ,如此才能在其它的机器上收到信!
cache_mgr [email protected]
acl 与 always_direct:(很重要)
这个就是是否需要直接去读取你要的网页,而不要透过上层代理服务器的指令(重要)。例如:我们不需要在台湾地区的学术网络还透过上层代理服务器的话,可以写入这两行:
acl Taiwan-net dstdomain .edu.tw(就是设定网址,其中 dstdomain 后面接的就是网址,网址的型态亦可仅写成 .tw 即可)
always_direct allow Taiwan-net(这个网址的网页,直接由我们这个 Proxy 去捉,而不透过上层 Proxy)
acl 与 never_direct:
这个就是不要直接去取得资料的设定处,例如我们常去的美国环保署网站,我们希望关于这个网页的资料一定由上层 Proxy 去捉取,则可以这样设定:
acl usepa dstdomain .epa.gov
never_direct allow usepa
上面这个 always_direct 与 never_direct 的设定可以是多重的,你可以多写入几个对应的网址,去定义你的上层 Proxy 的工作路径!
prefer_direct off:
上面这个选项一定要设定为 off ,不然的话你的 squid 将会尝试直接到网站去捉资料,而不会透过上层 proxy 喔!
重新激活:
设定完成之后,最重要的就是重新激活了,你可以这样来激活:
/etc/rc.d/init.d/squid restart
/usr/local/squid/bin/squid -k reconfigure
特别需要注意的地方:基本上这样的 squid 设定应该能满足你的需求了,如果你的上层代理服务器设定妥当的话,那你应该会感受到代理服务器带给你的网络联机速度上的快乐喔!不过有些地方还是需要注意一下的:
目前作为代理服务器的主机,大都由于频宽的问题,所以会限制联机上来的使用者,就是上面的 http_access 这个参数的设定值,因此,你应该针对你所在的网域去调查你的上层代理服务器,若可能的话,可以提出申请,请管理员帮你开启使用,否则对 squid 是不会有帮助的!
在 acl 后面接了代号及 dstdomain 之后,如果你要接一个网域的话,请在前面加 . 例如美国环保署的网站(不论是 www 或其它)就要写成 .epa.gov 而不是 epa.gov(先前我搞错了!向大家对不起!),这样一来,不论 http://www.epa.gov/ 或 adb.epa.gov 才会经过你的上层 proxy 喔!
请依照你实际的需求来设定 acl 与 never_direct 与 always_direct ,例如你人在台湾,那几乎所有 com.tw 的网站都不用透过 proxy 也可以捉得很好!反而透过 proxy 会变慢哩,同样的,如果是学术网络的话,就直接把 .edu.tw 加入到 always_direct 当中吧!
也需要注意一下 cache_peer_domain 用来分流的方法喔!
设定的几个范例:
这里有几个设定的范例可以参考一下:


Windows 内的设定
以下使用 IE 作为说明,如果是 Netcape 的话,基本上的设定是相同的:
开启 IE ,然后在『工具』内选择『Internet 选项』:

在开启的窗口内选择『联机』并点选下方的『局域网络设定』:

在新的框框中,填入你所需要的 Proxy 的网址或者是 IP 均可,而 port 则需视你的代理服务器而定,以我为例,我都是使用 192.168.1.2 作为我的主机(NAT、Proxy、Web 都是同一台机器),而 port 也仅是设定为通用的 3128 ,所以如下方设定即可,当然,如果你是在南部的 seednet 用户,或者可以填入 ksproxy.seed.net.tw,port 则填入 8080 即可。

另外,你也可以在 IE 中直接设定你要直接去捉取的网页名称,点选上个图的 『进阶』那一项,在出现的框框的最底下,可以填入你不想透过 Proxy 捉取的网站网址!

如此一来则设定好了 Proxy Server 啰!


squid 的注意事项
使用代理服务器后,浏览国外的网页应该是可以变快的!但是,你要小心几件事:
若 squid 内设定的使用空间满了,则 squid 将不会运作!
若 squid 的纪录文件太大了,则工作效率会变慢!
如上所述,由于 squid 可能会让你的硬盘空间饱和(尤其我们都是使用旧计算机,硬盘容量本来就不是很足够),如果每隔几个月就要去清理硬盘一次,那可能会造成人力的浪费,这个时候,使用例行性的工作就是个好方法啦!
删除记录文件的方法:
基本上,记录文件不需要保存太久的时间,你可以在 /etc/cron.daily 这个目录中增加一个档案(档名随便取都可以),假设档名为 system_do.sh,则在这个档案中,你可以增加这一行:

/usr/sbin/squid -k rotate <==/usr/sbin/squid 这个路径要指向你的 squid 执行档
这个方法在使你的纪录文件可以被转成备份文件!而且每天都更新备份,不过,你必须将 system_do.sh 这个档案更改成可执行档,例如: chmod 700 system_do.sh
然后在你的 /etc/cron.weekly 目录中,也增加一个档案,里头也增加一行:

rm -rf /var/log/squid/*.gz
同样的做成可执行档,如此,则每个礼拜系统可将你的备份文件杀掉啰!
删除记录目录的方法:
同样的,你可以在每个月清理一次你的暂存目录,你可以将你的 /etc/cron.monthly 里面增加一个档案,增加下面这几行:

echo Now, restart Proxy Service
/etc/rc.d/init.d/./squid stop
echo removing directory "/var/spool/squid"
rm -rf /var/spool/squid <==与你的暂存目录设定有关
echo recreated directory "/var/spool/squid"
mkdir /var/spool/squid <==与你的暂存目录设定有关
echo chang owner to squid
chown squid:squid /var/spool/squid
echo recreated swap directory, using /usr/sbin/squid
/usr/sbin/squid -z
echo starting proxy server!
/etc/rc.d/init.d/squid start
则每个月系统会自动的将 squid 暂存于 /var/spool/squid 的资料全部杀掉,再重新建造一个新的目录,另外,将目录改变成 squid 所有(避免不能读写的情况!)之后,激活这个暂存目录的格式化(squid -z),最后再重新激活!如此则不需害怕暂存目录会被吃光光了!
增加 proxy 效能的方法:
关于上层代理服务器:用 cache_peer 设定上层代理服务器的数目不要太多,只要 2-5 个之间就好了,而且上层代理服务器一定要找距离你最近,并且具有较大频宽的主机,如果是在台南,那 proxy.ncku.edu.tw 就是不错的主机;
关于暂存目录的设定:以 cache_dir ufs 设定的目录,最好是单独割出来的约 1-2 GB 的硬盘槽,以我为例,我将另外一台主机的 30GB 的硬盘割两槽给 proxy 用,而每一槽只有 2GB ,分别命名为 proxy1 与 proxy2 ,则可以写成
cache_dir ufs /proxy1 2000 16 256
cache_dir ufs /proxy2 2000 16 256
由于分成两槽来存取,所以整体效率上会比较好,但这是针对一般比较大型的代理服务器的设定了,我们这个小主机就不用如此设定(但是效率真的有差哩!)。
善用 acl, always_direct, never_direct:就如同上面提到的,因为你的目的不同,所以会使用到不同的 proxy 作为你的上层代理服务器,如果你发现你的上层代理服务器无法针对你常上的网站来求取资料时,就将那个网站加入你的 always_direct 吧!另外,也可以使用 cache_peer_domain 来处理喔!
在 ./configure 的时候增加 --enable-async-io=40 这一个指令:基本上,增加这个指令之后,将可以使您的磁盘多一个 type ,亦即是 aufs ,这个 type 的速度较快!


__________________