透明代理,squid可构建的代理服务

2019-10-06 09:00 来源:未知

1、squid代理:

代理服务器分为传统代理和透明代理,传统代理适用于浏览internet,需要在浏览器上手工指定服务器地址和端口,不是很方便,但是可以隐藏本机真实的ip地址,而且为下载工具使用多个代理可以规避服务器的并发连接显示。透明代理适用于共享上网网关,不需要指定服务器地址和端口,无需额外的设置即可上网,在实际工作中透明代理较多。

Squid 一款开源的代理服务软件,用于实现HTTP和FTP以及DNS查询,SSL等应用的应用层代理。squid 作为应用层代理服务软件,主要提供缓存加速,应用层过滤控制的功能(访问的目标,客户机地址,访问的时间)

前我们已经对Squid代理服务器  http://www.linuxidc.com/Linux/2013-08/88659.htm 有了初步的了解,那么接下来我们就传统代理服务器及透明代理服务器的构建及ACL访问控制使用进行简单的描述,希望对大家有帮助。

缓存网页,减少重复请求,加快访问速度,隐藏真实ip

 

官方站点:

透明模式的特点就是对用户是透明的(Transparent),即用户意识不到防火墙的存在。要想实现透明模式,防火墙必须在没有IP地址的情况下工作,不需要对其设置IP地址,用户也不知道防火墙的IP地址。

代理的分类:

一、搭建传统代理服务器

squid可构建的代理服务:传统代理、透明代理、反向代理

透明模式的防火墙就好象是一台网桥(非透明的防火墙好象一台路由器),网络设备(包括主机、路由器、工作站等)和所有计算机的设置(包括IP地址和网关)无须改变,同时解析所有通过它的数据包,既增加了网络的安全性,又降低了用户管理的复杂程度。

传统代理:使用Internet和内网,客户端需明确指定代理服务器。

1、实验拓扑:

DNS view(视图) + SQUID 反向代理 = CDN(内容分发网络)

推荐阅读:

透明代理:使用于内网访问外网,指定代理服务器,但必须指定网关,网管配置iptables策略,将端口重定向到代理服务器端口。

永利平台娱乐 1

代理的工作原理:
客户端通过代理来请求web页面时,指定的代理服务器首先检查自己的高速缓存,是否有客户端请求的页面
  有    则直接从缓存中读取页面反馈给客户端
  没有   缓存服务器向Internet发送访问请求,将结果缓存到本地并返回给客户端,缓存对象主要是文字,图像等静态的元素

配置Squid代理http和rsync http://www.linuxidc.com/Linux/2013-05/84642.htm

2、squid和nat的区别:

 

当客户机在不同的时候访问同一WEB元素,不同的客户机访问相同的WEB元素时,可以直接从代理服务器的缓存中获得结果

Squid:实现高速的Web访问 http://www.linuxidc.com/Linux/2013-04/83512.htm

NAT:工作在网络层,通过转换地址转发数据包,实现内外网之间通信。

1、实验步骤

优点:

CentOS 6.2 编译安装Squid 配置反向代理服务器 http://www.linuxidc.com/Linux/2012-11/74529.htm

应用代理:工作在应用层,通过缓存提供服务,不进行数据包转发,主要实现web缓存服务。

1)在服务器B上安装Squid代理服务器软件(挂载光盘,解压缩)

  1. 减少向Internet提交重复访问过程
  2. 隐藏客户端的IP地址
  3. 加快客户端访问速度
  4. 在代理访问过程中过滤和控制机制(访问目标,客户机地址,时间段)

Squid在企业网中的应用 http://www.linuxidc.com/Linux/2012-10/71818.htm

3、squid的安装

 

传统代理:
      普通的代理服务,以提供 HTTP、FTP 代理为主,客户端需要在浏览器或QQ聊天工具,下载软件中手动指定代理服务器的地址和端口号(默认为3128),对于网页浏览器,域名解析也会发给指定的代理服务器。对于企业局域网来说同样可通过代理接入Internet,但只能访问 HTTP、FTP 代理的缓存机制可为用户访问web站点提高访问速度

永利平台娱乐 2

./configure  --prefix=/usr/local/squid(安装目录)  --sysconfdir=/etc(配置文件位置)  --enable-linux-netfilter(支持内核过滤)  --enable-linux-tproxy(支持透明模式)  --enable-async-io=100    --enable-err-language=”Simplify_Chinese”(错误信息显示语言)  --enable-underscore(允许URL中有下划线) --enable-poll(使用Poll()模式,提升性能)  --enable-gnuregex(使用GNU正则表达式)

永利平台娱乐 3

QQ程序使用代理可以隐藏本机真实IP地址
下载工具使用多个代理规避服务器的并发连接限制

防火墙使用透明代理技术,这些代理服务对用户也是透明的,用户意识不到防火墙的存在,便可完成内外网络的通讯。当内部用户需要使用透明代理访问外部资源时,用户不需要进行设置,代理服务器会建立透明的通道,让用户直接与外界通信,这样极大地方便了用户的使用。

4、主配置文件/etc/squid.con的配置项:

2)编译安装

 

一般使用代理服务器时,每个用户需要在客户端程序中指明要使用代理,自行设置Proxy参数(如在浏览器中有专门的设置来指明HTTP或FTP等的代理)。而透明代理服务,用户不需要任何设置就可以使用代理服务器,简化了网络的设置过程。

http_port  3128                              默认端口号:3128

永利平台娱乐 4

透明代理(Transparent Proxy):
     提供与传统代理相同功能,对于客户端来说代理服务器是透明的,客户端不需要指定IP地址与端口号,而是通过默认路由,防火墙策略将web访问重定向,实际上还是交给代理服务器处理,域名解析优先发给DNS服务器。

透明代理与透明模式都可以简化防火墙的设置,提高系统安全性。但两者之间也有本质的区别:工作于透明模式的防火墙使用了透明代理的技术,但透明代理并不是透明模式的全部,防火墙在非透明模式中也可以使用透明代理。

cache_effective_user  squid         指定squid的程序用户

--prefix=/usr/local/squid   //安装目录

透明:客户端不需要在浏览器中指定代理服务器的地址和端口号

那么下边我们就通过示例让大家明白透明代理、传统代理及ACL控制的效果:

cache_effective_group  squid       指定账号的基本组

--sysconfdir=/etc   //单独将配置文件修改到其他目录

Squid+Iptables 将访问请求通过Iptables(Redirect 重新定向)给本机的代理服务程序

永利平台娱乐 5

repy_body_max_size  10  MB       允许下载最大文件大小

--enable-arp-acl   //可以在规则中设置直接通过客户端mac进行管理,防止客户端使用ip欺骗攻击

反向代理:
      反向代理(Reverse.Proxy)也同样提供缓存加速,只不过服务的对象反过来了。传统代理也好,透明代理也好,大多是为局域网用户访问Internet中的Web站点提供缓存代理;
而反向代理恰恰相反,主要为Internet中的用户访问企业局域网内的 Web 站点提供缓存加速,是一个反向的代理过程,因此称为反向代理。

实验环境(略加修改,因为当测试网站在同一网段就没有必要验证了):

maximum_object_size  4096 KB   允许缓存的最大对象

--enable-linux-netfilter   //使用内核过滤

对于一些访问量较大的Web站点(如新浪,搜狐等),提供反向代理可以起到加速作用,同时缓解Web服务器的压力。例如,使用nslookup工具解析出www.sina.com.cn站点
对应的IP地址(通常有多个,这是基于 DNS解析的负载分担),任选其中一个在浏览器中直接访问,就会发现Squid反向代理服务反向的错误信息。而使用www.sina.com.cn
域名访问新浪站点使,用户基本上感觉不出squid服务的存在。

地址规划:

visible_hostname  a.benet.com     指定主机名(名称随意)

--enable-linux-tproxy   //支持透明模式

 

Squid 代理:

5、squid的管理命令:

--enable-async-io=值   //异步i/o,提升存储性能

安装与运行控制:
1、编译安装SQUID

eth0:192.168.10.1

squid  -k  parse               检测语法

--enable-err-language=”Simplify_Chinese”   //错误信息的显示语言

[root@proxy ~]# rpm -q squid
package squid is not installed

[root@proxy ~]# tar xf squid-3.4.6.tar.gz -C /usr/src/
[root@proxy ~]# cd /usr/src/squid-3.4.6/
[root@proxy squid-3.4.6]# ./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex && make && make install


--prefix=/usr/local/squid              #安装目录
--sysconfdir=/etc/                     #单独将配置文件修改到其他目录
--enable-arp-acl                    #在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter          #使用内核过滤
--enable-linux-tproxy           #支持透明模式
--enable-async-io=100         #异步I/O,提升存储性能,相当于 --enable-pthreads --enable-storeio=ufs,aufs 
--with-pthreads --with-aufs-thread=值
--enable-err-language="Simplify_Chinese"    #错误信息的显示语言
--enable-underscore                         #允许URL中有下划线
--enable-poll                          #使用poll() 模式,提升性能
--enable-gnuregex                            #使用GNU正则表达式

[root@proxy ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@proxy ~]# useradd -M -s /sbin/nologin squid
[root@proxy ~]# chown -R squid:squid /usr/local/squid/var/

eth1:173.16.16.173

squd  -z                           初始化缓存目录

--enable-poll   //使用Poll()模式,提升性能

2.Squid的基本配置

测试网站:173.16.16.2

squid                               启动squid

--enable-underscore   //允许url中有下划线

配置项参考:/etc/squid.conf.documented
主配置文件:/etc/squid.conf

客户机:192.168.10.10

squid  -k  reconfigure       重新加载配置

--enable-gnuregex   //使用GNU正则表达式

参数介绍:
http_port 3128 #指定代理服务监听的地址和端口(默认端口 3128) http_port 192.168.1.1:3128
cache_effective_user squid #指定squid程序用户,用来设置初始化,运行时的缓存帐号
cache_effective_group squid #默认为cache_effective_user指定帐号的基本组
coredump_dir /usr/local/squid/var/cache/squid

实验描述:

关闭squid: kill  进程号(查看进程号命令:netstat  -anpt  | grep “squid”)

永利平台娱乐 6

3.squid的运行控制
1)检查配置文件语法是否正确

在squid主机上,构建squid为客户机访问各种网站提供代理服务;

6、透明代理配置:

2)创建链接文件,创建用户和组

[root@proxy ~]# squid -k parse

2016/01/26 22:01:24| WARNING: 'proxy' rDNS test failed: (0) No error.
2016/01/26 22:01:24| WARNING: Could not determine this machines public hostname. Please configure one or set 
'visible_hostname'.2016/01/26 22:01:24| WARNING: 'proxy' rDNS test failed: (0) No error.

[root@proxy ~]# vim /etc/squid.conf
visible_hostname proxy 
[root@proxy ~]# hostname proxy

在客户机上,指定squid作为web访问代理,以隐藏自己的真实IP地址。

1)在/etc/squid.conf配置文件添加支持透明代理

永利平台娱乐 7

 

实验步骤:

http_port  192.168.1.1:3128  transparent

2)使用squid服务脚本(为了能够方便启动停止服务)

2)启动,停止squid
第一次启动,会自动初始化缓存目录,在没有squid服务脚本时,可以直接调用squid程序启动服务。

1:squid服务器的配置:

(192.168.1.1是内网网关)

Vim squid,内容如下:

[root@proxy ~]# vim /etc/squid.conf
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

[root@proxy ~]# squid -z

[root@proxy ~]# ls /usr/local/squid/var/cache/squid
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F

[root@proxy ~]# squid -z #用来初始化缓存目录
[root@proxy ~]# squid #启动squid服务
[root@proxy ~]# squid -D    #直接执行squid启动服务,-D不进行DNS测试
[root@proxy ~]# squid -k reconfigure    #用于重新加载配置文件
[root@proxy ~]# netstat -anpt |grep squid
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 88850/(squid-1)

因代理服务的主配置文件大多是注释行,需简化配置文件:

2)添加iptables策略,将80号端口(HTTP)和443端口(HTTPS)重定向到3128

永利平台娱乐 8

  

过滤前先进行备份—数据至上:

Iptables  -t nat  -A  PREROUTING -p  tcp  --dport 80  -j  REDIRECT --to  3128

没有完,接着下面的写

3)squid服务脚本

[root@squid ~]# mv /etc/squid/squid.conf /etc/squid/squid.conf.bak

Iptables  -t nat  -A  PREROUTING -p  tcp  --dport 443  -j  REDIRECT --to  3128

永利平台娱乐 9

[root@proxy ~]# vim /etc/init.d/squid
#!/bin/bash
# chkconfig: 2345 90 25
# config: /etc/squid.conf
# pidfile: /usr/local/squid/var/run/squid.pid
# Description: Squid - Internet Object Cache.
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 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 -anpt | grep squid 
else
echo "squid is not running."
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭squid..."
$0 start &> /dev/null
echo "正在启动squid..."
;;
check)
$CMD -k parse
;;
reload)
$CMD -k reconfigure
;;
*)
echo "用法: $0 {start|stop|restart|reload|check|status}"
esac

[root@proxy ~]# chmod +x /etc/init.d/squid
[root@proxy ~]# chkconfig --add squid
[root@proxy ~]# chkconfig squid on
[root@proxy ~]# service squid start
[root@proxy ~]# service squid status

永利平台娱乐 10

7、squid的控制

设置权限,并添加为系统服务。

 

执行过滤操作:

由ACL和http_access两条命令实施,ACL定义规则,http_access应用规则。

 

配置传统代理:
代理服务器:192.168.200.211

[root@squid ~]# grep -v "^#" /etc/squid/squid.conf.bak | grep -v "^$" > /etc/squid/squid.conf

格式:  acl  名称  控制类型  控制内容

永利平台娱乐 11

要求:

永利平台娱乐 12

http_access  allow|deny 名称1  名称2

2)修改配置文件

  1. Squid为客户端提供网站的代理服务
  2. 禁止客户端通过代理服务器下载超过10MB大小的文件
  3. 客户端的相关程序例如:QQ、IE浏览器等需要指定代理服务器的IP地址及端口号。
  4. 如果客户机需通过域名方式访问,代理服务器本身需能够正确解析域名

在主配置文件/etc/squid/squid.conf中,添加配置项

控制类型:src  源地址           dst  目标地址

Vi /etc/squid.conf

1)编译安装SQUID
2)修改/etc/squid.conf 配置文件

http_port 3128 ###指定代理服务监听的端口,默认为3128

                  port  端口号          time 访问时间

主要修改有以下几条配置项,有的配置项需要修改,而有的配置项需要添加。

[root@proxy ~]# vim /etc/squid.conf
http_access allow all #允许任意主机使用代理服务器(注意:需要放在http_access deny all前面)
http_access deny all 
http_port 3128 #配置代理服务器端口号
reply_body_max_size 10 MB #限制下载文件大小
cache_effective_user squid
cache_effective_group squid
visible_hostname proxy
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256
coredump_dir /usr/local/squid/var/cache/squid

[root@proxy ~]# service squid check 
[root@proxy ~]# service squid restart && service squid reload && squid -k reconfigure

cache_mem 64 MB ###指定缓存所使用的内存空间的大小

dstdomain  目标域            maxconn 连接数url_grgex 目标URL地址      urlpath_regex  URL路径(文件类型)

    http_port 3128                      squid的默认监听端口tcp  修改   cache_effective_group squid         squid的运行组    添加

  

maximum_object_size 4096 KB ###保存到缓存空间的最大对象(文件)大小

 

    cache_effective_user squid          squid的运行用户  添加

防火墙配置:
1)关闭防火墙

reply_body_max_size 10240000 allow all ###允许用户下载的最大文件大小,其中all为默认的访问控制列表名

可以设置黑白明单以控制允许或拒绝访问的主机

    visible_hostname centos1.lzg.com   当前系统的主机名  添加

[root@proxy ~]# service iptables stop

cache_dir ufs /var/spool/squid 100 16 256 ###指定缓存数据所存放的目录,容量,子目录个数;其中100为容量100M;16为一级子目录;256为二级子目录

例:建立针对目标地址的黑名单文件

    cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

2)配置防火墙允许策略

access_log/var/log/squid/access.log squid ###指定代理服务的日志文件位置及记录格式(squid)

mkdir  /etc/squid

永利平台娱乐 13

[root@proxy ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
[root@proxy ~]# service iptables save

[root@proxy ~]# netstat -anpt | grep squid
tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 90052/(squid-1)

[root@proxy ~]# tail -f /usr/local/squid/var/logs/access.log 
1452937491.308 5 192.168.200.212 TCP_MISS/200 366 GET http://192.168.200.212/ - HIER_DIRECT/192.168.200.
212 text/html
1452937502.785 2 192.168.200.212 TCP_CLIENT_REFRESH_MISS/304 220 GET http://192.168.200.212/ - HIER_DIRE
CT/192.168.200.212 -

visible_hostname localhost ###指定代理服务器本机的主机名

cd  /etc/squid

永利平台娱乐,2)在防火墙上添加允许策略

web服务器:192.168.200.212

dns_testname www.sohu.com ###执行DNS解析,确保squid服务器自身的DNS查询功能正常,只要成功解析出一个域名,则不再测试后边的其他域名

vim  ipblock.list --写入地址(61.135.167.36  125.39.127.25   60.28.14.0/24)

永利平台娱乐 14

[root@web ~]# mount /dev/cdrom /media/cdrom/
[root@web ~]# rpm -ivh /media/cdrom/Packages/httpd-2.2.15-39.el6.x86_64.rpm 
[root@web ~]# echo "<h1>www.crushlinux.com</h1>" > /var/www/html/index.html
[root@web ~]# service httpd start
[root@web ~]# service iptables stop

[root@web ~]# tail -f /var/log/httpd/access_log
192.168.200.211 - - [17/Jan/2016:01:45:27 +0800] "GET / HTTP/1.1" 200 28 "-" "Mozilla/4.0 (compatible; MSIE 6

http_access allow all###放在http_access deny all之前

调用指定文件中的列表内容:

3)启动squid服务

客户端设置:192.168.200.254
IE浏览器:工具-->Internet选项-->局域网(LAN)设置-->配置代理服务器IP和端口号
Firefox: 首选项 高级 网络连接

永利平台娱乐 15

acl  IPBLOCK dst  “etc/squid/ipblock.list”

执行:Squid  -k  parse检测语法是否正确,出现很多内容,一般不用理会,没有提示错误就可以。

浏览器访问:WEB服务器IP地址

2:在Squid服务器上配置防火墙策略,允许3128端口访问外网的WEB服务器

8、sarg是一款squid日志分析工具,采用html格式,详细列出站点信息时间、排名、连接次数、访问量,主配置文件为sarg.conf可设置字体大小、背景、颜色等。

执行squid  -z 初始化缓存目录,此步必须要做,执行完之后稍微等一会。

 

iptables -I(大写i) INPUT -p tcp --dport 3128 -j ACCEPT

 

执行squid启动服务,也可以使用service  squid  start启动服务,第一次启动最好用squid启动。

Linux客户机的命令行界面(elinks,wget)必须通过环境变量来指定代理服务器的地址,端口

永利平台娱乐 16

TAG标签:
版权声明:本文由永利平台娱乐发布于IT交流,转载请注明出处:透明代理,squid可构建的代理服务