1、,RedHat Linux 服务器操作系统,难点: Linux下Squid的应用 重点: Squid代理服务器配置 关键词: Squid 代理,1、代理服务功能: 代理服务器是目前网络中常见的服务器之一,它可以提供文件 缓存、复制和地址过滤等服务,充分利用有限的出口带宽,加快 内部主机的访问速度,也可以解决多用户需要同时访问外网但公 有IP地址不足的问题。同时可以作为一个防火墙,隔离内网与外 网,并且能提供监控网络和记录传输信息的功能,加强局域网的 安全性等。它的主要作用有以下几点。 1共享网络 2加快访问速度,节约通信带宽 3防止内部主机受到攻击 4限制用户访问,完善网络管理,Squid基本
2、概念,2、代理服务原理 : 客户端A向代理服务器提出访问Internet的请求。 代理服务器接受到请求后,首先与访问控制列表中的访问规则相对照,如果满足规则,则在缓存中查找是否存在需要的信息。 如果缓存中存在客户端A需要的信息,则将信息传送给客户端。如果不存在,代理服务器就代替客户端向Internet上的主机请求指定的信息。 Internet上的主机将代理服务器的请求信息发送到代理服务器中,同时代理服务会将信息存入缓存中。 代理服务器将Internet上主机的回应信息传送给客户端A。 客户端B向代理服务器提出相同的请求。 代理服务器也首先与访问控制列表中的访问规则相对照。 如果满足规则,则将缓
3、存中的信息传送给客户端B。,Squid基本概念,Squid基本概念,3、Squid简介Squid是Linux和UNIX平台下最为流行的高性能免费应用层代理服务器,它具有权限管理灵活、性能高和效率快等特点。Squid是一个由众多在互联网上的开发人员共同努力完成的高性能的代理缓冲服务器,它的具体开发是由国家网络应用研究室(the National Laboratory for Applied Network Research)的Duane Wessels主持,由NSF出资支持的。 Squid的另一个优越性在于它使用访问控制列表(ACL)和访问权限列表(ARL)进行权限管理和内容过滤。访问控制清单和
4、访问权限清单通过阻止特定的网络连接来减少潜在的Internet非法连接,可以使用这些清单来确保内部网的主机无法访问有威胁的或不适宜的站点。,1、安装squid软件包 #rpm ivh squid-2.6.STABLE6-4.el5.i386.rpm,Squid代理服务基本配置,2、配置网卡并开启路由功能 设置网卡IP地址:#ifconfig eth0 192.168.8.188 netmask 255.255.255.0 #ifconfig eth1 192.168.0.188 netmask 255.255.255.0 开启内核路由功能:# echo “1“ /proc/sys/net/ip
5、v4/ip_forward,Squid代理服务基本配置,3、配置主配置文件squid.conf #vim /etc/squid/squid.confhttp_port 192.168.8.188:8080 /仅监听内网eth0:192.168.8.188上8080端口的http请求cache_dir ufs /var/spool/squid 10240 16 256/设置硬盘缓存大小为10G,目录为/var/spool/squid,一级子目录16个,二级子目录256个。cache_mem 512 MB /设置高速缓存为512MBcache_swap_low 90 cache_swap_high
6、 95cache_access_log /var/log/squid/access.log /设置访问日志cache_log /var/log/squid/cache.log /设置缓存日志cache_store_log /var/log/squid/store.log /设置网页缓存日志,Squid代理服务基本配置,3、配置主配置文件squid.conf dns_nameservers 202.102.192.68 /设置DNS服务器地址cache_mgr /设置管理员E-mail地址cache_effective_user squid /设置squid进程所有者cache_effecti
7、ve_group squid /设置squid进程所属组visible_hostname 192.168.8.188 /设置squid可见主机名error_directory /usr/share/squid/errors/Simplify_Chinese/客户端错误提示为中文acl list1 src 192.168.0.0/255.255.255.0/设置访问控制列表list1,该表的内容为所有客户端http_access allow list1 /设置允许所有客户端访问,Squid代理服务基本配置,4、初始化squid服务,创建Squid使用硬盘缓冲区的目录结构。#squid z5、检测
8、squid语法#squid -k parse6、启动squid服务#service squid start,Squid代理服务基本配置,Squid代理服务基本配置,7、测试客户端设置,acl选项的格式如下: acl列表名称 列表类型 -i 列表值 列表名称:用于区分Squid的各个访问控制列表,任何两个访问控制列表不能用相同的列表名。虽然列表名称可以随便定义,应尽量使用有意义的名称,如badurl、clientip和work time等。 列表类型:是可被Squid识别的类别。Squid支持的控制类别很多,可以通过IP地址、主机名、MAC地址和用户/密码认证等识别用户,也可以通过域名、域后缀、
9、文件类型、IP地址、端口和URL匹配等控制用户的访问,还可以使用时间区间对用户进行管理 -i:表示忽略列表值的大小写。 列表值:针对不同的类型,列表值的内容是不同的。例如,对于类型为src或dst,列表值的内容是某台主机的IP地址或子网地址;对于类型为time,列表值的内容是时间;对于类型为srcdomain和dstdomain,列表值的内容是DNS域名。,Squid代理服务基本配置,类型选项,Squid代理服务基本配置,Squid代理服务基本配置,Squid会针对客户HTTP请求检查http_access规则,定义访问控制列表后,就使用http_access选项根据访问控制列表允许或禁止访问
10、了。 该选项的基本格式为: http_access allow | deny 访问控制列表名称allow | deny:定义允许(allow)或禁止(deny)访问控制列表定义的内容。访问控制列表名称:需要http_access控制的ACL名称。,访问控制应用实例,例1:禁止IP地址为192.168.16.200的客户机上网。acl badclientip1 src 192.168.16.200http_access deny badclientip1例2:禁止192.168.16.0这个子网里所有的客户机上网。acl badclientnet1 src 192.168.16. 0/255.2
11、55.255.0http_access deny badclientnet1,访问控制应用实例,例3:禁止用户访问IP地址为210.21.118.68的网站。acl badsrvip1 dst 210.21.118.68http_access deny badsrvip1例4:禁止用户访问域名为的网站。acl baddomain1 dstdomain i http_access deny baddomain1例5:禁止用户访问域名包含有的网站。acl badurl1 url_regex i http_access deny badurl1,访问控制应用实例,例6:禁止用户访问域名包含有sex关
12、键字的网站。acl badurl2 url_regex i sexhttp_access deny badurl2例7:限制IP地址为192.168.16.200的客户机并发最大连接数为5。acl clientip1 src 192.168.16.200acl conn1 maxconn 5http_access deny clientip1 conn1,访问控制应用实例,例8:限制192.168.16.0子网所有客户机仅在周一到周五的8:00-18:00上网。acl clientnet1 src 192.168.16.0/255.255.255.0acl worktime time MTWH
13、F 8:30-12:00 14:00-18:00 http_access deny clientnet1 !worktime例9:禁止客户机下载*.mp3,*.exe,*.rar和*.zip类型的文件。acl badfile1 urlpath_regex -i .mp3$ .exe$ .rar$ .zip$http_access deny badfile1例10:禁止内部客户机客户机上QQ。acl denyqq1 url_regex -i http_access deny denyqq1,透明代理,所谓透明代理,就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大
14、方便了系统管理员。相关的选项: httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_user_host_header on 可以用iptables/ipchains直接将对Web端口80的请求直接转发到Squid端口8080,由Squid接手,而用户浏览器仍然认为它访问的是对方的80端口。例如以下这条命令: iptables -t nat -A PREROUTING -s 192.168.16.0/32 -p tcp -dport 80 -j REDIRECT 8080 就是将19
15、2.168.16.0的所有针对80端口的访问重定向到8080端口。,Squid透明代理,1、配置Squid #vi etc/squid/squid.conf http_port 192.168.16.1:8080 cache_mem 512 MB cache_dir ufs /var/spool/squid 4096 16 256 cache_effective_user squid cache_effective_group squid dns_nameservers 202.102.192.68 cache_access_log /var/log/squid/access.log cach
16、e_log /var/log/squid/cache.log cache_store_log /var/log/squid/store.log visible_hostname 192.168.16.1 cache_mgr #以下是实现透明代理的4条语句的关键,缺一不可 httpd_accel_host virtual httpd_accel_port 80 httpd_accel_with_proxy on httpd_accel_uses_host_header on acl all src 192.168.16.0/255.255.255.0 http_access allow all,Squid透明代理,4、初始化squid服务#squid z5、检测squid语法#squid -k parse6、启动squid服务#service squid start7、配置iptables #iptables -t nat -A PREROUTING -i eth0 -p tcp m tcp -dport 80 -j REDIRECT -to-ports 8080 #service iptables save,归纳与总结:,本节课我们主要的讲解了以下内容:代理服务原理Squid代理服务配置Squid透明代理配置,