Chinaunix首页 | 论坛 | 博客
  • 博客访问: 131712
  • 博文数量: 35
  • 博客积分: 692
  • 博客等级: 上士
  • 技术积分: 317
  • 用 户 组: 普通用户
  • 注册时间: 2011-03-22 16:40
文章分类
文章存档

2014年(2)

2012年(4)

2011年(29)

分类: LINUX

2011-12-02 16:22:09

p { margin-bottom: 0.08in; }a:link { }

Squid代理服务器

设置前,请确保selinux iptablesdisable

Squid简介

Squid为代理缓存服务器

其作用有以下几点:

        1. 通过缓存方式为用户提供Web访问加速

        2. 对用户的Web访问进行过滤控制

其分类有:

        1. 普通代理服务器(正向代理)

        2. 透明代理服务器

        3. 反向代理服务器

普通代理服务器----即为传统的标准代理服务器,其需要客户端在浏览器中指定代理服务器的IP与端口


透明代理服务器----之所以称为“透明代理”是因为客户端感觉不到代理的存在,客户端无需设置代理服务器的IP 和端口等信息,只需设置防火墙策略将客户端的web访问数据交由代理服务器处理。在Linux平台下,使用iptables squid来实现透明代理和网络地址转换。当客户端访问

Internet资源,请求Internet资源的数据包途径Linux服务器转发时,Linux服务器上的防火墙iptables服务应用NAT技术将终端客户的HTTP请求重定向到Squid代理服务器,有Squid代理服务器代替终端客户访问外部的Internet信息资源,再将获取的信息资源回传给终端客户


反省代理服务器----主要为Internet 用户访问企业Web站点提供缓存加速,使用者为企业的Web服务器。反向代理服务器是针对 WEB 服务器设置的,后台 WEB 服务器对互联网用户是透明的,用户只能看到反向代理服务器的地址,不清楚后台 WEB 服务器是如何组织架构的。当互联网用户请求 WEB 服务时,DNS 将请求的域名解析为反向代理服务器的 IP 地址,这样 URL 请求将被发送到反向代理服务器,由反向代理服务器负责处理用户的请求与应答、与后台 WEB 服务器交互。利用反向代理服务器减轻了后台 WEB 服务器的负载,提高了访问速度,同时避免了因用户直接与 WEB 服务器通信带来的安全隐患。


更多关于反向代理的说明参考:

/developerworks/cn/linux/l-cn-squid/


Squid服务设置


安装

# yum install squid -y

#cd /dev/shm //使用tmpfs动态文件系统加速squid

# mkdir squid

#chown squid.squid squid

#chmod 750 squid/

# mount - -bind /dev/shm/squid /var/spool/squid

注:/var/spool/squid/此为squid的默认缓存文件放置目录,/etc/squid/squid.conf文件中的

cache_dir ufs /var/spool/squid 参数设置指定,可更改


note:/dev/shm/linux下一个非常有用的目录,因为这个目录不在硬盘上,而是在内存里.默认系统就会加载/dev/shm ,它就是所谓的tmpfs.tmpfs 是一个文件系统,而不是块设备;您只是安装它,它就可以使用了.

tmpfs有以下优势:

  1,动态文件系统的大小

  2tmpfs 的另一个主要的好处是它闪电般的速度。因为典型的 tmpfs 文件系统会完全驻留在 RAM 中,读写几乎可以是瞬间的

  3tmpfs 数据在重新启动之后不会保留,因为虚拟内存本质上就是易失的。所以有必要做一些脚本做诸如加载,绑定的操作

巧用tmpfs加速你的linux服务器,就是使用虚拟磁盘来存放squid的缓存文件和phpseesion


启动服务

# service squid start

# cd /dev/shm/squid cd /var/spool/squid/

# ls //会发现产生了许多的用于缓存的目录


正向代理设置


1)设置监听的端口和IP

# vi /etc/squid/squid.conf

http_port 3124 //此为默认端口,可更改


除此之外,可使用http_port参数来指明在某指定接口地址的端口上进行监听,格式为:

http_port IP:port


2)设置缓冲大小

cache_dir参数用于设置Squid以何种方式存储cache文件到磁盘的什么位置,定义格式为:

cache_dir scheme directory size L1 L2 [options]

字段注释

scheme 指定存储机制,有 ufs aufs diskd等,默认为ufs

directory 指定缓存文件放置路径

size 指定cache目录的大小,是Squid能使用的cache_dir目录的上限,单位为MB

L1 L2 指定Squidcache目录(默认为/var/spool/squid/)下可以创建的目录数量.L1 L2 别指定了第一级和第二级目录的数量

options cache_dir的选项,有2.

read-only 指定Squid只从cache目录中读取文件,但不写入新目标

max-size 指定cache目录里的最大目标大小


系统默认设置为:

cache_dir ufs /var/spool/squid 100 16 256


cache_mem 参数 定义缓存大小,默认为64MB

cache_mem 64 MB


其他重要参数:


cache_mgr (定义服务器管理员)

maximum_object_size 4096 KB (定义最大的缓存对象为4096KB

reply_body_max_size 10240000 allow all (定义访问响应对象不能大于10MB)

access_log /var/log/squid/access.log squid(定义访问日志位置)

visible_hostname localhost.example.com(定义可用主机名)

cache_effective_user 设定使用缓存的有效用户

cache_effective_group 设定使用缓存的有效组

dns_nameservers IP 为使Squid能解析域名,必须告诉Squid有效的DNS服务器地址


3)访问控制

acl (access control list,访问控制列表)Squid进行网络控制的工具参数,用来过滤进出代理服务器的数据,格式为:

acl 列表名称 列表类型 [-i] 列表值1 列表值2 ......

参数说明:

列表名称 用于区分Squid的各个访问控制列表ACL,任何两个访问控制列表ACL不能定义 相同的列表名称

列表类型 定义可被Squid识别的类型,常见类型有:

                        src 指定客户端的源IP地址

                        dst 指定目标服务器IP地址

                        myip 指定SquidIP地址,被客户端链接

                        dstdomain 指定目标主机域名,常用于基于域名的访问控制,阻止对某些站点的 访问

                        srcdomain 客户机所在的域

                        port 指定端口号,常用来限制对某些目标服务器端口号的访问

                        time 日期以及时间控制

                                日期控制有

                                               # # S - Sunday

                                               # # M - Monday

                                               # # T - Tuesday

                                               # # W - Wednesday

                                               # # H - Thursday

                                               # # F - Friday

                                               # # A – Saturday

                               时间控制格式 h1:m1-h2:m2 # h1:m1 must be less than h2:m2

proxy_auth 设置通过外部程序进行认证

maxconn 指定同一时间来自客户端的最大连接数

[-i] 忽略大小写



设置范例:

#访问控制

acl INTERNAL src 192.168.0.0/24

acl BADPC src 192.168.0.25 //控制列表

http_access deny BADPC //允许或拒绝某个控制列表的HTTP请求

http_access allow INTERNAL


#限制访问时段

acl KIDsPC src 192.168.0.25

acl CLEANTIME time MTWHF 15:00-18:00 //设置了星期与时间段

http_access deny KIDsPC CLEANTIME


站点屏蔽

#echo 151.11.56.58 > /etc/squid/***ip

#echo .***.com > /etc/squid/***dn

#echo > /etc/squid/***url

#echo *** > /etc/squid/***tag

#chown root:squid /etc/squid/***{ip,dn,url,tag}

#chmod 640 /etc/squid/***{ip,dn,url,tag}

#vi /etc/squid/squd.conf

添加如下:

acl ***ip dst "/etc/squid/***ip" //***ip 记录不法 ip 地址

acl ***dn dstdomain "/etc/squid/***dn" // ***dn记录不法域名)

acl ***url url_regex "/etc/squid/***url" // ***url记录不法网址)

acl ***tag urlpath_regex "/etc/squid/***tag" //***tag记录不法关键字

http_access deny ***dn

http_access deny ***ip

http_access deny ***url

http_access deny ***tag


#限制访问端口

acl SSL_ports port 443

acl Safe_ports port 80

acl Safe_ports port 21

acl CONNECT method CONNECT

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports


设置完成,重启服务

# squid -k reconfigure



代理客户端的设置

1 Windows系统下的IE代理设置

鼠标邮件单击Internet Explorer---->属性---->”连接”选项卡---->单击“局域网设置”

---->在”局域网(LAN)设置”对话框中,勾选”为LAN石油代理服务器”,在“地址”文本框中输入正确的代理服务器IP地址和端口号------>单击确定

2 Linux系统下的Firefox代理设置

打开Firefox浏览器---->编辑(Edit)----首选项(Preferences)---->在弹出的对话框中选择”高级”(Advanced)---->网络(Network)---->设置(Settings...)----在打开的对话框中选择“手动设置”

(Manual proxy configuration)----输入相关代理服务器的IP地址与端口号




反向代理设置

此为web服务器使用squid,以实现用户快速访问站点

webserver 192.168.0.20 192.168.0.30

# vi /etc/squid/squid.conf

http_port 192.168.0.254:80 transparent vhost vport

cache_peer 192.168.0.20 parent 80 0 no-query originserver name=webserver1 round-robin

cache_peer 192.168.0.0 parent 80 0 no-query originserver name=webserver2 round-robin

cache_peer_domain webserver1 webserver2


//如此,当用户访问该站点的某台Web服务器时,直接访问 ,该设置实现了Web服务的负载均衡,当一台Web停止工作时,另一台将继续被使用


注:记得在web服务器上添加对的地址解析,使其指向代理服务器Squid的主机地址



squid 用户认证


# htpasswd /etc/squid/passwd test

#chown root:squid /etc/squid/passwd

#chmod 640 /etc/squid/passwd

#vi /etc/squid/squid.conf

acl INTERNAL src 192.168.0.0/24

acl AUTHUSERS proxy_auth REQUIRED

http_access allow INTERNAL AUTHUSERS


auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/passwd //注意认证密码,程序的 // 放置路径

auth_param basic children 5

auth_param basic realm Squid-Home Proxy Server

auth_param basic credentialsttl 2 hours //认证的设置尽量写在前面,防止 //被其他设置覆盖


重启服务

# squid -k reconfigure

当在使用代理服务时,将要求输入设置的代理服务器密码




Note: squid.conf文件的设置中,按从上到下进行过滤,如同iptables,写在前面的优先生效,

故用户自行设置的选项参数尽量写在文件前端



其他一些相关命令:

squid -z (初始化缓存目录结构)

squid -D(也可启动squid服务,但不做dns解析测试)

squid -k shutdown 关闭

squid -k interrupt 关闭

squid -k reconfigure 重载配置文件

squid -k check 检测状态

日志文件路径 :/var/log/squid/ 配置出错时可查看日志文件

注意:正向代理、反向代理、透明代理均不可同时

使用任意两者。


阅读(3129) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~