Matthew(黑夜编码人) < matthew at cnfug.org >
同事们总是抱怨上国外网站速度很慢,半天网页都打不开,于是使用squid和ipfilter实现透明代理,为他们提供缓存功能。
@ 安装squid
为了偷懒就直接使用ports安装,因为我将所有的服务器系统都安装在/s分区中,所以设置了PREFIX为/s/squid
安装完成后编辑/s/squid/etc/squid/squid.conf,我的配置内容如下:
########## Base control ##########
cache_mgr webmaster
cache_effective_user squid
cache_effective_group squid
visible_hostname sleepcat.3322.org
http_port 127.0.0.1:3128
icp_port 0
cache_dir ufs /usr/cache 300 16 256
cache_access_log /dev/null
cache_log /dev/null
cache_store_log /dev/null
error_directory /s/squid/etc/squid/errors/Simplify_Chinese
icon_directory /s/squid/etc/squid/icons
mime_table /s/squid/etc/squid/mime.conf
coredump_dir /s/squid/squid/cache
pid_filename /s/squid/squid/logs/squid.pid
hosts_file /etc/hosts
unlinkd_program /s/squid/libexec/squid/unlinkd########## Performance control ##########
cache_mem 8 MB
cache_swap_low 90
cache_swap_high 95
maximum_object_size 4096 KB
minimum_object_size 0 KB
maximum_object_size_in_memory 8 KB
ipcache_size 1024
ipcache_low 90
ipcache_high 95
fqdncache_size 1024
cache_replacement_policy lru
memory_replacement_policy lru
emulate_httpd_log off
log_ip_on_direct on
log_mime_hdrs off
dns_timeout 2 minutes
request_header_max_size 10 KB
request_body_max_size 0 KB
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern . 0 20% 4320
negative_ttl 5 minutes
positive_dns_ttl 6 hours
negative_dns_ttl 1 minute
connect_timeout 1 minute
read_timeout 15 minutes
request_timeout 5 minutes
client_lifetime 1 day
half_closed_clients on
maximum_single_addr_tries 1
uri_whitespace strip
ie_refresh off########## Access control ############
acl all src 0.0.0.0/0.0.0.0
http_access allow all
http_reply_access allow all
hierarchy_stoplist cgi-bin ?########## Accelator control ############
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on########## Misc control ###########
ftp_user Squid@
ftp_list_width 32
ftp_passive on
ftp_sanitycheck on
初始化cache
启动squid
@ 设置ipfilter
为了实现透明的功能,需要将所有对80端口的请求转到squid的3128端口上,以实现对客户端透明的功能。在/etc/ipnat.rules中加入:
一切完成,客户端无需任何设置,根本感觉不到代理的存在,而且访问速度明显变快。
试一下oops这个软件?? 如果单纯做透明代理,它是比suiqd更快速的选择呢。。。
oops是多线程代理,据说在solaris下效果非常好,bsd下比linux下好,可是oops也有和squid以前一样的一个大bug,遇到高波病毒就dump了!
本功能正在开发中,目前不能使用,敬请原谅。
√ 期刊在线投稿: /journal/contribute.html
√ 本文打印于《CNFUG期刊》,欢迎访问 http://www.cnfug.net 获取更多技术文章。
© 2003-2006 CNFUG(China FreeBSD User Group) All rights reserved.
Powered by FreeBSD
我的squid.conf,简单好用
#cat /usr/local/squid/etc/squid.conf
# Squid port
http_port 3128 # squid 的端口
### cache dir
cache_dir ufs /cache 530 16 256
# 缓存目录:/cache 类型:ufs 大小:530mb 可以在目录下建立一级(16)和二级目录(256)
cache_mem 32 MB # cache内存大小:32mb
cache_store_log /var/log/squid/store.log #Squid的日志1:在/var/log/squid下
cache_access_log /var/log/squid/access.log #Squid的日志2:在/var/log/squid下
cache_log /var/log/squid/cache.log #Squid的日志3:在/var/log/squid下
### cache user
cache_effective_user nobody #缓存用户UID
cache_effective_group nogroup #缓存用户组 GID
### cache admin
visible_hostname etclub.3322.org #发生错误时,生成提示所显示的缓存服务器名
cache_mgr horus@etclub.3322.org #发生错误时,生成提示所显示的缓存服务器管理员名
####
acl all src 0.0.0.0/0.0.0.0
http_access allow all
#以上2句允许所有ip使用该缓存服务器
acl badurls dstdomain popme.163.com
http_access deny badurls
#以上2句不允许使用该缓存服务器访问popme.163.com
acl badwords url_regex -i sex
http_access deny badwords
#以上2句不允许使用该缓存服务器访问URL正则表达式中含sex字样的URL
### httpd 透明代理设置
httpd_accel_host virtual
httpd_accel_port 80
httpd_accel_with_proxy on
httpd_accel_uses_host_header on