目录
1.什么是代理服务器
2.代理服务器的作用
3.代理服务器的工作流程
4.安装代理服务器软件及配置文件解析(squid)
5.正向代理
6.修改数据存放位置
7.设置磁盘使用阈值
"代理"两字顾名思义就是以代理人的身份去帮助其他人取得所需要的东西!!!
而它在网络中如同我们现实生活中一样,当用户要求访问网络资源的时候,而直接又不能上网,于是用户会主动找到到Proxy,Proxy就会前往用户所需要的目的地获取到相应的信息并返回给客户端。
(1)缓存功能,提高用户访问速度
(2)对内部网络客户端进行权限限制
(3)比防火墙有更高的过滤功能
主要透过 Proxy 的服务程序 (daemon) 提供网络代理的任务,因此 Proxy 能不能进行某些工作,与该服务的程序功能有关。 举例来说,如果你的 Proxy 并没有提供邮件或 FTP 代理,那么你的客户端就是无法透过Proxy 去取得这些网络资源。 主要运作的行为在 OSI 七层协议的应用层部分 (所谓的比较"高阶"之意)。
1.Cilent端向Proxy服务器端发送一个数据请求包
2.Proxy服务器会对比这个数据包的“来源”和数据包的目的地是否“合法”,如果合法那么Proxy服务器端会帮忙取得数据(对比政策),如果不合法(被定义规则拒绝)将会拒绝为Cilent提供请求。
3.Proxy服务器会检查自己的缓存数据(新的数据在内存里,旧的数据则放置在硬盘上),如果有Cilent所需的资源,直接将数据取出,而不会向Internet获取数据。
4.Proxy端向Internet上取得相关信息
5.返回给Cilent段
优点:
节省网络带宽,降低网络负载
已较短的路径取得网络数据
通过上层代理服务器,达到数据分流的效果
缺点:
容易被人利用进行非法操作
可能会取得旧的错误数据
/etc/squid/squid.conf //主配置文件
/etc/squid/mime.conf //设定 squid 所支持的 Internet 上面的文件格式
/usr/sbin/squid //squid主程序
/var/spool/squid //squid缓存放置的目录
yum -y install squid //安装squid程序
默认端口:3128
主配置文件解析
先定义acl(访问控制列表),在加载访问控制列表
ACL规则定义格式: acl + 规则名 + 类型 + 目标
规则名:自定义
类型:src //源地址
dst //目的地址
srcdomain //源域
dstdomain //目的域
url_regex URL //正则表达式(字符串部分)
urlpath_regex URL //正则表达式中的路径
time [星期] [时间段]
S (Sunday,星期日) M(Monday,星期一) T(Tuesday,星期二) W(Wednesday,星期三)
H(Thursday,星期四) F(Friday,星期五) A(Saturday,星期六)
时间段的表示方式是: XX:00-YY:00 如: 20:00-22:00
maxconn 客户端的最大连接数
匹配规则格式:http_access + 动作 + 规则名
动作:
deny //拒绝
allow //允许
定义格式不分前后,匹配规则分前后顺序,如果要定义一个具体的IP地址那么后面要加上/32
acl xx acl 0.0.0.0/0
http_accless allow xx //允许所有ip访问
http_port 3128 //默认监听端口
cache_mem 64M //内存缓存区大小
cache_dir ufs /var/spool/squid 200 16 256 //硬盘缓存大小
cache_effective_user squid //设置缓存的有效用户
cache_effective_group squid //设置缓存的有效用户组
cache_access_log /var/log/squid/access.log //访问日志文件的保存路径
cache_log /var/log/squid/cache.log //缓存日志文件的保存路径
visible_hostname linuxprobe.com //设置Squid服务器的名称
cache deny test //默认都是做缓存的,而这条命名就是不做缓存
cache_men 10 MB //从硬盘中划10MB出来存放“热门数据”
这是“linux就该这么学”这本书的原话,大家可以去借鉴
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户
通过squid服务让客户端上网(默认已安装squid服务)
服务端
vim /etc/squid/squid.conf
iptables -I INPUT 1 -p tcp --dport 8080 -j ACCEPT
客户端
我这里使用的Firefox浏览器
然后测试一下能不能上网
cache_dir ufs /xx 100 16 216
mkdir /xx
改了之后还不能马上运行,因为selinux的安全上下文不同会被selinux给阻止运行,还用把所有组和所有者改为squid的。
cache_swap_high 95
cache_swap_low 90
这条命令代表当磁盘使用到95%是,会将旧的缓存数据删除到剩下磁盘的90%