Squid代理服务器

Web代理的工作机制:
缓存网页对象,减少重复请求


代理的基本类型:
传统代理:适用于Internet,客户端上网需明确指定服务端IP以及端代理口;
透明代理:适用于共享上网网关,客户端上网不需指定服务端IP以及端代理口。


使用代理的好处:
1.提高Web访问速度
2.隐藏客户机的真实IP地址


安装编译squid服务:

[root@localhost ~]# tar -zxf squid-3.5.23.tar.gz
[root@localhost ~]# cd squid-3.5.23/
[root@localhost 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
[root@localhost squid-3.5.23]# make && make install					##编译安装

装完后创建连接文件,创建用户和组

[root@localhost squid-3.5.23]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/			##软连接ln  -s  [源文件或目录]  [目标文件或目录]
[root@localhost squid-3.5.23]# useradd -M -s /sbin/nologin squid						##创建squid用户,并且不允许登陆系统
[root@localhost squid-3.5.23]# chown -R squid:squid /usr/local/squid/var/				##指定文件的拥有者改为指定的用户或组

squid的配置文件

[root@localhost squid-3.5.23]# vi /etc/squid.conf					##在coredump_dir /usr/local/squid/var/cache/squid上边添加一下两条配置
http_port 3128														##默认自带(用来指定代理的监听端口)
cache_effective_user squid											##指定squid程序用户,用来设置初始化,运行时缓存的账号,否则启动不成功
cache_effective_group squid
:wq
[root@localhost squid-3.5.23]# squid -k parse						##检查配置文件是否正确

启动、停止squid

[root@localhost ~]# squid -z										##-z选项用来初始化缓存目录
[root@localhost ~]# squid 											##启动squid服务
[root@localhost ~]# netstat -anpt |grep squid						##监听3128端口是否开启
tcp6       0      0 :::3128                 :::*                    LISTEN      82716/(squid-1)

编辑squid服务脚本

[root@localhost ~]# vi /etc/init.d/squid
#!/bin/bash
# chkconfig: 2345 90 25
# Squid Server Script


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正在运行"
        else
            $CMD
        fi
        ;;
        stop)
        $CMD -k kill &> /dev/null
        rm -rf $PID &>/dev/null
        ;;
        status)
        [ -f $PID ] &> /dev/null
        if [ $? -eq 0 ]
        then
            echo "squid正在运行...."
        else
            echo "squid未启动"
        fi
        ;;
        restart)
        $0 stop
        $0 start
        ;;
        reload)
        $CMD -k reconfigure
        ;;
        check)
        $CMD -k parse
        ;;
        *)
        echo "请输入正确参数{start|stop|reload|restart|check|status}"
        ;;
esac
:wq
[root@localhost ~]# chmod +x /etc/init.d/squid						##添加执行权限
[root@localhost ~]# chkconfig --add squid							##添加为系统服务
[root@localhost ~]# systemctl restart squid							##重启测试脚本
[root@localhost ~]# netstat -anpt |grep squid
tcp6       0      0 :::3128                 :::*                    LISTEN      82942/(squid-1)

一.传统代理 :
squid服务器的配置:添加如下配置
[root@localhost ~]# vim /etc/squid.conf
http_access allow all ##表示允许任意客户机使用代理,放在http_access deny all之前
reply_body_max_size 10 MB ##表示允许下载的最大文件大小(10MB)
:wq

重启squid服务
[root@localhost ~]# systemctl restart squid
或
[root@localhost ~]# squid -k reconfigure

测试:
在Windows中设置代理
打开IE浏览器–>工具–>Intelnet选项–>连接–>局域网设置–>“勾上"代理服务器的勾–>地址中写代理服务器的IP,
端口中写"3128”–>确定,访问百度即可

在Linux中设置代理,需要通过环境变量来制定代理服务器的地址、端口

  [root@localhost ~]# vi /etc/profile					##配置文件中添加一下内容
    HTTP_PROXY=http://192.168.10.30:3128				##http协议
    HTTPS_PROXY=http://192.168.10.30:3128				##https协议
    FTP_PROXY=http://192.168.10.30:3128				##ftp协议
    NO_PROXY=192.168.1.,192.168.2.					##对这两个局域网网段不适用代理
    export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY
    
   [root@localhost ~]# source /etc/profile			##刷新配置文件

代理服务器验证方法
1、chakansquid访问日志的新增记录

[root@localhost ~]# tail -f /usr/local/squid/var/logs/access.log 
1536938536.649      3 192.168.10.100 TCP_MISS/404 525 GET http://192.168.10.40/noindex/css/fonts/L
ightItalic/OpenSans-LightItalic.eot? - HIER_DIRECT/192.168.10.40 text/html

2、查看被访问端的web访问日志的新增记录

[root@localhost ~]# tail -f /var/log/httpd/access_log 
192.168.10.30 - - [14/Sep/2018:23:22:17 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.eot? HT
TP/1.1" 404 240 "http://192.168.10.40/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; T
rident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; 
InfoPath.2)"

二.透明代理:

[root@localhost ~]#vim /etc/squid.conf
http_port 192.168.3.1:3128 transparent
[root@localhost ~]#vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
[root@localhost ~]#sysctl -p

设置防火墙重定向策略

[root@localhost ~]#systemctl start firewalld.service
[root@localhost ~]#firewall-cmd --zone=internal  --add-interface==ens34		###外网
[root@localhost ~]#firewall-cmd --zone=external  --add-interface==ens32		###内网
[root@localhost ~]#firewall-cmd --zone=external --add-service=http
[root@localhost ~]#firewall-cmd --zone=external --add-service=httpds
[root@localhost ~]#firewall-cmd --zone=external --add-port=3128/tcp
[root@localhost ~]#firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens32 -p tcp --dport 80 -j REDIRECT --to-ports 3128
[root@localhost ~]#firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens32 -p tcp --dport 443 -j REDIRECT --to-ports 3128
[root@localhost ~]#firewall-cmd --runtime-to-permanent
[root@localhost ~]#unset HTTP_PROXY HTTPS_PROXY

定义ACL列表

   [root@localhost ~]#vim /etc/squid.conf
	acl localhost src 127.0.0.1/255.255.255.255.25		#源地址为127.0.0.1
	acl MYLAN src 192.168.3.0/24 192.168.1.0/24			#客户机网段
	acl to_localhost dst 127.0.0.0/8						#目标地址为127.0.0.1/8网段
	acl MC20 maxconn 20									#最大并发连接20
	acl BlackURL url_regex -i ^rtsp:// ^emule://			#以rtsp://等开头的URL
	acl MEDIAFILE url_regex -i \.mp3$ \.mp4$ \.rmvb$		#以.mp3/.mp4/.rmvb结尾的URL路径
	acl WORKTIME time MTWHF 08:30-17:30					#时间为周一到周五

建立目标地址黑名单文件

	[root@localhost ~]#mkdir /etc/squid_acl
	[root@localhost ~]#cd /etc/squid_acl
	[root@localhost squid_acl]#vim ipblock.list
	61.135.167.36
	125.39.127.25
	[root@localhost squid_acl]#vim dmblock.list
	.qq.com
	.msn.com
	[root@localhost ~]#vim /etc/squid.conf
	acl IPBLOCK dst "/etc/squid_acl/ipblock.list"
	acl DMBLOCK dstdomain "/etc/squid_acl/dmblock.list"

设置访问权限

[root@localhost ~]#vim /etc/squid.conf
http_access deny MEDIAFILE		#禁止客户端下载MP3.MP4文件
http_access deny IPBLOCK		#禁止客户端访问黑名单中的IP地址
http_access deny DMBLOCK		#禁止客户端访问黑名单中的网站域
http_access deny MC20			#禁止客户端并发连接超过20时将被阻止
http_access allow WORKYIME		#允许客户端在工作时间上网
http_access deny all			#默认禁止所有客户端使用代理

三.Squid日志分析:

[root@localhost ~]#yum -y install gc gc-devel
[root@localhost ~]#mkdir /usr/local/sarg
[root@localhost ~]#tar -zxvf sarg-2.3.7.tar.gz
[root@localhost ~]#cd sarg-2.3.7
[root@localhost ~]#./configure --prefix=/usr/local/sarg --sysconfdir=/etc/sarg --enable-extraprotectiom && make && make install
[root@localhost ~]#cd /etc/sarg/
[root@localhost sarg]#vim sarg.conf
access_log /usr/local/squid/var/logs/access.log	#指定squid访问的日志文件
title "Squid User Access Reports"				#网页标题
output_dir /var/www/html/sarg					#sarg报告输出位置
user_ip no										#使用用户名显示
exclude_hosts /usr/local/sarg/noreport		#指定不计入排序的站点列表文件
user_sort_field connect reverse				#对于用户访问记录连接次数将按降序排列	
overwrite_report no							#当那个日期报告文件已存在是否覆盖
mail_utility mailq.postfix						#发送邮件报告
charset utf-8									#使用字符集
weekdays 0-6 									#指定top排序时的星期周期,0为周日
hours 9-12,14-16,18-20							#指定top排序时的时间周期
www_document_root /var/www/html				#网页根目录
[root@localhost ~]#touch /usr/local/sarg/noreport
[root@localhost ~]#ln -s /usr/local/sarg/bin/sarg /usr/local/bin
[root@localhost ~]#sarg
[root@localhost ~]#yum -y install httpd
[root@localhost ~]#systemctl restart httpd
[root@localhost ~]#systemctl enable httpd

你可能感兴趣的:(Squid,Centos7,Linux)