一、Squid代理服务器概念
1、Squid是基于Unix的代理服务器(proxy server),它缓存比起点源点更接近请求者的互联网内容。Squid支持缓存多种不同的网络对象,包括那些通过HTTP和FTP访问的人。缓存频繁要求网页、媒体文件和其它加速回答时间并减少带宽堵塞的内容。
2、Squid代理服务器(Squid proxy server)一般和原始文件一起安装在单独服务器而不是网络服务器上。Squid通过追踪网络中的对象运用起作用。Squid最初担当中介,仅仅是把客户要求传递到服务器并存储要求对象的拷贝。如果同一个客户或同一批客户在要求还在Squid缓存(cache)时要求相同的对象,Squid就可以立刻服务,加速下载并保存带宽。
3、squid是一种用来缓存Internet数据的软件。接受来自人们需要下载的目标(object)的请求并适当的处理这些请求。也就是说,如果一个人想下载一web界面,他请求squid为他取得这个页面。squid随之连接到远程服务器并向这个页面发出请求。然后,squid显式地聚集数据到客户端机器,而且同时复制一份。当下一次有人需要同一页面时, squid可以简单的从磁盘中读到它,那样数据会立即传输到客户机子
上。
二、Squid代理的作用
通过缓存的方式为用户提供Web访问加速,减少带宽资源占用
对用户的Web访问进行过滤控制
隐蔽内部网络,加强安全
三、Squid的工作流程
当代理服务器中有客户端需要的数据时:
客户端向代理服务器发送数据请求;
代理服务器检查自己的数据缓存;
代理服务器在缓存中找到了用户想要的数据,取出数据;
代理服务器将从缓存中取得的数据返回给客户端。
当代理服务器中没有客户端需要的数据时:
客户端向代理服务器发送数据请求;
代理服务器检查自己的数据缓存;
代理服务器在缓存中没有找到用户想要的数据;
代理服务器向Internet 上的远端服务器发送数据请求;
远端服务器响应,返回相应的数据;
代理服务器取得远端服务器的数据,返回给客户端,并保留一份到自己的数据缓存中。
四、Squid主要组成部分
服务名 | squid |
---|---|
主程序 | /usr/sbin/squid |
配置目录 | /etc/squid |
主配置文件 | /etc/squid/squid.conf |
监听tcp端口号 | 3128 |
默认访问日志文件 | /var/log/squid/access.log |
1、传统代理
1、挂载光盘解压squid
2、配置squid
[root@centos02 squid-3.4.6]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-acync-io=240 --enable-default-err-languge=Simplify_Chinese --disable-poll --enable--epoll --enable-gunregex
3、编译安装suqid
[root@centos02 squid-3.4.6]# make && make install
4、优化squid
[root@centos02 ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@centos02 ~]# touch /usr/local/squid/var/logs/cache.log
创建用户
[root@centos02 ~]# useradd -M -s /sbin/nologin squid
[root@centos02 ~]# chown -R squid:squid /usr/local/squid/
5、修改主配置文件
[root@centos02 ~]# vim /etc/squid.conf
6、配置客户端代理
[root@centos01 ~]# vim /etc/profile
HTTP_PROXY=http://192.168.100.20:3128
HTTPS_PROXY=http://192.168.100.20:3128
FTP_PROXY=http://192.168.100.20:3128
export HTTP_PROXY HTTPS_PROXY FTP_PROXY
8、安装 启动httpd
[root@centos03 ~]# yum -y install httpd
[root@centos03 ~]# systemctl start httpd
9、安装elinks测试连接
[root@centos01 ~]# yum -y install elinks
[root@centos01 ~]# elinks http://192.168.100.30
2、透明代理
1、在传统代理配置文件上添加【transparent】开启路由功能
[root@centos02 ~]# vim /etc/squid.conf
[root@centos02 ~]# vim /etc/sysctl.conf
2、设置虚拟机网络
将squid服务添加一块网卡,并修改为VMnet3
添加ens34网卡
[root@centos02 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens34
重启网卡
将web虚拟机网卡改为VMnet3
修改web网络ip
[rootCcentos3 ~]# vim etc/susconf ignetwork-scripts/ifcfg-ems32
重启网卡
[rootCcentos3 ~]# systemctl restart network
3、安装iptables防火墙
[root@centos02 ~]# yum -y install iptables-services
[root@centos02~]# iptables -F | 清空所有防火墙规则 |
---|---|
[root@centos02~]# iptables -L | 查看防火墙规则 |
[root@centos03~]# iptables-save | 保存防火墙规则 |
将网站映射到3128端口
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s 192.168.100.0/24 -p tcp --d
port 80 -j REDIRECT --to 3128
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s 192.168.100.0/24 -p tcp --d
port 21 -j REDIRECT --to 3128
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s 192.168.100.0/24 -p tcp --d
port 443 -j REDIRECT --to 3128
保存防火墙规则
[root@centos02 ~]# iptables-save
4、重启服务
[root@centos02 ~]# killall squid
[root@centos02 ~]# squid -k parse
[root@centos02 ~]# squid -z
[root@centos02 ~]# squid
[root@centos02 ~]# netstat -anptu | grep 3128
5、测试
在web服务器查看日志
[root@centos03 ~]# tail -f /var/log/httpd/access_log