Squid 是 Linux 系统中最多见的一块开源代理服务软件(官方网站为 http://www.squid-cache.org ),能够很好地实现HTTP、FTP、DNS、查询,以及SSL等应用的缓存代理,功能十分强大。css
做为应用层的代理服务软件,Squid 主要提供缓存加速和应用层过滤控制的功能。vim
代理的工做机制windows
当客户机经过代理来请求 Web 页面时,指定的代理服务器辉县检查本身的缓存,若是缓存中已经有客户机须要访问的页面,则直接将缓存中的页面内容反馈给客户机;若是缓存中没有客户机须要访问的页面,则由代理服务器想 Internet 发送访问请求,得到返回的 Web 页面之后,将网页数据保存到缓存中并发送给客户机。
HTTP 代理的缓存加速对象主要是文字、图像等静态 Web 元素。使用缓存机制后,当客户及在不一样的时候访问统一 Web 元素,或者不一样的客户机访问相同的 Web 元素时,能够直接从代理服务器的缓存中得到结果。这样就大大减小了像 Internet 重复提交 Web 请求的过程,提升了客户机的 Web 响应速度。
因为客户机的 Web 访问请求其实是由代理服务器代替完成的,从而能够隐藏用户的真实 IP 地址,起到必定的保护做用。另外一方面,代理服务器担任着相似“经纪人”的角色,因此有机会针对要访问的目标、客户机的地址,访问的时间段等进行过滤控制。浏览器
首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序手动设置代理服务器的地址和端口,而后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析也会发送给指定的代理服务器。缓存
提供与传统代理相同的功能和服务,其区别在于客户机不须要指定代理服务器的地址和端口,而是经过默认路由、防火墙策略将 Web 访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来讲是“透明”的,用户甚至不知道本身在使用代理服务,因此称为“透明代理”。使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给 DNS 服务器。安全
经过 squid 反向代理能够加速网站的访问速度,可将不一样的 URL 请求分发到后台不一样的 Web 服务器上,同时互联网用户只能看到反向代理服务器的地址,增强了网站的访问安全。服务器
主机 | 操做系统 | IP地址 | 所用软件 |
---|---|---|---|
Squid代理服务器 | CentOS 7.4 x86_64 | 192.168.100.135 | squid.x86_64 7:3.5.20-10.el7 |
Win10 客户机 | windows 10 | 192.168.100.10 | Internet Explorer 11 |
1. 安装squid软件包网络
yum -y install squid
2. 开启squid服务并发
systemctl enable squid.service systemctl start squid.service
3. 查看启动进程信息dom
# netstat -tunlp | grep squid tcp6 0 0 :::3128 :::* LISTEN 7374/(squid-1) udp 0 0 0.0.0.0:33427 0.0.0.0:* 7374/(squid-1) udp6 0 0 :::38585 :::* 7374/(squid-1)
4. 为客户机设置代理(IP:3128)
- 在IE浏览器中,选择“工具”→“Internet选项”,在“链接”选项卡中点击“局域网设置”按钮,填写代理服务器IP与端口信息。
- 若要在 Linux 客户机的命令行界面中使用代理服务器,不准经过环境变量来指定代理服务器的地址、端口等信息。
# vim /etc/profile HTTP_PROXY=http://192.168.100.135:3128 //为使用HTTP协议指定代理 HTTPS_PROXY=http://192.168.100.135:3128 //为使用HTTPS协议指定代理 FTP_PROXY=http://192.168.100.135:3128 //为使用FTP协议指定代理 NO_PROXY=192.168.1.,192.168.4. //对两个局域网段不使用代理 export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY # source /etc/profile
1. 经过SNAT技术完成数据的转发,让客户机将数据交给Squid代理服务器,再由其转发到外网中
//清空防火墙规则 iptables -F iptables -t nat -F //开启dns服务容许经过外网口 iptables -t nat -A POSTROUTING -p udp --dport 53 -o ens32 -j MASQUERADE //开启路由转发 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf //当即生效 sysctl -p
2. 编辑squid配置文件
# vim /etc/squid/squid.conf http_port 3128 transparent cache_dir ufs /var/spool/squid 100 16 256
3. 检查配置文件,初始化并重启squid服务
squid -k parse //检查配置文件 squid -z //初始化 systemctl restart squid.service
4. 添加防火墙规则
//将内网用户对80端口的访问都转发到本机3128端口上 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128 //将内网用户对80端口的访问都转发到本机3128端口上 iptables -t nat -A PREROUTING -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128 //保存防火墙规则 service iptables save
1. 编辑squid配置文件,添加如下规则
# vim /etc/squid.conf http_port IP:80 vhost cache_peer 网站源服务器IP parent 80 0 originserver
2. 重启squid服务
systemctl restart squid
3. 自定义错误页面
# 错误页面默认在/usr/share/squid/errors/zh-cn/目录下 # 修改logo为公司logo ,/etc/squid/errorpage.css # vim /etc/squid/errorpage.css /* Page displayed title area */ #titles { margin-left: 15px; padding: 10px; padding-left: 100px; //ur('') 指向地址,替换为公司的logo路径地址便可 background: url('/squid-internal-static/icons/SN.png') no-repeat left; }
4. 修改系统管理员邮箱
# vim /etc/squid/squid.conf //主机名 visible_hostname squid.njxx.com //管理员邮箱信息 cache_mgr admin@njxx.com
acl 列表名称 列表类型 列表内容 …
列表类型 | 含义/用途 |
---|---|
src | 源IP地址、网段、IP地址范围 |
dst | 目标IP地址、网段、主机名 |
port | 目标端口 |
dstdomain | 目标域,匹配域内的全部站点 |
time | 使用代理服务的时间段,用字母表示一星期中各天的英文缩写 |
maxconn | 每一个客户机的并发链接数 |
url_regex | 目标资源的URL地址,-i表示忽略大小写 |
urlpath_regex | 目标资源的整个URL路径,-i表示忽略大小写 |