Squid代理—传统与透明代理的服务搭建
Posted 丁CCCCC
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Squid代理—传统与透明代理的服务搭建相关的知识,希望对你有一定的参考价值。
Squid
概述
代理的基本类型
squid代理分为两种:
- 传统代理:适用于Internet, 需明确指定服务端
- 透明代理:客户机不需指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向给代理服务器处理
好处
- 提高Web访问的速度
- 隐藏客户机的真实IP地址
一、Squid 服务搭建
1.1 准备工作
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
setenforce 0
1.2 编译安装squid
安装软件
yum -y install gcc gcc-c++ make
软件包卸载
cd /opt
tar zxvf squid-3.5.28.tar.gz
编译安装
cd /opt/squid-3.5.28
./configure --prefix=/usr/local/squid \\
--sysconfdir=/etc \\
--enable-arp-acl \\
--enable-linux-netfilter \\
--enable-linux-tproxy \\
--enable-async-io=100 \\
--enable-err-language="Simplify_Chinese" \\
--enable-underscore \\
--enable-poll \\
--enable-gnuregex
make && make install
1.3 软链接及修改属性
# 创建链接文件,优化路径
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
# 创建程序用户、组
useradd -M -s /sbin/nologin squid
# 改变目录属主
chown -R squid:squid /usr/local/squid/var/
1.4 修改配置文件
- vim /etc/squid.conf
56 http_access allow all # 放在http_access deny all上面,允许任意客户机使用代理服务,控制规则是自上而下匹配的
57 http_access deny all
58 http_port 3128 # 代理服务监听的地址和端口(默认3128)
62 cache_effective_user squid # 添加指定程序用户,设置初始化,运行时缓存的账号,否则启动不成功
63 cache_effective_group squid # 添加指定账号基本组
69 coredump_dir /usr/local/squid/var/cache/squid # 指定缓存文件目录
1.5 测试squid
squid -k parse # 检查配置文件
squid -k rec # 重新加载配置文件
squid -zX # 初始化缓存目录
squid # 启动服务
netstat -anpt | grep squid # 确认是否监听
tcp6 0 0 :::3128 :::* LISTEN 76007/(squid-1)
1.6 编写squid服务脚本
- vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 35 90 25
#config: /etc/squid.conf
#pidfile: /usr/local/squid/var/run/squid.pid
#Description: Squid - Internet Object Cache
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
- 测试脚本
chmod +x /etc/init.d/squid
chkconfig --add squid
chkconfig --level 35 squid on
service squid restart
二、搭建传统代理服务器
2.1 准备工作
Squid 服务器 :192.168.253.11
web1 服务器 :192.168.253.22
web2 服务器 :192.168.253.33
win10 客户端 :192.168.253.123
搭建要求:构建Squid服务器,允许客户机指定squid代理服务器作为web代理,访问网络服务器,但是禁止通过代理下载超过10mb的文件,超过4mb的文件不进行缓存
2.2 squid配置文件
- vim /etc/squid.conf
63行左右插入以下
#指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
cache_mem 64 MB
#允许用户下载的最大文件大小,以字节为单位,当下载超过指定大小的Web对象时,浏览器的报错页面中会出现“请求或访问太大”的提示默认设置0表示不进行限制
reply_body_max_size 10 MB
#允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
maximum_object_size 4096 KB
- service squid restart
- systemctl restart squid
- systemctl status squid
修改防火墙规则
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
2.3 web设置
web1/2共同设置
yum -y install httpd
systemctl start httpd
netstat -anpt | grep httpd
2.4 客户端配置
添加代理
谷歌浏览器设置:
设置→高级→系统→打开代理设置→设置代理
- 代理地址设置为Squid 地址,端口默认3128
访问web1
- tail -f /var/log/httpd/access_log
- 动态查看访问日志
来访ip都为squid服务器
访问web2
三、透明代理设置
3.1 准备工作
Squid 服务器 :ens33 192.168.253.11 / ens37 12.0.0.1
web1 服务器 :192.168.253.22
win10 客户端 :12.0.0.10
IP设置
-
win客户端
-
web服务器
-
squid服务器
3.2 Squid设置
添加网卡
cd /etc/sysconfig/network-scripts/
cp -r ifcfg-ens33 ifcfg-ens37
vim ifcfg-ens37
systemctl restart network
修改配置文件
- vim /etc/squid.conf
# 添加提供内网服务的IP地址,和支持透明代理选项transparent
61 http_port 192.168.253.11:3128 transparent
- systemctl restart squid
设置转发功能
- vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
sysctl -p
net.ipv4.ip_forward = 1
设置防火墙规则
添加防火墙规则,将来源为253网段的80/443端口流量重定向到3128端口
iptables -F
iptables -t nat -F
iptables -t nat -I PREROUTING -i ens37 -s 12.0.0.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens37 -s 12.0.0.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
若服务器重启过,则需要重写配置以下规则
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
3.3 web 服务器设置
添加静态路由,否则客户端无法连接
- route add -net 192.168.253.0/24 gw 12.0.0.1
3.4 客户端设置
关闭代理
3.5 测试
tail -f /var/log/httpd/access_log
以上是关于Squid代理—传统与透明代理的服务搭建的主要内容,如果未能解决你的问题,请参考以下文章