说明:
当客户机经过代理来请求web页面时,指定的代理服务器会先检查本身的缓存,若是缓存中已经有客户机须要访问的页面(红色1 2 3 4),则直接将缓存中的页面内容反馈给客户机;若是缓存中没有客户机须要访问的页面(蓝色1 2 3 4),则由代理服务器向Internet发送访问请求,当得到返回的web页面之后,将网页数据保存到缓存中并发送给客户机。使用传统代理的特色在于,客户机的相关程序必须指定代理服务器的地址、端口等基本信息。下面进行传统代理服务器的构建。
.
.
压缩文件包
连接: https://pan.baidu.com/s/1GmD1SCoYeWYFi9W1BG_Z-Q 提取码: kkcn
.
.
拓扑图以下:
.
.
实验环境:
.
.
1、编译安装squid
.
1 . 将压缩包挂载、解压到服务器中,安装编译环境linux
mkdir /ooo/ #建立挂载目录 mount.cifs //192.168.201.1/gx /ooo/ #挂载压缩包 cd /ooo/ tar zxvf squid-3.5.23.tar.gz -C /opt/ #解压到/opt/ yum install gcc gcc-c++ make -y #安装编译环境
.
.
2 .手工编译安装c++
./configure --prefix=/usr/local/squid \ #指定安装路径 --sysconfdir=/etc \ #配置文件路径 --enable-arp-acl \ #mack地址 --enable-linux-netfilter \ #内核过滤 --enable-linux-tproxy \ #透明模式 --enable-async-io=100 \ #io优化 --enable-err-language="Simplify_Chinese" \ #报错显示 --enable-underscore \ #容许有下划键 --enable-poll \ #提高 --enable-gnuregex #支持正则表达式 make && make install
.
.
3 . 安装完后,建立连接文件,用户和组web
ln -s /usr/local/squid/sbin/* /usr/local/sbin/ #将命令放入系统识别路径下 useradd -M -s /sbin/nologin squid #建立一个用户 chown -R squid.squid /usr/local/squid/var/ #更改目录权限
.
.
4 . 修改squid配置文件,初始化缓存目录,启动服务,完成安装正则表达式
vim /etc/squid.conf # And finally deny all other access to this proxy http_access allow all #容许全部 http_access deny all # Squid normally listens to port 3128 http_port 3128 cache_effective_user squid #添加 指定程序用户 cache_effective_group squid #添加 指定帐号基本组 squid -z #缓存目录初始化 squid #启动服务
.
.
5 .编写启动脚本vim
cd /etc/init.d vim squid #!/bin/bash #chkconfig: 2345 90 25 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
.
.
6 . 添加权限,名称,检查语法浏览器
chmod +x squid #添加执行权限 chkconfig --add squid #添加名称,便于识别 service squid check #检查语法
.
.
2、设置传统代理服务器
.
1 . squid服务器的配置缓存
vim /etc/squid.conf ....... http_port 3128 cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4 reply_body_max_size 10 MB #容许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制 maximum_object_size 4096 KB #容许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
.
.
2 . 重启服务,清空防火墙bash
service squid restart #重启服务 iptables -F #清空防火墙 setenforce 0 #关闭加强功能 iptables -I INPUT -p tcp --dport 3128 -j ACCEPT #在input链中,针对tcp协议,目标端口3128,容许转发
传统代理完成
.
.
3、测试传统代理
.
1 . 开启测试端网页服务器
systemctl stop firewalld.service setenforce 0 #关闭防火墙 yum install httpd -y #安装http systemctl start httpd #开启服务
.
.
2 .win7端网络设置为NAT模式,用浏览器访问192.168.201.130
.
.
3 .网页端查看访问日志网络
cd /etc/httpd/logs/ vim access_log #查看访问日志
能够看到来访客户端ip地址
.
.
4 . 此时设置代理访问
打开浏览器-->工具-->intenet选项
.
.
链接-->局域网设置
.
.
设置ip地址与端口
.
.
此时再用浏览器访问192.168.201.130,查看来访日志
能够看到,访问ip是代理服务器的ip地址,传统代理服务器测试成功