Linux全攻略--Squid服务器配置与管理
时间:2009-03-23 来源:sjhf
Squid是针对WEB客户机的高性能代理缓冲服务器,其作用是加快INTERNET的访问速度,同时为WEB服务器提供安全机制.
一.安装Squid软件包.
![]() # http_port 3128 //浏览器连接到本Proxy Server时所用的端口,可修改. Cache选项设置 # maximum_object_size 4096 KB #Default: # minimum_object_size 0 KB #Default: # maximum_object_size_in_memory 8 KB //内存中最大的对象大小 #Default: # ipcache_size 1024 //IP对应cache的大小 # ipcache_low 90 # ipcache_high 95 #Default: # fqdncache_size 1024 //域名全称CACHE的大小 #Default: # cache_replacement_policy lru //CACHE替换策略 #Default: # memory_replacement_policy lru 内存替换策略 #Default: # cache_dir ufs /var/spool/squid 100 16 256 //存放路径大小和具体配置 dns_nameservers xxxx.xxxx.xxxx.xxxx//内部指定DNS服务器 authenticate_program xxxx具//身份认证程序 authenticate_children 32 //身份认证程序启动的进程数目 request_body_max_size 5MB //最大请求的BODY大小 reply_body_max_size 20MB #cache_mem 85MB //设置PROXY SERVER可使用多少内存作为高速缓存,一般要设置为物理内存的1/3 cache_swap_low 80 cache_swap_high 97 //这两行设置CACHE进行替换的闸值,当占用到97%的CACHE后,CACHE中的内容将被清空20% #cache_dir ufs /var/spool/squid 100 16 256 //设置高速缓存目录和高速缓存可以使用的硬盘空间,100表示最大可使用100MB,16表示第一层子目录最多可以有16个,256表示每个第一层子目录下最多可以有256子目录 设置日志文件存储路径 # cache_access_log /var/log/squid/access.log //设置高速缓存存取记录文件的名称和所在目录,它记录了所有高速缓存的行为,如果不需要,可以设为"cache_access_log/dev/null" #Default: # cache_log /var/log/squid/cache.log //设置缓存存储记录文件的名称和所在目录,它记录了哪些数据从高速缓存移出,哪些数据被放入高速缓存 #Default: # cache_store_log /var/log/squid/store.log //设置store.log文件存放的位置,access.log,cache.log,store.log等文件会越来越大,用户最好定期备份和删除,或者将它们都关闭 #reference_age 2 month //设置高速缓存中的数据可保存多久,这里我们设置为7天,若是天内没有存取过该数据,则访数据会被删除 Cache_mgr root//设置SQUID出现问题时,系统将给ROOT发送E-MAIL 多级缓存设置 # proxy icp #hostname type port port options #cache_peer parent.linux.net parent 3128 3130 [proxy-only] #cache_peer sib1.linux.net sibling 3128 3130 [proxy-only] #cache_peer sib2.linux.net sibling 3128 3130 [proxy-only] //这里可以进行多级缓存设置,设置PARENT和SIBING PROXY SERVER的网址,端口和功能.OPTION的PROXY-ONLY表示不保存取回的数据,如此可节省硬盘空间,除非硬盘大小或者是与其它PROXY SERVER之间的网络不够快,否则不建议这样做. 设置可以查询的主机或域 # cache_peer_domain cache-host domain [domain ...] # cache_peer_domain cache-host !domain # cache_peer_domain parent.foo.net .edu #cache_host_domain 202.198.32.3 !.tw !hinet.net//设置SQUID可以查询的PROXY SERVER所在的主机或域,如果是禁止查询,则在前面加上"!" #acl aclname acltype string/file # acl aclname time [day-abbrevs] [h1:m1-h2:m2] # day-abbrevs: # S - Sunday # M - Monday # T - Tuesday # W - Wednesday # H - Thursday # F - Friday # A - Saturday # h1:m1 must be less than h2:m2 这段语句指明要访问的时间,字母代表周日到周六 设置禁止访问某些站点. #acl all src 0.0.0.0/0.0.0.0 #acl manager proto cache_object #acl localhost src 127.0.0.1/255.255.255.255 #acl to_localhost dst 127.0.0.0/8 #acl SSL_ports port 443 563 #acl Safe_ports port 80 # http #acl Safe_ports port 21 # ftp #acl Safe_ports port 443 563 # https, snews #acl Safe_ports port 70 # gopher #acl Safe_ports port 210 # wa acl flag src 192.168.5.0 //加上这一行,定义所有来自192.168.5.*访问PROXY SERVER的连接称为FLAG 设置可以连接的端口 #http_access allow manager localhost #http_access deny manager #http_access deny !Saft_ports #http_access deny CONNECT !SSL_ports http_access allow flag http_access deny all //这一部分设置访问控制,也就是设置哪些情况下可以连接,哪些情况下不可以连接. 其它项目设置 icp_access allow* //允许CACHE_PEER使用ICP协议访问 proxy_auth_realm BJPU proxy-caching web server期间 //验证框提示的BANNER cache_mgr [email protected] cache//管理员的电子邮件地址 cache_effective_user* cache_effective_group*//执行CACHE程序的用户UID和GID visible_hostname cnproxy.bjpu.edu.cn.cache//服务器的机器名 memory_pools on//内存池设置为打开 memory_pools_limit 50 MB//内存池大小 三,Squid Server 配置实例. ![]() ![]() ![]() ![]() ![]() ![]()
squid服务器的初始化 当我们第一次使用squid服务器之前需要先使用squid -z命令对squid服务器进行初始化 # ls /var/spool/squid # squid -z 注意:如果初始化成功的话,会显示:2008/06/20 15:07:51| Creating Swap Directories 如果显示的是这样的信息的话:FATAL: Could not determine fully qualified
hostname. Please set 'visible_hostname'
Squid Cache (Version 2.5.STABLE6): Terminated abnormally. CPU Usage: 0.064 seconds = 0.008 user + 0.056 sys Maximum Resident Size: 0 KB Page faults with physical i/o: 0 Aborted 我们需要在主配置文件中添加一行: # vi /etc/squid/squid.conf visible_hostname squid //其中squid为你当前主机的名称 保存退出后,再次执行squid -z就可以了。
# ls /var/spool/squid 00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F
启动squid服务 # service squid start Starting squid: . [ OK ] 在/var/spool/squid目录中可看到00-0F等16个子目录,在这些目录中又各有00-0F等256个子目录.SQUID SERVER的高速缓存文件就存放在这些目录中. 3.配置客户端通过代理服务器上网. 1)在IE浏览器中设置. ![]() ![]() ![]()
构建透明代理服务器需要对squid代理服务和iptables防火墙分别进行设置,配合使用才能实现透明代理的功能。
在squid服务器中默认是不支持提供透明代理服务的相关功能的,因此我们需要在配置文件中进行如下配置: # vi /etc/squid/squid.conf //在配置文件的尾部添加上下列行 http_port 192.168.1.254:8080 httpd_accel_host virtual//这行语句一定要加上 httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on
cache_effective_user nobody
http_access allow all
access_dir ufs /usr/local/squid/cache 100 16 256
重新启动服务 # service squid restart Stopping squid: . [ OK ] Starting squid: . [ OK ]
让系统启动时自动运行squid,
编辑/etc/rc.d/local文件,在文件末尾加上:
su nobody -c "usr/local/squid/bin/squid"
然后设置iptables
执行如下命令"
echo "1">/proc/sys/net/ipv4/ip_forward
iptables -t nat -A PREROUTING -i eth1 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 8080
iptables -t nat -A POSTROUTING -s 192.168.0.0/24 -o eth0 -j SNAT --to a.b.c.d
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -J ACCEPT
其中EHT1 是内部网卡,ETH0是外部网卡,内网IP地址为192.168.1.0/23.ETH0对应的IP地址为218.198.67.10,ETH1对应的IP地址是192.168.1.254.
设置网关和DNS后就可在客户端直接上网了.
五.Squid Server的安全访问设置:
1)限制内网某些IP使用代理服务器.
要使用地址范围192.168.5.0到192.168.5.255来为代理服务器的系统定义oak acl条目,可使用下面的方法:
acl oak src 192.168.5.0/255.255.255.0
一旦定义地址范围以后,就可以使用SQUID SERVER选项中ACL定义对系统进行控制.例如,为了允许局域网系统中的OAK组通过代理访问WEB,可以用带ALLOW动作的http_access命令把oak指定为ACL定义.如下
http_access allow oak
下面的例子是只允许局域网的oak组通过代理访问WEB站点,而拒绝其它主机的访问,这里设置了两个ACL条目:一个用于本地系统,允许局域网的OAK访问,另一个用于拒绝其它主机的访问.如下:
acl oak src 192.168.5.0/255.255.255.0
acl all src 0.0.0.0/0.0.0.0
http_access allow oak
http_access deny all
2)限制内网某些MAC地址使用代理服务器.
例如下面:
acl advance arp 00:01:02:1f:2c:3e 00:01:02:3c:1a:8b...
3)限制内网用户访问某些网站
下面的例子是拒绝任何使用代理的用户访问主机nix.linux.com.如是所在的局域网代理服务器通过代理访问该主机,则可以使用这样的命令限制访问.
acl nic dst nic.linux.com
http_access deny nic
下面的是限制访问站点
|
相关阅读 更多 +