squid 正向代理-传统代理-透明代理

squid 代理服务器

保护后端服务器的安全,为后端web服务器提供代理请求
百度公司使用的是全squid的架构

代理服务器:

大部分代理服务器都具有缓冲的功能,就好象一个大的Cache,它有很大的存储空间,它不断将新取得数据储存到它本机的存储器上,如果浏览器所请求的数据在它本机的存储器上已经存在而且是最新的,那么它就不重新从Web服务器取数据,而直接将存储器上的数据传送给用户的浏览器,这样就能显著提高浏览速度和效率。

代理功能可以突破自身IP访问限制,访问国外站点。教育网、169网等网络用户可以通过代理访问国外网站。提高访问速度:通常代理服务器都设置一个较大的硬盘缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。

Squid是一种用来缓冲Internet数据的软件。安装Squid服务实现代理缓存服务器功能

代理服务器分类:(正向,反向)

正向代理:

1.squid代理客户端,客户端向squid发送一个请求并指定web服务器IP地址,如果请求的web资源已经存在,则直接返回给客户端。如果没有,squid则向web服务器转交请求并将获得的内容返回给客户端,并记录在本地。

2.正向代理作为客户端的代理,将从互联网上获取的资源返回给一个或多个的客户端。

3.客户端正常访问web服务器,但是在web服务器上记录的请求头部IP信息,为正向代理的IP地址

正向代理分类:

传统代理:需要客户端手动设置代理服务器,对于客户端,代理服务器端是不透明的,可知的

透明代理:代理服务器对客户端透明,不需要终端用户进行特殊设置,相当于网关。对于linux操作 系统来说,透明代理使用 Iptables

正向传统代理:

环境:一台真实机、两台虚拟机
client: 192.168.10.1 真实机
squid: 192.168.10.55 squid代理服务器
httpd: 192.168.10.56 提供页面

1.httpd简单部署

[root@localhost /]# yum -y install httpd
[root@localhost /]# echo 'squid -httpd  192.168.10.56' > /var/www/html/index.html
[root@localhost /]# systemctl restart httpd
[root@localhost /]# curl 192.168.10.56
squid -httpd  192.168.10.56

2.squid代理服务器

1.安装squid
yum -y install gcc*

[root@localhost ~]# tar -zxvf squid-3.4.6.tar.gz -C /usr/src/
[root@localhost ~]# cd /usr/src/squid-3.4.6/
[root@localhost squid-3.4.6]# ./configure --prefix=/usr/local/squid \
--sysconfdir=/etc/ \
--enable-arp-acl \
--enable-linux-netfilter \
--enable-linux-tsproxy \
--enable-async-io=100 \
--enable-err-language='Simplicy-Chinese' \
--enable-underscore \
--enable-poll \
--enable-gunregex \
[root@localhost squid-3.4.6]# make && make install

--prefix=/usr/local/squid	 指定安装路径
--sysconfdir=/etc/		指定配置文件路径 
--enable-arp-acl		防止arp攻击
--enable-linux-netfilter 启动内核过滤功能
--enable-linux-tsproxy  启动透明代理功能
--enable-async-io=100  调整IO的线程参数
--enable-err-language='Simplicy-Chinese' 错误信息显示的语言中文
--enable-underscore 	允许使用下划线
--enable-poll 			使用poll模型
--enable-gunregex 	使用gun的正则匹配

在这里插入图片描述

2.完善squid安装
[root@localhost squid-3.4.6]# useradd -M -s /sbin/nologin squid

[root@localhost squid-3.4.6]# echo 'PATH=$PATH:/usr/local/squid/bin:/usr/local/squid/sbin' >> /etc/profile 
[root@localhost squid-3.4.6]# source /etc/profile

[root@localhost squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/
[root@localhost squid-3.4.6]# chmod -R 757 /usr/local/squid/var/

3.修改主配置文件

/etc/squid.conf 主配置文件

 56 http_access allow all			允许所有主机把此squid作为代理服务器
 57 #http_access deny all	
 60 http_port 3128		squid放行端口
[root@localhost ~]# squid
[root@localhost ~]# netstat -anpt | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      118048/(squid-1)    

squid启动文件
[root@localhost ~]# vim /etc/init.d/squid
#!/bin/bash
#chkconfig:2435 90 22
#主配置文件: /etc/squid.conf
#进程文件:/usr/local/squid/var/run/squid.pid
#日志文件:/usr/local/squid/var/logs/access.log
#缓存文件目录:/usr/local/squid/var/cache/squid

pid="/usr/local/squid/var/run/squid.pid"
conf="/etc/squid.conf"
squid="/usr/local/squid/sbin/squid"

case $i in
        start)
                netstat -anpt | grep squid &> /dev/null
        if
                        [ $? -eq 0 ]
                then
                        echo "squid is running"
                else
                        echo -e "\033[32m正在启动squid\033[0m"
                        $squid
                fi
;;
        stop)
                killall -9 squid &>/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)
        killall squid && $squid
;;

        reload)
        $squid -s squid
;;

#       check)

#       $squid -k parse

#;;
                *)
                echo -e "\033[32m请输入start/stop/status/restart\033[0m"
;;
esac

[root@localhost ~]# chmod +x /etc/init.d/squid
[root@localhost ~]# chkconfig --add squid
[root@localhost ~]# chkconfig squid on
4.客户端验证

打开火狐浏览器 — 选项(设置) — 页面最下方网络设置(设置)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

浏览器访问 web服务器的IP地址

在这里插入图片描述

打开服务端日志:

[root@localhost /]# tail -f /var/log/httpd/access_log

在这里插入图片描述

透明代理

squid代理服务器充当客户端与web服务的网关,需要两块网卡

环境,全网互通:
client虚拟机,采用VM1网卡
squid虚拟机,采用VM1网卡连接真实机,VM3网卡连接web服务器
httpd虚拟机,才用VM3网卡连接squid服务器

client:192.168.10.1 gateway: 192.168.10.55
squid:ens33:192.168.10.55 ens37:192.168.2.254
web: 192.168.2.3 gateway: 192.168.2.254

1、squid配置
[root@localhost ~]# vim  /etc/squid.conf
 56 http_access allow all			允许所有主机把此squid作为代理服务器
 57 #http_access deny all	
 60 http_port 192.168.10.55:3128  transparent   透明代理 squid-ip:3128 放行端口
[root@localhost ~]# squid
[root@localhost ~]# netstat -anpt | grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      118048/(squid-1)    
2.配置路由转发
[root@localhost ~]# echo 'net.ipv4.ip_forward = 1' >> /etc/sysctl.conf
[root@localhost ~]# sysctl -p
3.设置 firewalld 防火墙

1.client端防火墙
默认开启状态即可

2.squid网关服务器防火墙设置

设置两块网卡所属区域
[root@localhost ~]# firewall-cmd --change-interface=ens33 --zone=external --permanent
[root@localhost ~]# firewall-cmd --change-interface=ens37 --zone=dmz --permanent

为外网网卡放行代理服务器端口
[root@localhost ~]# firewall-cmd --zone=external --add-port=3128/tcp --permanent
为外网网卡放行后端http服务
[root@localhost ~]# firewall-cmd --zone=external --add-service=http --permanent
[root@localhost ~]# firewall-cmd --zone=external --add-service=https --
permanent

将外网网卡收到的80/443访问请求,转换到3128端口
[root@localhost ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport=80 -j REDIRECT --to-ports 3128
[root@localhost ~]# firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens33 -p tcp --dport=443 -j REDIRECT --to-ports 3128

重新加载
[root@localhost ~]# firewall-cmd --reload

3.httpd服务器设置

[root@localhost ~]# firewall-cmd --change-interface=ens33  --zone=dmz --permanent
[root@localhost ~]# firewall-cmd --zone=dmz --add-port=80/tcp --permanent
[root@localhost ~]# firewall-cmd --zone=dmz --add-port=443/tcp --permanent
[root@localhost ~]# firewall-cmd --reload

4.客户端访问web服务器

不需要在火狐浏览器种设置代理服务器,直接访问web服务器即可

在这里插入图片描述

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值