web代理的工作机制
缓存网页对象,减少重复请求
代理的基本类型
传统代理:适用于Internet,需明确指出服务端
透明代理:客户机不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将web访问重定向给代理服务器处理
使用代理的好处
提高web访问速度
隐藏客户机的真实IP地址
实验
1.基础环境
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭内核安全机制
setenforce 0
sed -i
"S/ASELINUX=.*/SELINUX=disabled/g
/etc/selinux/config
修改主机名
hostnamectl set-hostname squid
hostnamectl set-hostname web
2.在web节点部署网站
下载hppt服务
yum -y install httpd
重启服务,设置开机自启动
systemctl start httpd
systemctl enable httpd
3.在squid节点
上传软件包(squid-3.5.23.tar.gz)
下载squid依赖包
yum -y install gcc gcc-* perl
tar zxf squid-3.5.23.tar.gz
cd squid-3.5.23
编译安装
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 \
--enable-default-err-language=Simplify_Chinese --disable-poll \
--enable-epoll --enable-gnuregex
# --prefix=/usr/local/squid:安装目录
# --sysconfdir=/etc:单独将配置文件修改到其他目录
# --enable-linux-netfilter:使用内核过滤
# --enable-async-io=值:异步I/O, 提升存储性能,相当于“--enable-pthreads --enable-storeio= ufs,aufs --with -pthreads --with-aufs-thread=值”
# --enable-default-err-language=Simplify_Chinese:错误信息的显示语言
# --disable-poll 与--enable-epoll:关闭默认使用 poll 模式,开启 epoll 模式提升性能。
# --enable-gnuregex:使用 GNU 正则表达式
make && make install
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/
vi /etc/squid.conf
在59行左右添加管理用户和组的配置
cache_effective_user squid
cache_effective_group squid
在56行设置权限
http_access allow all
优化最大下载
reply_body_max_size 10 MB
配置完成,检测配置文件是否有误
squid -k parse
正确回显应该与下图类似
4.启动squid
squid -z
#等待初始化完成后在squid启动服务
squid
过滤端口号3128验证是否启动成功
#关闭
squid -k kill
使用systemctl管理
vi /etc/init.d/squid
#!/bin/bash
#声明服务级别生效
# chkconfig: 2345 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 -anpt | 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 -anpt | 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 | restart | reload | check | status}"
;;
esac
给予管理权限
chmod +x /etc/init.d/squid
添加为系统服务
chkconfig --add /etc/init.d/squid
5.验证代理是否可以使用
使用桌面版虚拟机进行验证
#--proxy 指定使用的哪个代理 ,第一个IP地址为部署squid代理的IP地址,第二个IP地址为你要访问哪个IP地址
curl --proxy 192.168.27.131:3128 192.168.27.129
查看前面的IP地址看是否为部署squid代理的IP地址
#查看你访问的IP地址的日志查看回显
tail -f /var/log/httpd/access_log
在宿主机的浏览器上,打开设置,设置代理的地址为squid的IP地址
在浏览器中访问web服务的IP地址,查看实时日志跟新的内容是否为代理的服务器的IP
透明代理
实验
1.基础环境
关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
关闭内核安全机制
setenforce 0
sed -i
"S/ASELINUX=.*/SELINUX=disabled/g
/etc/selinux/config
修改主机名
hostnamectl set-hostname squid
hostnamectl set-hostname web
2.在web节点部署网站
下载hppt服务
yum -y install httpd
重启服务,设置开机自启动
systemctl start httpd
systemctl enable httpd
3.在squid节点添加一块网卡,设置为仅主机方式
4.在新开一台机器,把网络适配器修改为仅主机模式
设置网关
nmcli con show
#首IP为新开机器的IP,后IP为squid第二网卡的IP。必须保证这俩IP在同一网段中
nmcli con mod ens33 connection.autoconnect yes ipv4.add 192.168.142.131/24 ipv4.gateway 192.168.142.130 ipv4.method man
#重启网卡,激活网卡设置
nmcli con up ens33
调整内核参数,让路由转发功能生效
echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
sysctl -p
5.在squid节点,上传软件包
编译安装squid
yum -y install gcc gcc-* perl
tar zxf squid-3.5.23.tar.gz
cd squid-3.5.23/
./configure --prefix=/usr/local/squid \
--sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 \
--enable-default-err-language=Simplify_Chinese --disable-poll \
--enable-epoll --enable-gnuregex
make && make install
# 安装完后,创建链接文件、创建用户和组
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/
打开配置文件
vi /etc/squid.conf
http_access allow all
http_port 192.168.142.130:3128 transparent
cache_effective_user squid
cache_effective_group squid
启动服务
squid -k parse
squid -z
squid
ss -nlpt | grep 3128
配置转发(编写iptables规则)
#配置的80端口是http协议的
iptables -t nat -A PREROUTING -i ens36 -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
#配置的443是https协议的
iptables -t nat -A PREROUTING -i ens36 -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 3128
5.验证代理是否可以使用
使用桌面版虚拟机进行验证
curl 192.168.27.129
查看前面的IP地址看是否为部署squid代理的IP地址
#查看你访问的IP地址的日志查看回显
tail -f /var/log/httpd/access_log
部署tinyproxy
1.上传软件包
2.下载依赖软件包
yum -y install automake gcc
./autogen.sh
./configure
make
make install
vi /usr/local/etc/tinyproxy/tinyproxy.conf
3.修改配置文件
保存退出
touch /var/log/tinyproxy.log
chown nobody:nobody /var/log/tinyproxy.log
cd
tinyproxy
ss -nlpt | grep 8888
git clone https://kkgithub.com/tinyproxy/tinyproxy.git
yum -y install automake gcc
./autogen.sh
./configure
make
make install
# 启动
tinyproxy
# 关闭
pkill tinyproxy
# 配置文件路径
/usr/local/etc/tinyproxy/tinyproxy.conf
# 想允许所有人使用该代理,注释 Allow 选项即可
# 指定LogFile的话,要注意创建文件并且修改文件的归属用户和组