快捷搜索:   服务器  安全  linux 安全  MYSQL  dedecms

Linux代理服务器和防火墙配置详细解析(2)

cache_swap_low 90

cache_swap_high 95

maximum_object_size

说明:大于该值得对象将不被存储。如果你想要提高访问速度,就请降低该值;如果你想最大限度地节约带宽,降低成本,请增加该值。单位为K,缺省值为:

maximum_object_size 4096 KB

有关日志的选项:

cache_access_log:

说明:指定客户请求记录日志的完整路径(包括文件的名称及所在的目录),该请求可以是来自一般用户的HTTP请求或来自邻居的ICP请求。缺省值为:cache_access_log /var/log/squid/access.log,如果你不需要该日志,可以用以下语句取消:cache_access_log none;

cache_store_log

说明:指定对象存储记录日志的完整路径(包括文件的名称及所在的目录)。该记录表明哪些对象被写到交换空间,哪些对象被从交换空间清除。缺省路径为:cache_log /var/log/squid/cache.log,如果你不需要该日志,可以用以下语句取消:cache_store_log none;

cache_log:

说明:指定squid一般信息日志的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_log /var/log/squid/cache.log;

cache_swap_log:

说明:该选项指明每个交换空间的“swap.log”日志的完整路径(包括文件的名称及所在的目录)。该日志文件包含了存储在交换空间里的对象的元数据(metadata)。通常,系统将该文件自动保存在第一个“cache_dir”说定义的顶级目录里,但是你也可以指定其他的路径。如果你定义了多个“cache_dir”,则相应的日志文件可能是这样的:

cache_swap_log.00

cache_swap_log.01

cache_swap_log.02

后面的数字扩展名与指定的多个“cache_dir”一一对应。需要注意的是,最好不要删除这类日志文件,否则squid将不能正常工作;

pid_filename:

说明:指定记录squid进程号的日志的完整路径(包括文件的名称及所在的目录)。缺省路径为

pid_filename /var/run/squid.pid,如果你不需要该文件,可以用以下语句取消:pid_filename none;

debug_options:

说明:控制作日志时记录信息的多寡。可以从两个方面控制:section控制从几个方面作记录;level控制每个方面的记录的详细程度。推荐的方式(也是缺省方式)是:debug_options ALL,1,即,对每个方面都作记录,但详细程度为1(最低);

log_fqdn on|off:

说明:控制在 access.log 中对用户地址的记录方式。打开该选项时,squid记录客户的完整域名,取消该选项时,squid记录客户的ip地址。注意,如果打开该选项会增加系统的负担,因为squid还得进行客户ip的DNS查询。缺省值为:log_fqdn off。有关外部支持程序的选项:

ftp_user:

说明:设置登录匿名ftp服务器时的提供的电子邮件地址,登录匿名ftp服务器时要求用你的电子邮件地址作为登录口令(更多的信息请参看本书的相关章节)。需要注意的是,有的匿名ftp服务器对这一点要求很苛刻,有的甚至会检查你的电子邮件的有效性。缺省值为:ftp_user Squid@;

ftp_list_width:

说明:设置ftp列表的宽度,如果设得太小将不能的浏览到长文件名。缺省值为:ftp_list_width 32;

cache_dns_program:

说明:指定DNS查询程序的完整路径(包括文件的名称及所在的目录)。缺省路径为:cache_dns_program /usr/lib/squid/dnsserver;

dns_children:

说明:设置DNS查询程序的进程数。对于大型的登录服务器系统,建议该值至少为10。最大值可以是32,缺省设置为5个。注意,如果你任意的降低该值,可能会使系统性能急剧降低,因为squid主进程要等待域名查询的结果。没有必要减少该值,因为DNS查询进程并不会消耗太多的系统的资源;

dns_nameservers:

说明:指定一个DNS服务器列表,强制squid使用该列表中的DNS服务器而非使用/etc/resolv.conf文件中定义的DNS服务器。你可以这样指定多个DNS服务器:dns_nameservers 10.0.0.1 192.172.0.4

缺省设置为:dns_nameservers none;

unlinkd_program:

说明:指定文件删除进程的完整路径。缺省设置为:unlinkd_program /usr/lib/squid/unlinkd;

pinger_program:

说明:指定ping进程的完整路径。该进程被squid利用来测量与其他邻居的路由距离。该选项只在你启用了该功能时有用。缺省为:pinger_program /usr/lib/squid/pinger;

authenticate_program:

说明:指定用来进行用户认证的外部程序的完整路径。squid的用户认证功能我们将在后面的章节讲述。缺省设置为不认证。

用户访问控制选项:

acl:

说明:定义访问控制列表。

定义语法为:

acl aclname acltype string1 ...

acl aclname acltype "file" ...

当使用文件时,该文件的格式为每行包含一个条目。

acltype 可以是 src dst srcdomain dstdomain url_pattern urlpath_pattern time port proto method browser user 中的一种。

分别说明如下:

src 指明源地址。可以用以下的方法指定:

acl aclname src ip-address/netmask ... (客户ip地址)

acl aclname src addr1-addr2/netmask ... (地址范围)

dst 指明目标地址。语法为:

acl aclname dst ip-address/netmask ... (即客户请求的服务器的ip地址)

srcdomain 指明客户所属的域。语法为:

acl aclname srcdomain foo.com ... squid将根据客户ip反向查询DNS。

dstdomain 指明请求服务器所属的域。语法为:

acl aclname dstdomain foo.com ... 由客户请求的URL决定。

注意,如果用户使用服务器ip而非完整的域名时,squid将进行反向的DNS解析来确 定其完整域名,如果失败就记录为“none”。

time 指明访问时间。语法如下:

acl aclname time [day-abbrevs] [h1:m1-h2][hh:mm-hh]

day-abbrevs:

S - Sunday

M - Monday

T - Tuesday

W - Wednesday

H - Thursday

F - Friday

A - Saturday

h1:m1 必须小于 h2:m2,表达示为[hh:mm-hh]。

port 指定访问端口。可以指定多个端口,比如:

acl aclname port 80 70 21 ...

acl aclname port 0-1024 ... (指定一个端口范围)

proto 指定使用协议。可以指定多个协议:

acl aclname proto HTTP FTP ...

method 指定请求方法。比如:

acl aclname method GET POST ...

各类超时设置选项:

negative_ttl time-units:

说明:设置消极存储对象的生存时间。所谓的消极存储对象,就是诸如“连接失败”及"404 Not Found"等一类错误信息。缺省设置为5分钟;

举例:negative_ttl 5 minutes

positive_dns_ttl time-units:

说明:设置缓存成功的DNS查询结果的生存时间。缺省为6小时;

举例:positive_dns_ttl 6 hours

negative_dns_ttl time-units:

说明:设置缓存失败的DNS查询结果的生存时间。缺省为5分钟;

举例:negative_dns_ttl 5 minutes

connect_timeout time-units:

说明:设置squid等待连接完成的超时值。缺省值为2分钟;

举例:connect_timeout 120 seconds

read_timeout time-units:

说明:如果在指定的时间内squid尚未从被请求的服务器读入任何数据,则squid将终止该客户请求。缺省值为15分钟;

举例:read_timeout 15 minutes

request_timeout:

说明:设置在建立与客户的连接后,squid将花多长时间等待客户发出HTTP请求。缺省值为30秒。

举例:request_timeout 30 seconds;

client_lifetime time-units:

说明:设置客户在与squid建立连接后,可以将该连接保持多长时间;

注意,因为客户建立的每个连接都会消耗一定的系统资源,所以如果你是为一个大型网络提供代理服务的话,一定要正确地修改该值。因为如果同一时间的连接数量太大的话,可能会消耗大量的系统资源,从而导致服务器宕机。缺省值为1天,该值太大了,建议根据你自己的情况适当减小该值。

举例:client_lifetime 1 day

half_closed_clients on/off:

说明:有时候由于用户的不正常操作,可能会使与squid的TCP连接处于半关闭状态,这时候,该TCP连接的发送端已经关闭,而接收端正常工作。缺省地,squid将一直保持这种处于半关闭状态的TCP连接,直到返回套接字的读写错误才将其关闭。如果将该值设为off,则一旦从客户端返回“no more data to read”的信息,squid就立即关闭该连接;

举例:half_closed_clients on

pconn_timeout:

说明:设置squid在与其他服务器和代理建立连接后,该连接闲置多长时间后被关闭。缺省值为120秒;

举例:pconn_timeout 120 seconds

ident_timeout:

说明:设置squid等待用户认证请求的时间。缺省值为10秒;

举例:ident_timeout 10 seconds

shutdown_lifetime time-units:

说明:当收到SIGTERM 或者 SIGHUP 信号后, squid将进入一种shutdown pending的模式,等待所有活动的套接字关闭。在过了shutdown_lifetime所定义的时间后,所有活动的用户都将收到一个超时信息。缺省值为30秒;

举例:shutdown_lifetime 30 seconds

管理参数选项:

cache_mgr:

说明:设置管理员邮件地址。缺省为管理员;

举例:cache_mgr root

cache_effective_user / cache_effective_group:

说明:如果用root启动squid,squid将变成这两条语句指定的用户和用户组。缺省变为squid用户和squid用户组。注意这里指定的用户和用户组必须真是存在于/etc/passwd中。如果用非root帐号启动squid,则squid将保持改用户及用户组运行,这时候,你不能指定小于1024地http_port;

举例:

cache_effective_user squid

cache_effective_group squid

visible_hostname:

说明:定义在返回给用户的出错信息中的主机名;

举例:visible_hostname www-cache.foo.org

unique_hostname:

说明:如果你有一个代理服务器阵列,并且你为每个代理服务器指定了同样的“visible_hostname”,同时你必须为它们指定不同的“unique_hostname”来避免“forwarding loops ”(传输循环)发生。

其它杂项:

1. dns_testnames

说明:设置进行DNS查询测试,如果第一个站点解析成功则立即结束DNS查询测试。如果你不愿意进行DNS查询测试,就不要去掉缺省的设置;

举例:#dns_testnames netscape.com internic.net nlanr.net microsoft.com

logfile_rotate:

说明:通常,squid会定期的将日志文件更名并打包。比如正在使用的日志文件为access.log,squid会将其更名并打包为access.log.1.gz;过了一定时间后,squid又会将access.log.1.gz更名为access.log.2.gz并将当前的日志文件更名并打包为access.log.1.gz,以此循环。logfile_rotate所指定的数字即为打包并备份的文件的数量,当达到这一数目时,squid将删除最老的备份文件。缺省值为10。如果你想手动来进行这些操作,你可以用logfile_rotate 0来取消自动操作;

err_html_text:

说明:用该语句定义一个字符串变量,可以用%L在返回给用户的错误信息文件中引用。错误信息文件通常在/etc/squid/errors目录中,这是一些用HTML写成的脚本文件,你可以自己修改它;

deny_info:

说明:你可以定制自定义的拒绝访问信息文件,并且可以和不同的用户列表相关联。当用户被http_access相关规则拒绝时,squid可以向用户显示你自定义的相应的拒绝访问信息文件;

举例:

Usage: deny_info err_page_name acl

比如:

deny_info ERR_CUSTOM_ACCESS_DENIED bad_guys

memory_pools on|off:

说明:如果你将该项设为on,则squid将保留所有已经分配(但是未使用)的内存池以便在将来使用。缺省为on;

举例:memory_pools on

log_icp_queries on|off:

说明:设置是否对ICP请求作日志。如果你的系统负载很大,你可以用off来取消该功能;

举例:log_icp_queries on

always_direct:

说明:该选项允许你指定某些用户类,squid将这些用户类的请求直接转发给被请求的服务器;

举例:

always_direct allow|deny [!]aclname ...

如:直接转发FTP请求可以这样设置:

acl FTP proto FTP

always_direct allow FTP

never_direct

说明:与always_direct相反;

举例:

Usage: never_direct allow|deny [!]aclname ...

比如,为了强制除了本地域的其他用户使用代理服务器,你可以这样设置:

acl local-servers dstdomain foo.net

acl all src 0.0.0.0/0.0.0.0

never_direct deny local-servers

never_direct allow all

icon_directory:

说明:指明向用户传送错误信息时所用到的图标文件的目录;

举例:icon_directory /usr/lib/squid/icons

error_directory:

说明:指明向用户传送错误信息所用到的错误描述文件的目录。

举例:error_directory /etc/squid/errors

5.透明代理的设置

编辑/etc/squid/squid.conf,修改参数如下:

httpd_accel_host virtual

httpd_accel_port 80

httpd_accel_with_proxy on

httpd_accel_uses_host_header on

运行/etc/rc.d/init.d/squid reload使设置生效,然后,使用iptables工具添加两条端口转向和网络地址转换规则:

iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128

这条命令将把所有局域网用户通过Linux接入服务器访问WWW服务的访问请求,重定向到工作在3128端口的squid处理;

iptables -A POSTROUTING -t nat -s 192.168.1.0/24 -o eth0 -j SNAT --to-source 166.32.129.10

这条命令是把所有来自192.168.1.0网段,并且将要从eth0网络接口(即internet连接)发出的数据包的源地址,更改为这个代理服务器所设置的外部IP地址166.32.129.10。

设置完毕,在局域网内的用户,将计算机的网关更改为192.168.1.2,则可以获得透明代理的服务了。

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论