Squid做代理的一些应用

一、squid acl访问控制

mv squid.conf squid.conf.backup

egrep -v "^#|^$" squid.conf.backup > squid.conf

[[email protected] etc]# wc -l squid.conf

44 squid.conf

1)对url进行关键字过滤

在squid.conf文件中添加如下两行:

acl qq url_regex -i ^http://.*qq.*$

http_access deny qq

在浏览器中进行访问www.baidu.com,测试结果如下(注意一定要使用代理访问):

然后使用命令让squid重读配置文件:

[[email protected] ~]# squid -k reconfig

[[email protected] ~]# lsof -i :3128

COMMAND   PID  USER   FD   TYPE DEVICE SIZE/OFF NODE NAME

squid   22446 squid   15w  IPv4  43702      0t0  TCP *:squid (LISTEN)

squid   22446 squid   17u  IPv4  43646      0t0  TCP 192.168.49.135:squid->192.168.49.1:11361 (ESTABLISHED)

再次在浏览器中打开www.baidu.com,查看结果如下:

已经出现"Access Denied"错误,说明配置生效。

2)对url路径中的关键字进行过滤

将上面添加的两行注释掉,再添加如下两行:

acl qq_path urlpath_regex -i \.*qq*

http_access deny qq_path

然后让squid重读配置文件:

squid -k reconfig

最后在浏览器中进行访问测试:

打开http://im.qq.com/正常。

打开http://im.qq.com/pcqq/出现“Access Denied”错误,说明基于urlpath的acl规则生效,注意:urlpath是对http://*.*.*.*/ 后面的路径起作用的,因此http://im.qq.com/打开正常。

3)生产案例

限制使用BT和下载mp3:

acl BT urlpath_regix -i \.torrent$.

acl BT urlpath_regix -i \.torrent$ \.mp3$

http_access deny BT

限制访问某些网站:

acl sex url_regex -i ^http://.*sex.*$

http_access deny sex

二、配置web界面查看squid相关配置

1、首先安装apache

yum -y install httpd

2、配置并启动apache

[[email protected] etc]# cp /etc/httpd/conf/httpd.conf /etc/httpd/conf/httpd.conf.bak

[[email protected] etc]# vi /etc/httpd/conf/httpd.conf

[[email protected] etc]# diff /etc/httpd/conf/httpd.conf.bak /etc/httpd/conf/httpd.conf

136c136

< Listen 80

---

> Listen 8001   #修改监听端口为8001,这里也可以不改,但是一般不适用80端口

1009a1010,1015

> ScriptAlias "/squid" "/usr/local/squid/libexec/cachemgr.cgi" #创建一个别名,使用cachemgr.cgi

> <Location "/squid">  #添加一个apache访问路径

>      Order deny,allow

>      Deny from all

>      Allow from all

> </Location>

[[email protected] etc]# /etc/init.d/httpd start

Starting httpd: httpd: apr_sockaddr_info_get() failed for squid.contoso.com

httpd: Could not reliably determine the server‘s fully qualified domain name, using 127.0.0.1 for ServerName

[  OK  ]

[[email protected] etc]#

3、修改squid.conf默认配置

因为在squid的默认配置文件中有http_access deny !Safe_ports一行,所以需要把上面配置的8001端口添加到Safe_ports中,不然会出现访问拒绝错误。

acl Safe_ports port 8001

3、在浏览器中查看

输入访问url,http://192.168.49.135:8001/squid/,用户名密码默认为空。

打开之后,可以看到很多squid相关的信息。

比如可以看squid缓存的对象,虽然命令行也可以进行查看,但是这里提供了一个方便的web界面。

三、使用squid做透明代理

主机名 角色 IP地址
squid.contoso.com squid代理服务器
eth0:192.168.49.135

eth1:172.16.49.135

ldapserver.contoso.com squid客户端 eth1:172.16.49.139

1)编辑squid配置文件

主要是修改如下两点:

a.设置http_port为透明代理模式

b.添加相关参数如下:

cache_mem  90 MB  #注意90后面有一个空格,不然会有警告:WARNING: No units on ‘cache_mem 90MB‘, assuming 90.00 bytes

cache_swap_low  90

cache_swap_high 95

maximum_object_size  8192 KB

minimum_object_size  0 KB

maximum_object_size_in_memory  4096 KB

memory_replacement_policy  lru

emulate_httpd_log  on

[[email protected] etc]# cp squid.conf squid.conf.bak$(date +%F)

[[email protected] etc]# vi squid.conf

[[email protected] etc]# diff squid.conf.bak2016-10-16 squid.conf

36c36

< http_port 3128

---

> http_port 3128 transparent  #设置透明代理模式

51a52,61

>

> cache_mem  90 MB

> cache_swap_low  90

> cache_swap_high 95

>

> maximum_object_size  8192 KB

> minimum_object_size  0 KB

> maximum_object_size_in_memory  4096 KB

> memory_replacement_policy  lru

> emulate_httpd_log  on

2)修改防火墙设置

添加防火墙规则:

[[email protected] etc]# iptables -t nat -A PREROUTING -i eth1 -p tcp --dport 80 -j REDIRECT --to-ports 3128

[[email protected] etc]# iptables -t nat -A POSTROUTING -o eth0 -s 172.16.49.0/24 -j MASQUERADE

3)开启ipv4转发功能

[[email protected] etc]# sed -i ‘/net.ipv4.ip_forward/s/0/1/‘ /etc/sysctl.conf

[[email protected] etc]# grep ip_forward /etc/sysctl.conf

net.ipv4.ip_forward = 1

[[email protected] etc]# sysctl -p

4)测试squid客户端网络

[[email protected] ~]# ifconfig eth1

eth1      Link encap:Ethernet  HWaddr 00:0C:29:A5:4C:68

inet addr:172.16.49.139  Bcast:172.16.49.255  Mask:255.255.255.0

inet6 addr: fe80::20c:29ff:fea5:4c68/64 Scope:Link

UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1

RX packets:349 errors:0 dropped:0 overruns:0 frame:0

TX packets:223 errors:0 dropped:0 overruns:0 carrier:0

collisions:0 txqueuelen:1000

RX bytes:30075 (29.3 KiB)  TX bytes:24303 (23.7 KiB)

[[email protected] ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

172.16.49.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1

[[email protected] ~]# ping 202.96.128.86

connect: Network is unreachable

[[email protected] ~]# ping www.baidu.com

ping: unknown host www.baidu.com

5)重读squid配置

squid -k reconfig

6)将squid服务器的内网IP地址设置为squid客户端的默认网关

[[email protected] ~]# route add default gw 172.16.49.135

[[email protected] ~]# route -n

Kernel IP routing table

Destination     Gateway         Genmask         Flags Metric Ref    Use Iface

172.16.49.0     0.0.0.0         255.255.255.0   U     0      0        0 eth1

169.254.0.0     0.0.0.0         255.255.0.0     U     1003   0        0 eth1

0.0.0.0         172.16.49.135   0.0.0.0         UG    0      0        0 eth1

7)测试squid透明代理

在squid服务器上:

[[email protected] network-scripts]# squid -k rotate  #日志轮询

[[email protected] network-scripts]# tail -f /usr/local/squid/var/logs/access.log  #观察访问日志

在squid客户端上:

[[email protected] ~]# ping www.baidu.com

PING www.a.shifen.com (14.215.177.38) 56(84) bytes of data.

64 bytes from 14.215.177.38: icmp_seq=1 ttl=127 time=8.00 ms

64 bytes from 14.215.177.38: icmp_seq=2 ttl=127 time=8.13 ms

64 bytes from 14.215.177.38: icmp_seq=3 ttl=127 time=7.89 ms

64 bytes from 14.215.177.38: icmp_seq=4 ttl=127 time=35.1 ms

^C

--- www.a.shifen.com ping statistics ---

4 packets transmitted, 4 received, 0% packet loss, time 3229ms

rtt min/avg/max/mdev = 7.890/14.790/35.124/11.740 ms

squid客户端已经可以通过squid服务器上网了。

时间: 2024-10-26 05:03:10

Squid做代理的一些应用的相关文章

Squid做反向代理缓存

环境介绍: 主机名 角色 IP地址 squid.contoso.com squid代理服务器 192.168.49.135 image01.contoso.com 图片服务器(web) 192.168.49.139 一.准备工作 以其中一台为例: [[email protected] etc]# iptables -L Chain INPUT (policy ACCEPT) target     prot opt source               destination Chain FO

金庸武功之“碧血剑法”----squid做透明代理

一.试验目的:公司阿里云环境要求之开放一个代理服务器,其他服务器不允许有外网IP 二.环境拓扑: A:代理服务器:(利用squid做透明代理) (centos7.2) [[email protected] squid]# ip a eth0:10.30.204.122 eth1:116.62.XX.XX B:客户端服务器:(centos7.2) [[email protected] squid]# ip a eth0:10.30.204.90 三.试验环境准备(A,B都执行) yum  -y u

squid正向代理和反向代理服务器搭建

squid是比较知名的代理软件,它不仅可以跑在Linux上还可以跑在Windows和UNIX上,它的技术已经非常成熟.目前使用squid的用户也十分广泛.squid与Linux下其他的代理软件如Apache.socks.TIS FWTK等相比,下载安装简单,配置简单灵活,支持缓存和多种协议. squid之所以用的很多,是因为它的的缓存功能,squid的缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O.从经济角度考虑,它是很多网站架构中不可或缺的角色. squid可以做正向代理,也可以

Squid透明代理+ACL访问控制+日志分析

防伪码:仰天大笑出门去,我辈岂是蓬蒿人 第一章 Squid透明代理+ACL访问控制+日志分析 前言:搭建代理服务器可以提高上网打开网页的速度,可以对非法网站进行屏蔽,限制文件下载,以及查看员工访问internet的情况,包括上网的地址,用户,时间等,是企业网络管理的常用手段. 代理服务器分为传统代理和透明代理,传统代理适用于浏览internet,需要在浏览器上手工指定服务器地址和端口,不是很方便,但是可以隐藏本机真实的ip地址,而且为下载工具使用多个代理可以规避服务器的并发连接显示.透明代理适用

Squid反向代理

普通代理方式是代理内部网络用户访问Internet上服务器的连接请求,客户端必须指定代理服务器,并将本来要直接发送到internet上服务器的连接请求发送给代理服务器处理. 反向代理方式是指以代理服务器来接受Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外表现问一台服务器. 1.反向代理流程说明: squid做为反向代理服务器,通常工作在一个服务器集群的前端,在用户端看来,squid服务器就是他

Squid 反向代理加速网站

本实例的域名是 wenjin.cache.ibm.com.cn,通过DNS的轮询 技术,将客户端的请求分发给其中一台 Squid 反向代理服务器处理,如果这台 Squid 缓存了用户的请求资源,则将请求的资源直接返回给用户,否则这台 Squid 将没有缓存的请求根据配置的规则发送给邻居 Squid 和后台的 WEB 服务器处理,这样既减轻后台 WEB 服务器的负载,又提高整个网站的性能和安全性.该系统结构图 3 如下: 图 3. 系统结构 配置的系统环境: 一台 DNS 服务器:操作系统 Fre

Linux代理服务器—squid正向代理实验

1.代理服务器squid简介 Squid cache(简称为Squid)是一个流行的自由软件(GNU通用公共许可证)的代理服务器和Web缓存服务器.Squid有广泛的用途,从作为网页服务器的前置cache服务器缓存相关请求来提高Web服务器的速度,到为一组人共享网络资源而缓存万维网,域名系统和其他网络搜索,到通过过滤流量帮助网络安全,到局域网通过代理上网.Squid主要设计用于在Unix一类系统运行. squid可以做代理也可以做缓存. squid不仅可以做正向代理,又可以做反向代理. 正向代理

squid正向代理

centos系统自带squid包,安装命令是: 1.安装squid #yum install -y squid 2.修改squid配置文件 # vim /etc/squid/squid.conf (配置文件路径) cache_dir ufs /var/spool/squid 100 16 256 (打开前面的#号) cache_mem 128 MB ....在refresh_pattern下插入代码 refresh_pattern \.(jpg|png|gif|js|css|mp3|mp4|ex

利用智能DNS和squid反向代理模拟简易CDN

前提本次实验应该用到5台Server和至少两台测试Client.但受制于服务器数量影响,实际一共用到了3台服务器,其中权威DNS本次没有配置.智能DNS跟CDN缓存节点1共用同一台服务器. 本次实验不介绍源站Server的搭建.本实验环境中用的是现成的系统.本次实验默认读者已经了解 DNS的相关知识,如A记录.CNAME记录.NS记录等.本次实验默认读者已经了解CDN的基本原理.本次实验默认读者了解Linux基本的知识点.如果不具备以上知识点,请先补充完善自己的知识体系. 实验规划:1. 客户源