CentOS7安装部署squid服务(透明代理+反向代理)
一、squid服务介绍
Squid是一个高性能的代理缓存服务器,Squid支持FTP、gopher、HTTPS和HTTP协议。和一般的代理缓存软件不同,Squid用一个单独的、非模块化的、I/O驱动的进程来处理所有的客户端请求。
squid服务有三种常用代理模式:分别为传统代理、透明代理(正向代理)、反向代理。
特别说明:如果服务器主机时间不同步,可能将会出现一直缓存失败的情况,即TCP_MISS。时间同步配置如下
echo '*/1 * * * * /usr/sbin/ntpdate ntp1.aliyun.com>/dev/null 2>&1' >>/var/spool/cron/root
crontab -l
二、安装squid服务
1、主机环境
操作系统:CentOS7.5
主机名:squid01
eth0:10.0.0.17
2、安装squid服务之前系统优化
#增加文件描述符并检查
echo '* - nofile 65535' >>/etc/security/limits.conf
tail - /etc/security/limits.conf #调整端口范围并检查
cat /proc/sys/net/ipv4/ip_local_port_range
echo "net.ipv4.ip_local_port_range = 4000 65000">>/etc/sysctl.conf
sysctl -p|grep port_range
cat /proc/sys/net/ipv4/ip_local_port_range
3、创建squid用户运行squid服务
useradd -s /sbin/nologin -M squid
4、下载并安装squid(这里采用编译安装squid)
#下载安装包
cd /usr/local/src/
wget http://www.squid-cache.org/Versions/v3/3.5/squid-3.5.20.tar.gz #解压tar包并进入解压之后的目录
tar -xvf squid-3.5..tar.gz
cd squid-3.5. #编译参数并make和make install
./configure --prefix=/usr/local/squid3.5.20 \
--enable-async-io= \
--with-pthreads \
--enable-storeio="aufs,diskd,ufs" \
--enable-removal-policies="heap,lru" \
--enable-icmp \
--enable-delay-pools \
--enable-useragent-log \
--enable-referer-log \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-arp-acl \
--enable-default-err-language=English \
--disable-poll \
--disable-wccp \
--disable-wccpv2 \
--disable-ident-lookups \
--disable-internal-dns \
--enable-basic-auth-helpers="NCSA" \
--enable-stacktrace \
--with-large-file \
--disable-mempools \
--with-filedescriptors= \
--enable-ssl \
--enable-x-accelerator-vary \
--disable-snmp \
--with-aio \
--enable-linux-netfilter \
--enable-linux-tproxy make && make install
echo $?
5、创建squid软链接
ln -s /usr/local/squid3.5.20 /usr/local/squid
6、配置squid环境变量
export PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"
echo "PATH="$PATH:/usr/local/squid/sbin/:/usr/local/squid/bin/"">>/etc/profile
source /etc/profile
echo $PATH
7、编辑squid配置文件(vim /usr/local/squid/etc/squid.conf)
*设置运行squid服务的用户和组
#run user
cache_effective_user squid
cache_effective_group squid *设置可见主机名
#hostname
visible_hostname squid01 *设置管理员联系邮件
#admin email
cache_mgr wutaokl@.com *打开cache_dir注释
cache_dir ufs /usr/local/squid3.5.20/var/cache/squid
8、squid服务管理脚本
#!/bin/bash
#squid Manage
case "$1" in
start)
/usr/local/squid/sbin/squid -s
;;
stop)
/usr/local/squid/sbin/squid -k shutdown
;;
restart)
/usr/local/squid/sbin/squid -k reconfigure
;;
parse)
#检查语法
/usr/local/squid/sbin/squid -k parse
;;
check)
/usr/local/squid/sbin/squid -k check
;;
*)
echo "Usage:$0 start|stop|restart|check|parse"
esac
9、授权目录
chown -R squid /usr/local/squid/var
10、初始化缓存目录
squid -z /usr/local/squid/var/cache
11、检查squid配置文件无误之后启动squid服务并检查服务是否运行(这里使用命令行命令启动)
squid -k parse
squid -s
lsof -i:
三 、配置传统代理
1、浏览器设置
2、跟踪access.log日志文件,用浏览器访问网站,访问日志写入access.log
tail -f /usr/local/squid/var/logs/access.log
3、停止squid服务,用浏览器访问网站,出现如下页面
squid -k shutdown
#到此,传统代理配置完成。
四、配置透明代理
1、实验环境
主机01:主机名->squid01 eth0->10.0.0.17 eth1->172.16.2.17 DNS->223.5.5.5
主机02:主机名->squid02 eth0->172.16.2.18 gw->172.16.2.17 DNS->223.5.5.5
2、实验说明
squid01即时squid代理服务器又是防火墙服务器,squid02表示公司内网工作环境,实验环境架构图如下
3、在squid01上配置透明代理,编辑squid.conf文件
http_port transparent cache_mem MB
cache_swap_low
cache_swap_high
maximum_object_size KB
minimum_object_size KB
maximum_object_size_in_memory KB
memory_replacement_policy lru
4、检查配置文件并重启squid服务
squid -k parse
squid -k reconfigure
lsof -i:3128
5、在squid01安装iptables防火墙
yum install -y iptables
6、把内网访问的80端口映射到squid01服务器的3128端口上,并让内容可以上网
iptables -F
iptables -F -t nat
iptables -t nat -A PREROUTING -i eth1 -p tcp --dport -j REDIRECT --to-ports
iptables -t nat -A POSTROUTING -o eth0 -s 172.16.2.0/ -j MASQUERADE
7、启动路由转发功能
echo "net.ipv4.ip_forward = 1">>/etc/sysctl.conf
sysctl -p
8、添加内网上网网关
roude -add default gw 172.16.2.17
9、在squid01上跟踪access.log访问日志
tail -f /usr/local/squid/var/logs/access.log
10、在squid02上访问百度(多curl几次)
curl baidu.com
11、在squid01的访问日志出现TCP_MEM_HIT/200说明透明代理搭建成功,如下所示
五、搭建反向代理
1、实验环境
主机01:主机名->squid01 eth0->10.0.0.17
主机02:主机名->squid01 eth0->10.0.0.18 (充当web服务器)
2、在squid01配置反向代理,编辑squid.conf文件
http_port accel vhost vport cache_peer 10.0.0.18 parent no-query no-digest max-conn= originserver #代理的机器 hosts_file /etc/hosts
request_header_max_size KB
ipcache_size
ipcache_low
ipcache_high
offline_mode on #离线模式
3、检查squid.conf配置文件并重启squid服务
squid -k parse
squid -k reconfigure
lsof -i:80
4、增加hosts解析
echo "10.0.0.18 squid02">>/etc/hosts
5、在squid02安装Apache
yum install -y httpd
6、上传或下载一张图片到/var/www/html/下
7、启动httpd服务
systemctl start httpd
lsof -i:80
8、跟踪squid01的access.log访问日志
tail -f /usr/local/squid/var/logs/access.log
9、访问内网的web站点
10、查看access.log日志,出现TCP_IMS_HIT或TCP_MEM_HIT表示squid搭建反向代理并缓存成功
六、squid一些配置参数说明
#提供给squid使用的内存
cache_mem 99 MB #cache目录使用量大于95%时,开始清理旧的cache
cache_swap_low 90 #cache目录清理到90%时停止
cache_swap_high 95 #设置squid磁盘缓存最大文件,超过8M的文件不保存到硬盘
maximum_object_size 8 MB #设置squid磁盘缓存最小文件
minimum_object_size 0 KB #设置squid内存缓存最大文件,超过4M的文件不保存到内存
maximum_object_size_in_memory 4096 KB #缓存算法
memory_replacement_policy lru #反向代理的Web源站的域名
cache_peer 10.0.0.18 parent 80 0 no-query no-digest max-conn=32 originserver #域名映射文件位置
hosts_file /etc/hosts #请求头部的最大大小
request_header_max_size 128 KB #ip对应cache的大小为1024
ipcache_size 1024 #缓存IP地址的最低基线
ipcache_low 90 #缓存IP地址的最高基线
ipcache_high 95 #域名全称cache的大小为1024(默认1024)
fqdncache_size 1024 #离线模式
offline_mode on
CentOS7安装部署squid服务(透明代理+反向代理)的更多相关文章
- 正向代理/反向代理理解、Nginx概述、安装及配置详解
一.Nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理, ...
- Nginx安装、配置虚拟主机、反向代理、负载均衡
1. nginx安装 下载nginx: 官方网站: http://nginx.org/ 使用的版本是1.8.0版本. Nginx提供的源码. 1.1. 要求的安装环境 1.需要安装gcc的环境.y ...
- CentOS7安装部署zabbix3.4操作记录
CentOS7安装部署zabbix3.4操作记录 1.安装前准备 1.1 查看centos的系统版本 [root@zabbix ~]# cat /etc/redhat-release CentOS L ...
- (转)Centos7安装配置NFS服务和挂载
Centos7安装配置NFS服务和挂载 原文:https://www.u22e.com/601.html NFS简介 NFS(Network File System)即网络文件系统,是FreeBSD支 ...
- 生产环境中nginx既做web服务又做反向代理
一.写对于初入博客园的感想 众所周知,nginx是一个高性能的HTTP和反向代理服务器,在以前工作中要么实现http要么做反向代理或者负载均衡.尚未在同一台nginx或者集群上同时既实现HTTP又实现 ...
- centos7 安装部署运行 Redis5
原文:centos7 安装部署运行 Redis5 Redis5 下载与解压(官网: https://redis.io/download ) 下载命令:wget http://download.redi ...
- 【Azure微服务 Service Fabric 】Service Fabric中应用开启外部访问端口及微服务之间通过反向代理端口访问问题
问题描述 1) 当成功的在Service Fabric集群中部署了应用后,如何来访问呢?如果是一个Web服务,它的URL又是什么呢? 2) 当Service Fabric集群中,服务之间如需要相互访问 ...
- Centos7安装部署搭建gitlab平台、汉化
Centos7安装部署搭建gitlab平台.汉化 安装环境要求:内存不要小于4G,否则后期web界面可能会报错 一.准备工作 1.1 查看系统版本 首先查询系统版本,下载Gitlab的对应版本 [ro ...
- 在 CentOS7 上部署 zookeeper 服务
在 CentOS7 上部署 zookeeper 服务 1 用 SecureCRT 或 XShell 等 Linux 客户端工具连接至 CentOS7 服务器: 2 进入到 /usr/local/too ...
随机推荐
- Entity Framework Core For MySql查询中使用DateTime.Now的问题
背景 最近一直忙于手上澳洲线上项目的整体迁移和升级的准备工作,导致博客和公众号停更.本周终于艰难的完成了任务,借此机会,总结一下项目中遇到的一些问题. EF Core一直是我们团队中中小型项目常用的O ...
- c++中实现单例模式singleton class
本文首发于个人博客https://kezunlin.me/post/8932eaec/,欢迎阅读! singleton class and usage in c++. Guide what singl ...
- 看了这篇Redis,我以大专生的身份,进入了阿里,定级P7
摘要: 前几天讲了Redis的面试知识点,当然那只是一部分,我相信各位在面试,或者实际开发过程中对缓存雪崩,穿透,击穿也不陌生吧,就算没遇到过但是你肯定听过,那三者到底有什么区别,我们又应该怎么去防止 ...
- 给公司写的composer包开发的规范
版本格式 主版本号.次版本号.修订号 版本号递增规则 主版本号:当你做了不兼容的 API 修改 次版本号:当你做了向下兼容的功能性新增 修订号:当你做了向下兼容的问题修正 先行版本号及版本编译元数据可 ...
- 程序员实用工具,推荐一款代码统计神器GitStats
阅读全文需7分钟,工具很实用. 1. 前言 对于Git项目开发,有一些可视化的工具,如gitk,giggle等,来查看项目的开发历史.但对于大型的项目,这些简单的可视化工具远远不足以了解项目完整的开发 ...
- [CSS七分钟系列]都1902年了,还不知道用margin:auto给flex容器内元素分组?
最近看到几篇博文讲解margin:auto在flex容器中的使用,可惜的是大多讲解都浮于页面表现,没深究其中的作用机理,本文在此浅薄对其表现机理做简单探讨. 引子 日常业务迭代过程中,flex已经是前 ...
- 从面试官甄别项目经验的角度,说说如何在简历中写项目经验(java后端方向)
在大多的JD(职位介绍)里,会写明该职位需要xx时间的相关经验,换句话说就是需要在简历中看到一定年限的相关商业项目经验,否则估计连面试的机会都没. 在本文里,不讨论这种门槛是否合理,而会以Java相关 ...
- selenium常用命令之页面元素定位
WebDriver driver= new ChromeDriver(); <input type="text" id="phone" name=&q ...
- Linux01机和Linux02机的切换 和秘钥的配置
先试一下 01机和02机是否可以切换成功 使用 ssh root@ip地址 输入密码 ifconfig查看ip是否正确 切换回01机 01机配置的秘钥 查看隐形文件 01机配置秘钥 输入 ssh-c ...
- 05-kubernetes Pod控制器应用进阶
目录 Pod 资源 标签 给资源打标签 标签选择器 Pod 生命周期 实际操作 livenessProbe 实战 livenessProbe exec 测试 livenessProbe httpGet ...