Linux全攻略--Squid服务器配置与管理

简介:


Squid是针对WEB客户机的高性能代理缓冲服务器,其作用是加快INTERNET的访问速度,同时为WEB服务器提供安全机制.

一.安装Squid软件包.
可看到已经安装好了.
二.Squid.conf文件详解和常用配置.
下面看下部分重要的设置.由于文件内容太多.
设置端口:
#Default:
# 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]liukange@netease.com[/email] 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 配置实例.
在前面加上IP地址,Squid 就不会监听外部的网络接口
2.建立转换目录.
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浏览器中设置.
点局域网设置.
2)在mozilla浏览器中设置.
在"首选项"选择.
 
四. 配置透明代理服务器
构建透明代理服务器需要对 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
下面的是限制访问站点 [url]www.linux.com[/url]以及其它一切linux.com域中的主机.
acl center dstdomain .linux.com
http_access deny center
下面的例子是限制访问.linux.com 和.unin.com
acl xxk dstdomain .linux.com .unix.com
http_access deny xxk
如果要限制的网站很多,可以使用文件的方式:如
acl sexip dst "/etc/squid/acl/sexip"
acl sexweb dstdomain "/etc/squid/acl/sexweb"
http_access deny sexip
http_access deny sexweb
然后把要控制的站点的IP地址和域名存放在相应的文件中,例如gedit编辑/etc/squid/acl/sexweb文件,把下面的一些站点添加进去:
.xxxhu.com
.sexhu.com
...
4)限制内网用户访问某些格式的文件.如下:
acd xfile urlpath_regex \.mp3$ \.avi$ \.exe$
http_access deny xfile
当然,我们也可以指定有些特定用户可以访问这些文件类型,方法如下:
acl myhost src 192.168.1.18 192.168.5.10
acl xfile urlpath_regex \.mp3$ \.avi$ \.exe$
http_access allow myhost xfile
http_access deny xfile
 
5)限制内网用户使用代理服务器的时间
axcl myhost src 192.168.1.18 192.168.5.10
acl all src 192.168.1.0/24 192.168.5.0/24
acl worktime time MTWHF 8:00-12:00 14:00-18:00
acl alltime time SMTWHFA 0:00-24:00
http_access allow myhost alltime
http_access allow all worktime
http_access deny worktime
 
6)控制内网用户使用代理服务器的并发连接数.
acl conncount maxconn 3
http_access deny conncount normal
http_access allow normal
 
结束...





     本文转自yangming1052 51CTO博客,原文链接:http://blog.51cto.com/ming228/119415 ,如需转载请自行联系原作者

相关文章
W9
|
29天前
|
运维 关系型数据库 MySQL
轻松管理Linux服务器的5个优秀管理面板
Websoft9 应用管理平台,github 2k star 开源软件,既有200+的优秀开源软件商店,一键安装。又有可视化的Linux管理面板,文件、数据库、ssl证书方便快捷管理。
W9
84 1
|
1月前
|
缓存 Ubuntu Linux
Linux环境下测试服务器的DDR5内存性能
通过使用 `memtester`和 `sysbench`等工具,可以有效地测试Linux环境下服务器的DDR5内存性能。这些工具不仅可以评估内存的读写速度,还可以检测内存中的潜在问题,帮助确保系统的稳定性和性能。通过合理配置和使用这些工具,系统管理员可以深入了解服务器内存的性能状况,为系统优化提供数据支持。
38 4
|
1月前
|
NoSQL Linux PHP
如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤
本文介绍了如何在不同操作系统上安装 Redis 服务器,包括 Linux 和 Windows 的具体步骤。接着,对比了两种常用的 PHP Redis 客户端扩展:PhpRedis 和 Predis,详细说明了它们的安装方法及优缺点。最后,提供了使用 PhpRedis 和 Predis 在 PHP 中连接 Redis 服务器及进行字符串、列表、集合和哈希等数据类型的基本操作示例。
64 4
|
1月前
|
运维 监控 安全
盘点Linux服务器运维管理面板
随着云计算和大数据技术的迅猛发展,Linux服务器在运维管理中扮演着越来越重要的角色。传统的Linux服务器管理方式已经无法满足现代企业的需求,因此,高效、安全、易用的运维管理面板应运而生。
|
1月前
|
运维 监控 Linux
服务器管理面板大盘点: 8款开源面板助你轻松管理Linux服务器
在数字化时代,服务器作为数据存储和计算的核心设备,其管理效率与安全性直接关系到业务的稳定性和可持续发展。随着技术的不断进步,开源社区涌现出众多服务器管理面板,这些工具以其强大的功能、灵活的配置和友好的用户界面,极大地简化了Linux服务器的管理工作。本文将详细介绍8款开源的服务器管理面板,包括Websoft9、宝塔、cPanel、1Panel等,旨在帮助运维人员更好地选择和使用这些工具,提升服务器管理效率。
|
1月前
|
安全 算法 Linux
Linux 服务器还有漏洞?建议使用 OpenVAS 日常检查!
在数字化时代,Linux 服务器的安全至关重要。OpenVAS 是一款优秀的开源漏洞扫描工具,可以帮助及时发现并修复服务器中的安全隐患。本文将介绍 OpenVAS 的主要功能、使用方法及应对漏洞的措施,帮助用户加强服务器安全管理,确保企业数字化安全。
59 7
|
20天前
|
存储 Oracle 安全
服务器数据恢复—LINUX系统删除/格式化的数据恢复流程
Linux操作系统是世界上流行的操作系统之一,被广泛用于服务器、个人电脑、移动设备和嵌入式系统。Linux系统下数据被误删除或者误格式化的问题非常普遍。下面北亚企安数据恢复工程师简单聊一下基于linux的文件系统(EXT2/EXT3/EXT4/Reiserfs/Xfs) 下删除或者格式化的数据恢复流程和可行性。
|
1月前
|
监控 Ubuntu Linux
使用VSCode通过SSH远程登录阿里云Linux服务器异常崩溃
通过 VSCode 的 Remote - SSH 插件远程连接阿里云 Ubuntu 22 服务器时,会因高 CPU 使用率导致连接断开。经排查发现,VSCode 连接根目录 ".." 时会频繁调用"rg"(ripgrep)进行文件搜索,导致 CPU 负载过高。解决方法是将连接目录改为"root"(或其他具体的路径),避免不必要的文件检索,从而恢复正常连接。
|
1月前
|
缓存 Unix Linux
服务器linux!!!
本文介绍了计算机的演变历史、硬件基础知识及服务器相关知识。从电子管时代的ENIAC到冯-诺伊曼架构,再到现代计算机系统组成,详细讲解了计算机的发展历程。此外,文章还介绍了服务器的分类、品牌、硬件组成以及IDC机房的上架流程,为读者提供了全面的技术背景知识。
54 0
服务器linux!!!
|
1月前
|
安全 Linux API
Linux服务器安全
人们常误认为服务器因存于数据中心且数据持续使用而无需加密。然而,当驱动器需维修或处理时,加密显得尤为重要,以防止数据泄露。Linux虽有dm-crypt和LUKS等内置加密技术,但在集中管理、根卷加密及合规性等方面仍存不足。企业应选择具备强大验证、简单加密擦除及集中管理等功能的解决方案,以弥补这些缺口。
26 0