分享
 
 
 

架设Squid代理服务器

王朝other·作者佚名  2008-05-18
窄屏简体版  字體: |||超大  

Squid 已经安装了吗?

Squid 的 rpm 文件已经和 RedHat 7.1 捆绑发行了,在安装系统的时候,如果在 Networks 选项中选中的

话,它会自动安装在系统上。您可以用下面的命令检查您的系统中是否已经安装了 Squid:

rpm -q squid

Squid 的最新版本可以在 Squid 主页 或它的镜像站点得到。 Squid 可以用下述命令安装在系统上:

rpm -ivh squid-2.3.STABLE4-10.i386.rpm

配置 Squid

Squid 的定制是通过编辑它的配置文件 squid.conf 来实现的,squid.conf 文件通常在 /etc/squid 目录

下。这个配置文件内容很多,但好在它的每个选项都有详尽的说明。

首先要修改的是 http_port,这个选项指定了 Squid 监听客户请求的端口,默认值是 3128。要使用代理

功能,这个端口值要和运行 Squid 的机器的 IP 地址一起使用,可以修改成下面这样:

http_port 192.168.0.1:8080

上述声明表示 Squid 绑定在 IP 地址 192.168.0.1 上,端口为 8080。端口可以设置为任意值,但要确认

没有其他程序会使用同样的端口。其他的服务请求的端口设置也可以设为类似的配置。

访问控制

使用访问控制特性,可以控制在访问时根据特定的时间间隔进行缓存、访问特定站点或一组站点等等。 Squid 访问控制有两个要素:ACL 元素和 访问列表。访问列表可以允许或拒绝某些用户对此服务的访问。

下面列出一些重要的 ACL 元素类型

* src : 源地址 (即客户机IP地址)

* dst : 目标地址 (即服务器IP地址)

* srcdomain : 源名称 (即客户机名称)

* dstdomain : 目标名称 (即服务器名称)

* time : 一天中的时刻和一周内的一天

* url_regex : URL 规则表达式匹配

* urlpath_regex: URL-path 规则表达式匹配,略去协议和主机名

* proxy_auth : 通过外部程序进行用户验证

* maxconn : 单一 IP 的最大连接数

为了使用控制功能,必须先设置 ACL 规则并应用。ACL 声明的格式如下:

acl acl_element_name type_of_acl_element values_to_acl

注:

1. acl_element_name 可以是任一个在 ACL 中定义的名称。

2. 任何两个 ACL 元素不能用相同的名字。

3. 每个 ACL 由列表值组成。当进行匹配检测的时候,多个值由逻辑或运算连接;换言之,即任一 ACL

元素的值被匹配,则这个 ACL 元素即被匹配。

4. 并不是所有的 ACL 元素都能使用访问列表中的全部类型。

5. 不同的 ACL 元素写在不同行中,Squid 将把它们组合在一个列表中。

我们可以使用许多不同的访问条目。下面列出我们将要用到的几个:

* http_access: 允许 HTTP 访问。这个是主要的访问控制条目。

* no_cache: 定义对缓存请求的响应。

访问列表的规则由一些类似 'allow' 或 'deny' 的关键字构成,用以允许或拒绝向特定或一组 ACL 元素提供服务。

注:

1. 这些规则按照它们的排列顺序进行匹配检测,一旦检测到匹配的规则,匹配检测就立即结束。

2. 一个访问列表可以又多条规则组成。

3. 如果没有任何规则与访问请求匹配,默认动作将与列表中最后一条规则对应。

4. 一个访问条目中的所有元素将用逻辑与运算连接:

http_access Action 声明1 AND 声明2 AND 声明 OR.

http_access Action 声明3

多个 http_access 声明间用或运算连接,但每个访问条目的元素间用与运算连接。

5. 请记住列表中的规则总是遵循由上而下的顺序。

回到配置 Squid

Squid 默认不做任何用户访问控制。若要允许某个访问,必须进行定制规则。在 squid.conf 中 http_access deny 行前输入下述文字:

acl mynetwork 192.168.0.1/255.255.255.0

http_access allow mynetwork

mynetwork 是 acl 名称,下一行则是适用于特定 acl (即 mynetwork ) 的规则。192.168.0.1 指明是网络中掩码为 255.255.255.0 的子网。mynetwork 主要是为了给出网络上一组机器,下一条规则则允许这些

机器访问 http 服务。上述修改配合 http_port 就可以让 Squid 很好的工作起来了。 修改完成后,Squid

可以用下述命令启动:

service squid start

注:

Squid 也可以在系统启动的时候自动运行,方法是在 ntsysv 或 setup(系统服务菜单)中打开 Squid。在

对配置文件做了任何更改之后,当前正运行的 Squid 进程必须重新启动。可以用下面的命令来完成:

1. service squid restart 或

2. /etc/rc.d/init.d/squid restart

配置客户端

由于客户端的请求是送到代理服务器的特定端口的,因此,客户端也要做相应配置。在继续下一步之前,请

确认要访问代理服务器的客户端已经连接在局域网中并已分配了有效的 IP 地址,请确认它们都能 ping 通

运行了 Squid 的 Linux 服务器。

在 Internet Explorer 下的配置:

1. 点击菜单上的 工具 -> Internet 选项

2. 选择 连接 并单击 局域网设置

3. 选中 使用代理服务器 输入上述代理服务器的 IP 地址和端口。

在 Netscape Navigator 下的配置:

1. 点击菜单上的编辑(Edit)->首选项(Preference)->高级(Advanced)->代理服务器(Proxies)。

2. 选中手动配置代理服务器(Manual Proxy Configuration)。

3. 点击查看(View) 并

4. 输入上述代理服务器的 IP 地址和端口。

使用访问控制

多个访问控制及其规则为客户端访问控制提供了一种灵活的机制。下面给出通常所用到的例子:

1. 允许列表中的机器访问 Internet。

acl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30

http_access allow allowed_clients

http_access deny !allowed_clients

这个规则只允许 IP 地址为 192.168.0.10、192.168.0.20 及 192.168.0.30 的机器

访问 Internet,其他 IP 地址的机器则都被拒绝访问。

2. 限制访问时段。

acl allowed_clients src 192.168.0.1/255.255.255.0

acl regular_days time MTWHF 10:00-16:00

http_access allow allowed_clients regular_days

http_access deny !allowed_clients

这个规则允许子网192.168.0.1中的所有客户机在周一到周五的上午10:00到下午4:00

访问 Internet。

3. 为不同的客户机分配不同的访问时段。

acl hosts1 src192.168.0.10

acl hosts2 src 192.168.0.20

acl hosts3 src 192.168.0.30

acl morning time 10:00-13:00

acl lunch time 13:30-14:30

acl evening time 15:00-18:00

http_access allow host1 morning

http_access allow host1 evening

http_access allow host2 lunch

http_access allow host3 evening

http_access deny all

在这个规则中,主机 host1 可以在 morning 和 evening 时段访问 Internet,主机

host2 和 host3 分别只能在 lunch 和 evening 时段访问 Internet。

注:

一个访问条目中所有的元素之间用与运算按下述方式连接 :

http_access Action statement1 AND staement2 AND statement OR.

多个 http_access 声明之间用或运算连接而每个访问条目中的元素用与运算连接,见

下:

http_access allow host1 morning evening

无法在时段 morning 和时段 evening 同时进行(morning AND evening ),这个表达

式将不会返回真值(TRUE),从而这个条目将不会引发任何动作。

4. 站点屏蔽

Squid 可以屏蔽某些特定站点或含有某些特定字词的站点。可以用下面的规则实现:

acl allowed_clients src 192.168.0.1/255.255.255.0

acl banned_sites url_regex abc.com *()(*.com

http_access deny banned_sites

http_access allow allowed_clients

也可以用以屏蔽含有某些特定字词(比如说 dummy、fake)的站点

acl allowed_clients src 192.168.0.1/255.255.255.0

acl banned_sites url_regex dummy fake

http_access deny banned_sites

http_access allow allowed_machibes

在实际应用中,不需要把需屏蔽的所有站点或字词都列在上面,可以先保存在一个文件

中(请查看 /etc 目录中的 banned.list文件)ACL 将从这个文件中读出所需信息用以

屏蔽被禁止的站点。

acl allowed_clients src 192.168.0.1/255.255.255.0

acl banned_sites url_regex "/etc/banned.list"

http_access deny banned_sites

http_access allow allowed_clients

5. 优化

Squid 可以通过使用 maxconn 元素来限制客户端连接的数目。 要使用这个选项,必须

先允许 client_db。

acl mynetwork 192.168.0.1/255.255.255.0

acl numconn maxconn 5

http_access deny mynetwork numconn

注:

maxconn ACL 使用小于(less-than)对比。此 ACL 规则将在连接数大于设定值时被匹配。

这是 ACL 不与 http_access 允许规则连用的主要原因。

6. 缓存数据

对于静态页面,缓存的数据能够立刻回送到发出请求的客户端。没有必要去缓存 cgi-bin

或 Servlet,这些可以用 ACL 元素 no_cache 来禁止。

acl cache_prevent1 url_regex cgi-bin /?

acl cache_prevent2 url_regex Servlet

no_cache deny cache_prevent1

no_cache deny cache_prevent2

7. 自定错误反馈信息

可以用拒绝规则的 deny_info 选项来自定错误反馈信息。Squid 默认的错误信息放在

/etc/squid/errors 目录中。这个目录可以用 error_directory 选项指定。您也可以

定制现存的错误反馈信息。

acl allowed_clients src 192.168.0.1/255.255.255.0

acl banned_sites url_regex abc.com *()(*.com

http_access deny banned_sites

deny_info ERR_BANNED_SITE banned_sites

http_access allow allowed_clients

在上面的例子中,当用户试图访问被禁止的站点时,将会显示一条定制的信息。

ERR_BANNED_SITE 选项中的文件名必须在上述的错误信息的目录中。错误信息必须是 HTML 格

式的。上面列出了 ACL 的一些选项,您可以参看 Squid 主页上的 FAQ 文档 以获得使用 ACL

更多的信息。

日志

Squid 的所有日志文件都存放在 /var/log/squid 目录中,有缓存日志、访问日志和 store.log文件。文

件 access.log 记录了有关客户机的请求、连接活动、每个 HTTP & ICP 询问、客户机 IP 地址、请求方

式、请求的 URL 等等信息。这些数据可以用来对访问进行分析。许多程序如 sarg、 calamaris, Squid-Log-Analyzer 都可以用来分析这些数据并产生 HTML 格式的分析报告。 这些报告可以在一组用户、一组

IP 地址或一组访问过的站点等等记录中产生。

这些记录文件也可以成为下面这样:

cache_access_log For access.log

cache_log For cache.log

cache_store_log For store.log (Store manager)

pid_filename Squid process ID file name

验证方式

Squid 的默认配置允许任何用户不经过验证过程就可以进行访问。Squid 通过一个外部程序提供用户验证

功能(比如说只允许有效的用户访问 Internet),这就需要一个有效的用户名和密码。可以用 proxy_auth

ACL 和 authenticate_program 来实现,在允许访问前强制进行用户名和密码的核查。下面列出一些 Squid

能用到的验证程序:

1. LDAP : 使用 Linux Lightweight 目录访问协议(Linux Lightweight Directory Access Protocol)

2. NCSA : 使用 NCSA 风格的用户名和密码档

3. SMB : 使用 SMB 协议的服务,如 SAMBA 或 Windows NT

4. MSNT : 使用 Windows NT 的域验证

5. PAM : 使用 Linux 的可装载验证模块

6. getpwam : 使用 Linux 密码档

必须指定使用的验证程序,可以用 authenticate_program 选项完成。请确认选定的验证程序已安装并能很

好的工作。

修改 squid.conf 文件选定验证程序

authenticate_program /usr/local/bin/pam_auth

acl pass proxy_auth REQUIRED

acl mynetwork src 192.168.0.1/255.255.255.0

http_access deny !mynetwork

http_access allow pass

http_access deny all

这个规则表示,使用 PAM 验证程序,所有用户在获得访问许可前必须进行验证。

还有些选项比如 authenticate_ttl 和 authenticate_ip_ttl,可以用来改变验证程序的动作,比如说使某个用户名及密码重新生效。

参考资料

本文仅仅初窥了 Squid 的冰山一角,更多的参考资料可以在下面的站点找到:

* Squid Home, www.squid-cache.org

* Squid Documentation Project, squid-docs.sourceforge.net

* visolve.com

* For Proxy Authentication, home.iae.nl/users/devet/squid/proxy_auth

(转贴自:www.linuxfocus.org,作者:D.S. Oberoi 翻译:Free Neil)

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有