一、安装Squid代理服务器
#yum -y install squid
1、启动Squid服务和设置开机启动
#systemctl start squid
#systemctl enable squid
2、详解Squid服务器配置文件
默认的/etc/squid/squid.conf文件内容和文件结构如下,该文件由访问控制列表、参数设置和刷新模式三部分组成,更详细的内容可以参考**/usr/share/doc/squid-*/squid.conf.documented模板文件**
[root@fl ~]# more /etc/squid/squid.conf
第一部分:访问控制列表
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
acl localnet src fc00::/7 # RFC 4193 local private network range
acl localnet src fe80::/10 # RFC 4291 link-local (directly plugged) machines
acl SSL_ports port 443
acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http
acl CONNECT method CONNECT
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
#http_access deny to_localhost
http_access allow localnet
http_access allow localhost
http_access deny all
第二部分:参数设置
http_port 128
#cache_dir ufs /var/spool/squid 100 16 256
coredump_dir /var/spool/squid
第三部分:刷新条目
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern . 0 20% 4320
3、介绍/etc/squid/squid.conf文件中可添加和修改的主要参数,以下内容为添加、修改内容,
仅作为参考,不作为修改内容,此处仅作介绍,可直接跳过此步骤
1)网络设置
#vi /etc/squid/squid.conf
第59行
添加如下内容:
icp_port 3130 //设置Squid发送/接受ICP查询时使用的端口
htcp_port 4827 //设置Squid发送/接收HTCP查询时使用的端口
2)临近代理设置
cache_peer 192.168.100.20 parent 3128 3130 no-digest no-netdb-exchange //表示指定其他代理服务器,192.168.100.20为上层服务器,http_port为3128,icp_port为3130,不发出建立摘要表的请求,不交换管理信息
cache_peer_access example.com allow aclcom //表示用不通的代理服务器获取特定的目标资源,使用example.com服务器去访问aclcom中定义的目标主机资源,这里的aclcom为用户自定义的ACL名称
3)缓存设置
cache_mem 256 MB //设置缓存区大小,一般为实际内存的1/3。
cache_dir ufs /var/spool/squid 100 16 256 //设置磁盘缓存目录和大小,ufs表示缓存格式,/var/spool/squid表示目录缓存,100表示磁盘缓存容量100MB,16表示最大16个二级子目录,256表示每个二级子目录最大有256个三级子目录
cache_swap_high 95 //设置最高缓存百分比,当实际缓存超过cache_swap_hig设置的百分比时,服务器会开始删除缓存直到百分比下降到cache_swap_low的设定值
cache_swap_low 90 //设置最高缓存百分比,当实际缓存超过cache_swap_hig设置的百分比时,服务器会开始删除缓存数据,直至容量达到cache_mem容量的90%
maxi mum_object_size 4096 KB //设置能缓存的最大单个文件的大小
maximum_object_size_in_memory 8 KB //在内存中单个文件最大缓存大小,超过这个大小将不缓存到内存中
ipcache_size 1024 //设置IP地址的最大缓存大小
fqdncache_size 1024 //设置完全合格的域名的最大缓存大小
4)日志文件名设置
cache_log /var/log/squid/cache.log //设置缓存日志文件路径,它记录服务器启动,关闭以及系统相关信息
cache_store_log /var/log/squid/store.log //网页缓存日志文件路径,记录了网页在缓存中的调用情况
access_log /var/log/squid/access.log //设置访问日志文件路径,记录了用户访问Internet的详细信息,可以查看每个用户的上网记录,格式由logformat参数指定
pid_filename /var/run/squid.pid //设置将squid的进程号记录在哪个文件中
5)认证设置
auth_param basic children 5 //设置鉴权程序的进程数
auth_param basic realm Squid proxy-caching web server //定义Web浏览器显示认证对话框时的领域名称,即用户输入用户名密码时看到的提示信息
auth_param basic credentialsttl 2 hours //用户通过认证后的有效时间,超出则必须重新认证
auth_param basic casesensitive off //用户名是否需要匹配大小
acl ncsa_users proxy_auth REQUIRED //所有成功鉴权的用户都归于ncsa_users组。
http_access allow nsca_uesrs //允许ncsa_users组的用户使用Proxy
auth_param basic program /usr/lib/squid/ncsa_auth /etc/squid/squid_passwd //指定密码文件和用来验证密码的程序
6)禁止缓存
hierarchy_stoplist cgi-bin ? //出现cgi-bin或者?的URL不予缓存
hierarchy_stoplist -i ^https://?
acl QYERY urlpath_regex -i cgi-bin /? /.asp /.php /.jsp /.cgi
acl denyssl urlpath_regex -i ^https://
no_cache deny QUERY
no_cache deny denyssl
以上几条设置遇到URL中包换有cgi-bin和以https://开头的都不要缓存,asp\cgi\php\等动态脚本也不要缓存,。https://开头的不缓存是因为一般我们进行电子商务交易,例如银行付款等都是采用这个,如果把信用卡号等进行缓存是十分危险的!
7)超时设置
connect_timeout 1 minute //设置连接超时时间
peer_connect_timeout 30 seconds //设置与上层服务器之间的连接超市时间。
request_timeout 5 minutes //设置建立连接后请求的超时时间
persistent_request_timeout 1 minute //设置持续请求的超时时间
4、详解Squid访问控制列表(ACL)
1)内容格式
Squid服务支持访问控制,可以控制客户是否能够连接,以及连接后可以使用的资源,使用acl命令对不通性质的客户进行分类赋予名称,然后使用http_access命令对某一类客户实施允许还是拒绝的操作,下面给出Squid访问控制列表的内容格式,其中类型如下表1所示,时间表示方法如表2所示,匹配模式如表3所示,参数-i 使Squid不区分大小写:
acl ACL名称 ACL类型 [-i] 值|文件
http_access allow|deny ACL名称
二、配置正向代理服务器
1、Squid服务器与客户端网卡设置
2、规划代理服务器参数
项目要求:
在公司内部配置一台Squid服务器,为公司网络内的用户提供代理上网服务,具体参数如下表所示
1、编辑服务器配置文件
#vi /etc/squid/squid.conf
修改以添加如下内容:
修改并添加
添加acl规则,允许192.168.100.0/24访问,并将 192.168.0.0/16这行注释掉
http_port 3128 //此处为修改内容,第59行
cache_mem 512 MB
cache_dir ufs /var/spool/squid 20480 16 256
cache_log /var/log/squid/cache.log
cache_store_log /var/log/squid/store.log
cache_access_log /var/log/squid/access.log
cache_mgr root@fl.com
cache_effective_user squid
cache_effective_group squid
dns_nameservers 8.8.8.8
visible_hostname prox.fl.com
2、重启squid服务器
#systemctl restart squid
3、打开内核转发功能
编辑文件/etc/sysctl.conf,添加如下内容
net.ipv4.ip_forward=1
生效配置
#sysctl -p
4、本机测试Squid服务
#curl -x 192.168.100.10:3128 www.baidu.com //注意此处192.168.200.20为外网网卡
停止squid服务再次测试
#systemctl stop squid
#curl -x 192.168.100.20:3128 www.baidu.com
5、配置Squid客户端
1)标准正向代理
当Squid服务程序顺利启动后,默认即可使用标准正向代理模式,在此模式下,Windows客户端只需设置IP地址和子网掩码即可,网关和DNS可不设置。在Win7中打开浏览器,依次单击”工具”,”Internet选项”,在“Internet选项”对话框中单击,“连接”,“局域网设置”,“局域网设置”对话框,填写Squid服务器的IP地址和端口号,然后尝试访问互联网网站
先确保您的Squid服务已重新启动
设置Win7的VM1的IP地址
2)透明正向代理(此处仅作介绍,并不演示)
Linux网关提供透明代理服务,局域网可以通过透明代理访问Internet中的网站,在使用透明正向代理服务器时,无需在修改客户端的浏览器选项,但必须将客户端的网关IP指向Squid服务器,可不设置DNS,然后尝试访问互联网网站,会发现失败,无法解析目标主机域名,原来Squid服务程序是不支持DNS解析代理的,这个就需要配置SNAT