Squid代理服务器

Squid本质上是一种用来缓冲Internet数据 + 服务器代理的软件。

用来做前置的Web缓存,加快用户访问Web的速度
代理内网用户访问互联网资源
设置访问控制策略,控制用户的上网行为
主要支持http、ftp等应用协议
代理工作的机制和好处
缓存网页对象,减少重复请求
访问速率提高
隐藏客户机真是ip地址

Squid服务基础

当客户机通过代理来请求Web页面时,指定的代理服务器会先检查自己的缓存!如果缓存中已经有客户机需要的页面,则直接将缓存中的页面内容反馈给客户机。如果缓存中没有客户机要访问的页面,则由代理服务器向 Internet发送访问请求,当获得返回的Web页面以后,将网页数据保存到缓存中并发送给客户机 总结:利用缓存从而进行代理

1、代理

通过第三方软件或机构,实现客户端对指定服务的访问任务

2、常见的代理软件

Windows 系统: ccproxy(具有防火墙功能) ISA2006防火墙(有代理功能)
Linux 系统: squid

3、web代理的功能

3-1)将局域网的主机保护起来
3-2)对网站的内容进行缓存,加快客户端的访问速度,减少网络流量
3-3)静态页面的站点越来越少,可缓存的内容也变少,数据库中的信息不能被缓存

4、squid代理的基本类型

4-1)传统代理:客户端不需要配置网关,只需要设置浏览器的配置,代理服务器对客户端的访问控制能力强 缺点:有部分应用程序无法被代理
4-2)透明代理:客户端不用配置浏览器,正常配置网络信息,代理服务器对客户端的访问控制能力相对较弱 优点:绝大部分的应用程序都能被代理应用
4-3)反向代理:外网客户端给代理服务器发送访问请求后,由代理服务器判断将请求转发给哪个web节点, 作用:企业中经常使用squid制作web反向缓存服务。
4-4)缓存代理:适用于网络带宽比较低的环境,网速慢的环境。节省外网流量,加快客户端访问速度。对于动态网站,如论坛,新闻组,QQ空间类,无法进行缓存。现在的环境中,常用于缓存图片,视频等。企业中经常使用squid制作web反向缓存服务。。。

5、squid代理的区别

使用传统代理时,网页浏览器访问网站时的域名解析请求会发给指定的代理服务器
使用透明代理时,网页浏览器访问网站时的域名解析请求将优先发给DNS服务器
实际应用中,传统代理多见于Internet环境。而透明代理多见于局域网环境。 如:在Liunx网关中启用透明代理后,局域网主机无需进行额外设置就可以享受更好的上网速度。

搭建squid代理服务器

+++Apche服务器地址为192.168.6.21,代理服务器地址为192.168.1.200+++

1.添加双网卡,并配置IP地址

cd /etc/sysconfig/network-scripts/
ls
ifcfg-ens33  ifdown-ppp       ifup-ib      ifup-Team
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-TeamPort

cp ifcfg-ens33 ifcfg-ens37
ls
ifcfg-ens33  ifdown-post      ifup-eth     ifup-sit
ifcfg-ens37  ifdown-ppp       ifup-ib      ifup-Team
ifcfg-lo     ifdown-routes    ifup-ippp    ifup-TeamPort

ip addr
ens37:00:0c:29:c0:93:22

第一块网卡:192.168.6.20
第二块网卡:删掉UUID、修改NAME和DEVICE  192.168.1.200
HWADDR(HardWareADDRess,硬件地址)
systemctl restart network

2.启用路由转发

1>临时启用:
echo "1" > /proc/sys/net/ipv4/ip_forward	
或
sysctl -w net.ipv4.ip_forward=1	                  //重启跟网络相关的服务就会失效
2>永久启用:
vim /etc/sysctl.conf
添加:
net.ipv4.ip_forward = 1

# 重启加载内核配置参数
sysctl -p

# 验证:
cat /proc/sys/net/ipv4/ip_forward      →1

3.解压并安装squid软件

tar -zxvf squid-3.5.23.tar.gz -C /usr/src/
cd /usr/src/squid-3.5.23/
[root@localhost squid-3.5.23]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc \
--enable-arp-acl \
--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-arp-acl					启用arp控制列表
--enable-linux-netfilter			启用内核包过滤功能
--enable-async-io=240				启用设备异步I/O功能
--enable-default-err-language=Simplify_Chinese		错误日志的默认语言类型
--disable-poll					    关闭poll布尔运算
--enable-epoll						启用扩展poll布尔运算
--enable-gnuregex					支持gnu正则表达式

make  && make install

4.创建用户并优化服务

useradd -M -s /sbin/nologin squid
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
chown -R squid:squid /usr/local/squid/var/
chmod -R 757 /usr/local/squid/var/

5.检查语法并启动

squid -k parse				//验证语法
squid -z					//初始化
squid 						//启动服务
netstat -anpt | grep squid	//查看服务
killall -9  squid			//停止squid服务

6、配置传统代理

vim /etc/squid.conf
# 修改:
加注释:
http_access allow localnet(52行)	//默认允许本地网段使用(acl可以不注释,但这个必须注释)
acl localnet src 10.0.0.0/8
acl localnet src 172.16.0.0/12  
acl localnet src 192.168.0.0/16	这三个网段访问
//加注释后就拒绝上三个网段访问

# 添加:(54行)
acl net1 src 192.168.6.20                             #指定源地址192.168.6.20(代理服务器的第一块网卡)
acl net2 src 192.168.6.21                             #指定源Apache地址                                                      ---这两个acl根本就不需要,因为没有用到它(net1和net2是列表名称)
http_access allow all                                    #允许所有ip访问

# 取消注释:
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 25662行)	
//启用缓存列表
#设置缓存目录,启用此目录后,需要进行初始化后才能使用,100表示每次缓存的文件数,16表示创建的缓存目录数,256表示二级缓存目录数

cd /usr/local/squid/var/cache/squid/				//查看本目录还没有缓存文件
squid -z  										   //初始化   初始化成功后会生成缓存列表

# 重启Squid服务
[root@localhost ~]# killall -9 squid
[root@localhost ~]# squid

7、客户端设置代理(192.168.1.201,网关不必须要有)

Windows)
打开IE浏览器:打开“工具”—“Internet选项”。“连接”—“局域网设置”中进行设置:
IP地址:192.168.1.200 端口:3128
Linux)
打开火狐浏览器打开“首选项”—“高级”—“网络”—点击连接中的“设置”—“手动配置代理”——输入Squid代理服务器ip地址 端口:3128

8、验证:

客户端client访问WEB服务器http://192.168.6.21/(web服务器地址,访问域名暂时没做出来)

squid透明代理

客户端不用设置浏览器的代理选项,正常配置IP地址信息,包括网关DNS【关于客户端的DNS解析工作,最好还是通过正常的DNS服务器来提供,不建议抛给代理服务器来处理】
1)修改配置文件

vim /etc/squid.conf
修改:
http_port 3128 transparent

killall -9 squid
squid
netstat -anpt | grep squid

2)配置防火墙规则

systemctl start firewalld
systemctl status firewalld

添加ens33到internal(内)区域
firewall-cmd --zone=internal --add-interface=ens33
添加ens37到external(外)区域
firewall-cmd --zone=external --add-interface=ens37

在external添加服务和端口号
firewall-cmd --zone=external --add-service=http
firewall-cmd --zone=external --add-service=https
firewall-cmd --zone=external --add-port=3128/tcp

使用富语言编写目标端口号转换,将80和443转换为3128
富语言:

firewalld的富语言(rich language)提供了一种不需要了解iptables语法的通过高级语言配置复杂IPv4和IPv6防火墙规则的机制。为管理员提供了一种表达性语言.通过这种语言可以表达firewalld的基本语法中未涵盖的自定义防火墙规则。例如,仅允许从单个IP地址(而非通过某个区域路由的所有IP地址)连接到服务。
富规则可用于表达基本的允许/拒绝规则,也可以用于配置记录(面向syslog 和auditd),以及端口转发、伪装和速率限制。

firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens37 -p tcp --dport 80 -j REDIRECT --to-ports 3128
firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i ens37 -p tcp --dport 443 -j REDIRECT --to-ports 3128

验证:
客户端配置(网关必须要有)

IPADDR=192.168.1.201
NETMASK=255.255.255.0
GATEWAY=192.168.1.200
firefox 192.168.6.21
成功!!!             特殊情况:如果你客户机是基于“传统代理”的话,需要将代理服务取消掉!!!

acl访问控制

1)使用acl配置项定义需要控制的条件
acl 列表名称 列表类型 列表内容 …
2)通过http_access配置项对已定义的列表做“允许”或“拒绝”的控制。
http_access 访问控制列表
用它来控制变量是允许通过还是拒绝通过啦。。。
如:http_access allow haha 允许前面定义的haha(192.168.0.0/24)网段通过
http_access deny haha 拒绝前面定义的haha(192.168.0.0/24)网段通过

# 格式:
acl  列表名称  选项  值
例:acl haha src "/etc/iplist"

# 选项:
src				源IP地址
dst				目标IP地址
port			目标端口号
dstdomain		目标域
time			访问时间
maxconn			最大连接数
url_regex		目标URL地址
Urlpath_regex	整个目标URL地址

3)拒绝指定ip和域名访问
编辑地址列表

vim /etc/iplist
192.168.1.202
192.168.1.203

3-1)编辑域名列表

vim /etc/dnslist
.baidu.com
.sohu.com

4)vim /etc/squid.conf
添加:

acl haha src "/etc/iplist"                 #如果文件中是具体的ip,那么必须使用src选项
acl hehe dstdomain "/etc/dnslist"
http_access deny haha
http_access deny hehe

5)重启服务:

killall -9 squid
squid

6)客户端验证。即192.168.1.202与192.168.1.203均不能访问httpd服务

sysctl

sysctl命令用于运行时配置内核参数,这些参数位于/proc/sys目录下。sysctl配置于显示在/proc/sys目录中的内核参数.可以用sysctl来设置或重新设置联网功能,如IP转发、IP碎片去除以及源路由检查等。用户只需要编辑/etc/sysctl.conf文件,即可手工或自动执行由sysctl控制的功能。
命令格式:

sysctl (选项) (参数)
sysctl [-n] [-e] -w variable=value
sysctl [-n] [-e] -p <filename> (default /etc/sysctl.conf)
sysctl [-n] [-e] -a

常用参数的意义:

-w   临时改变某个指定参数的值,如 sysctl -w net.ipv4.ip_forward=1
-a   显示所有的系统参数
-p   从指定的文件加载系统参数,若不指定即从/etc/sysctl.conf中加载
如果仅仅是想临时改变某个系统参数的值,可以用两种方法来实现,例如想启用IP路由转发功能:

1) echo 1 > /proc/sys/net/ipv4/ip_forward
2) sysctl -w net.ipv4.ip_forward=1

以上两种方法都可能立即开启路由功能,但如果系统重启,或执行了
service network restart命令,所设置的值即会丢失。如果想永久保留配置,可以修改/etc/sysctl.conf文件,将 net.ipv4.ip_forward=0改为net.ipv4.ip_forward=1(没有则添加)

扩展参数:
-n:打印值时不打印关键字;
-e:忽略未知关键字错误;
-N:仅打印名称;
-w:当改变sysctl设置时使用此项;
-p:从sysctl配置文件“/etc/sysctl.conf”加载内核参数设置;
-a:打印当前所有可用的内核参数变量和值;
-A:以表格方式打印当前所有可用的内核参数变量和值。
No pain, no pain, no sweet, alive, this is a kind of practice

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

星光落入你灰蒙蒙的眼

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值