Squid代理服务器
结构:
工作机制
代理概述
实验说明
#### Centos03 web 删除系统自带的源
[root@centos03 ~]# rm -rf /etc/yum.repos.d/CentOS-*
挂载
[root@centos03 ~]# mount /dev/cdrom /mnt/
安装http
[root@centos03 ~]# yum -y install httpd
启动服务
[root@centos03 ~]# systemctl start httpd
设置为开机自动启动
[root@centos03 ~]# systemctl enable httpd
查看服务进程
[root@centos03 ~]# systemctl start httpd
设置主页面
[root@centos03 ~]# echo "www.benet.com" > /var/www/html/index.html
centos02 squid
创建管理squid账户
[root@centos02 ~]# useradd -M -s /sbin/nologin squid
切换光盘为Linux.iso
挂载光盘
[root@centos02 ~]# mount /dev/cdrom /mnt/
解压软件包
[root@centos02 ~]# tar zxvf /mnt/squid-3.4.6.tar.gz -C /usr/src/
进入解压位置
[root@centos02 ~]# cd /usr/src/squid-3.4.6/
配置
[root@centos02 squid-3.4.6]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 --enable-default-err-languge=Simplify_Chinese --disable-poll --enable-epoll --enable-gunregx
编译安装
[root@centos02~]# make && make install
设置所属 改为squid用户
[root@centos02 squid-3.4.6]# chown -R squid:squid /usr/local/squid/
优化squid命令
[root@centos02 squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
检查suqid配置文件是否有错误
[root@centos02 ~]# squid -k parse
初始化缓存目录
[root@centos02 ~]# squid -z
启动squid服务 如果启动不起来多启动几遍
[root@centos02 ~]# squid
创建储存日志文件
[root@centos02 ~]# touch /usr/local/squid/var/logs/cache.log
查看服务进程
备份主配置文件
[root@centos02 ~]# cp /etc/squid.conf /etc/squid.conf.bak
centos03
开启监听日志
[root@centos03 ~]# tail -f /var/log/httpd/access_log
centos01 客户机
删除系统自带的源
[root@centos01 ~]# rm -rf /etc/yum.repos.d/CentOS-*
挂载
[root@centos01 ~]# mount /dev/cdrom /mnt/
安装elinks
[root@centos01 ~]# yum -y install elinks
[root@centos01 ~]#elinks http://192.168.100.30
查看100.30
centos02
编辑主配置文件
[root@centos02 ~]# vim /etc/squid.conf
54 http_access allow all //允许所有人使用squid
60 http_port 3128 //默认监听端口3128
61 cache_effective_user squid //管理squid用户
62 cache_effective_group squid //管理squid 组
63 reply_body_max_size 10MB //限制用户通过代理下载文件10MB
检查squid配置文件是否有错误
[root@centos02 ~]# squid -k parse
启动squid服务器
[root@centos02 ~]# squid
centos01
q退出
[root@centos01 ~]# vim /etc/profile
HTTP_PROXY=http://192.168.100.20:3128
HTTPS_PROXY=http://192.168.100.20:3128
FTP_PROXY=http://192.168.100.20:3128
NO_PROXY=192.168.100.10,192.168.100.50
export HTTP_PROXY HTTPS_PROXY FTP_PROXY
执行这个配置文件
[root@centos01 ~]# source /etc/profile
访问服务器
[root@centos01 ~]# elinks http://192.168.100.30
centos03
查看访问记录
windows客户端如何实现?
将win7的网卡设置为仅主机模式(vmnet01)
控制面板》》》网络和Internet》》》网络连接》》》本地连接》》》右键属性》》》Internet协议版本4
打开浏览器
重启浏览器
输入:http://192.168.100.30/
然后查看centos03的访问记录
本次设置的文件传输大小最大为10MB 我们来测试一下
首先在centos03(服务器)生成一个11MB和1MB的文件
win7测试
在网页中输入:http://192.168.100.30/1.iso
完全可以
再测试一下11MB的2.iso
被拦截
配置透明代理
先给centos02拍一张快照 备注为squid传统代理
透明代理结构图 与传统代理的区别是 内网外网区分 不像传统代理都在同一个网段下
设置centos02网卡 添加网网卡vmnet3
centos03
将网卡切换为vmnet3
将网卡配置文件IP地址设置为:192.168.200.10
增加网关:192.168.200.254
[root@centos03~]# vim/etc/sysconfig/network-scripts/ifcf-ens32
重新启动网卡
[root@centos03~]# systemctl restart network
centos02
查看网卡
给这个网卡复制个配置文件
[root@centos02 ~]# cp /etc/sysconfig/network-scripts/ifcfg-ens32 /etc/sysconfig/network-scripts/ifcfg-ens34
重启网卡服务
[root@centos02 ~]# systemctl restart network
可以ping通
centos02
开启代理服务器的路由功能
[root@centos02 ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1
查看配置文件有没有报错
[root@centos02 ~]# sysctl -p
关闭squid服务
[root@centos02 ~]# killall squid
查看关闭是否成功:没有关闭成功多试几次
[root@centos02 ~]# netstat -anptu | grep squid
centos01
配置网关
[root@centos01 ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens32
重新启动网卡
win7设置网关
浏览器设置:因为是透明代理 就可以把√消掉
centos03
开始监控web
[root@centos03 ~]# tail -f /var/log/httpd/access_log
win7开始测试
访问192.168.200.10
查看 centos03的日志
日志为100.50 说明没有走代理
centos02
配置透明代理
[root@centos02 ~]# vim /etc/squid.conf
60 http_port 3128 transparent //开启代理功能
查看配置文件是否正确
[root@centos02 ~]# squid -k parse
创建缓存目录
[root@centos02 ~]# squid -z
启动服务
[root@centos02 ~]# squid
查看服务是否启动成功
[root@centos02 ~]# netstat -anput | grep squid
centos02
安装防火墙
删除系统自带的源
[root@centos02 ~]# rm -rf /etc/yum.repos.d/CentOS-*
卸载
[root@centos02 ~]# umount /mnt/
切换光盘
挂载光盘
[root@centos02 ~]# mount /dev/cdrom /mnt/
安装iptables防火墙
[root@centos02 ~]# yum -y install iptables-services
清空防火墙所有规则
[root@centos02 ~]# iptables -F
查看所有规则
[root@centos02 ~]# iptables -L
保存防火墙规则
[root@centos02 ~]# iptables-save
将网站映射到3128端口
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
win7 测试
清空浏览器缓存
访问192.168.200.10
查看centos03的日志记录
访问者的ip为192.168.200.254 说明代理成功
centos02
将网站映射到3128端口
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s192.168.100.0/24 -p tcp --dport 21 -j REDIRECT --to 3128
[root@centos02 ~]# iptables -t nat -I PREROUTING -i ens32 -s192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
squid的访问控制
限制特定网络通过squid访问目标
centos02
将centos02恢复到之前设置的squid传统代理
centos03
将centos03的网卡设置为vmnet1仅主机模式
编辑网卡配置文件
重启网卡服务
centos02
编辑squid配置文件
[root@centos02 ~]# vim /etc/squid.conf
26 acl network src 192.168.100.10/24
删除注释
删除空行
在26行写入
26 http_access deny network
18行将24改为32
保存退出
检查配置文件是否有问题
[root@centos02 ~]# squid -k parse
关闭squid服务
[root@centos02 ~]# killall squid
初始化缓存
[root@centos02 ~]# squid -z
启动服务
[root@centos02 ~]# squid
centos01
访问100.30
[root@centos01 ~]# elinks http:192.168.100.30
centos03
开启日志文件监听
[root@centos03 ~]# tail -f /var/log/httpd/access_log
centos02
编辑squid配置文件
18 acl network src 192.168.100.0/24
杀死3128进程
[root@centos02 ~]# killall squid
初始化缓存
[root@centos02 ~]# squid -z
开启进程and监听
[root@centos02 ~]# squid
win7
设置 打开
win7测试
打开浏览器访问192.168.100.30
访问 成功
查看centos03的监听日志
ok 它不是100.50
允许多个局域网段在在工作时间上网
通过黑名单限制目标网络
centos02
编辑文件
[root@centos02 ~]# vim /etc/ipblock.list
192.168.100.50
编辑squid配置文件
[root@centos02 ~]# vim /etc/squid.conf
关闭squid服务
[root@centos02 ~]# killall squid
初始化缓存
[root@centos02 ~]# squid -z
启动服务
[root@centos02 ~]# squid
win7测试
访问192.168.100.30