热门标签 | HotTags
当前位置:  开发笔记 > 前端 > 正文

用Squid实现代理上网及计费

文章标题:用Squid实现代理上网及计费。Linux是中国IT实验室的一个技术频道。包含桌面应用,Linux系统管理,内核研究,嵌入式系统和开源等一些基本分类

  ---- IP紧缺是高速发展的网络面临的现实问题,我们该如何解决这 一问题?将只有内部IP的计算机通过一台具有标准IP作为代理服务器 的计算机连接到Internet上是解决此问题的一种绝妙手段。代理服务 器是数据的中转站,它可以将经过代理服务器的数据记录下来,为后 继的数据分析和计费提供服务与帮助。另外,借助代理服务器软件 (比如Squid)可以建立访问站点的缓存,从而让再次访问的用户能 够直接从缓存中调用数据,加快访问速度,减少重复的网络数据流 量。 
  
  ---- 由于Squid具有权限管理灵活、性能高和效率快等特点,应用较 为广泛,因此,我们将就代理服务器软件Squid在Linux、FreeBSD和 Unix应用中的认证问题进行讨论,同时还将介绍关于利用Squid辅助 软件实现代理上网与计费的具体方法。 
  
  一、 获取Squid及相关的软件 
  ---- 从http://squid-cache.org/上获取Squid软件,从http:// web.onda.com.br/orso/上获取htpasswd_plus和SQMGRLOG,并将它们 保存在/tmp目录下。 
  
  二、在Linux下编译并安装Squid
  ---- 我们假设软件环境为Redhat Linux 7.x,编译和安装Squid的操 作步骤如下。 
  
  ---- 1.下载最新版本的源文件Squid-2.3.STABLE4.src.tar.gz,并 将它放置在/tmp目录下。 
  
  ---- 2.以root身份创建用户squidadmin#adduser squidadmin 
  
  ---- 在缺省的情况下,同名组squidadmin已经被建立。Squid因为考 虑到安全问题,不能以root身份运行,所以从一开始就使用新建的用 户进行安装管理。 
  
  ---- 3.以squidadmin登录,对Squid源文件解包和安装。 
  
  $cd /tmp
  $tar -zxvf squid*
  $cd squid*
  $./configure --prefix=/usr/local/squid 
  进入Squid目录进行编译,考虑的选项是安装路径
  --prefix=/usr/local/squid。
  $make
  $make install
  
  ---- 4.进入/usr/local/squid/bin目录,执行$./squid -z,创建 cache交换目录。至此,Squid已经安装在用户的系统上了。然而,要 让Squid正常运转,用户还需要做一些基本设置。Squid的运转只与/ usr/local/squid/etc/squid.conf有关,所有设置均在此文件中完成。 
  
  三、Squid基本设置 
  #Defaults:
  acl all src 0.0.0.0/0.0.0.0
  设置的规则在此处加入。
  http_access deny all
  
  ---- 在缺省的情况下,有以上2条规则。当有请求未能匹配任何一条 用户定义的规则时,http_access deny all规则将被应用,这 样,http请求将被拒绝。 
  
  ---- 那么如何在Linux中设置Squid的用户认证存取控制呢?Squid用 access control list(缩写为acl)来管理规则。例如: 
  
  acl aclname acltype string1 ...
  acl aclname acltype "file"
  
  ---- aclname为用户定义规则的名字,acltype是可被Squid识别的类 别(主要有src、dst、proxy_auth、port和time...),string为用 户的设置,可以用"file"从外部文件调入设置。 
  
  ---- 1.如果用户喜欢弹出输入用户名及密码的方式,首先需要安装 认证程序。Squid的源文件包自带了几种认证程序,都在/tmp/squid- 2.3.STABLE4/auth_modules目录下。 
  
  (1)$ cd /tmp/squid-2.3.STABLE4/auth_modules/NCSA 
  $ make ncsa_auth
  (2)将生成的执行文件ncsa_auth拷贝到squid执行文件目录中。
  $ cp ncsa_auth /usr/local/squid/bin
  (3)用htpasswd_plus生成供Squid利用的用户名和密码认证数据文 件。
  $htpasswd_plus -c /usr/local/squid/etc/passwd
  passwd的格式如下。
  username1:SilykvIBT46C.:977867617:*
  username2:tV.8XcR8tgIqw:*:192.168.1.0
  username3:密码:失效时间:可以登录的IP
  若为*,则说明任何项都能与其匹配。另外还可以增加其他更多的用 户。
  $ htpasswd_plus /usr/local/squid/etc/passwd newusername
  (4)修改squid.conf设置
  authenticate program /usr/local/squid/bin/ncsa_auth
  /usr/local/squid/etc/passwd指定认证身份的内部程序。添加规则 如下。
  acl alloweduer proxy_auth username1 username2或者
  acl alloweduser proxy_auth REQUIRED http access allow alloweduser
  
  ---- 关键字REQUIRED意味着任何合法的用户都可以认证身份,在其 他的acltype中也起同样的作用。 
  
  ---- 2.用IP限制Squid proxy的使用,设置内容如下。 
  
  acl manager proto HTTP FTP …
  acl safeports port 80 21 443 563 70 210 1025-65535 …
  acl connect method CONNECT
  acl allowedIP src 202.120.x.x/255.255.255.224
  acl denyIP src 202.96.x.x/255.255.255.224
  acl allowedusers proxy_auth REQUIRED
  http_access deny !safeports
  #禁止来自!safeports的HTTP请求。
  http_access deny denyIP
  http_access allow allowedIP
  http_access allow allowedusers
  
  ---- 这样,除了拒绝及允许的IP,其他的请求都将通过输入用户名 及密码来认证。
  如果用户不希望内部计算机访问某些网站(比如暴力 或色情网站),可以通过如下设置屏蔽这些站点。 
  
  ---- acl badip dst "/usr/local/squid/etc/somebadip" 
  
  ---- http_access deny badip 
  
  ---- 此处被拒绝的不是来源src的IP地址,而是目的dst的IP地址。 在文件somebadip中存储如下格式的一批IP地址: 
  
  ---- 24.244.192.0/255.255.240.0 
  
  ---- 61.128.0.0/255.252.0.0 
  
  ---- 请大家特别注意http语句的顺序,正是通过不同的次序,使得 我们可以进行灵活的配置,得到相应的服务。 
  
  ---- 3.其他的一些设置如下所示,其中的大多数可以不做修改,只 使用缺省值即可。 
  
  http port 3128
  #HTTP协议的默认代理端口。
  cache mem 42MB
  #用一块内存作为缓冲。
  cache dir ufs /home/squid/cache 1024 16 256
  
  ---- #硬盘缓冲区的大小,大小为1GB,一级目录16个,二级目录256 个。 
  
  ---- cache access log /var/log/squid/access.log 
  
  ---- #该log文件是用来描述每次客户请求HTTP内容时高速缓存命中 或未命中的项目,同时还描述提出请求的主机身份及它们所需要的内 容,它是用SQMGRLOG等软件分析记费的基础。 
  
  ---- cache log /var/log/squid/cache.log 
  
  ---- #用于描述当Squid守护进程启动时可以看到的内存容量、交换 空间的大小、高速缓存目录的位置、所接受的连接类型以及接受连接 的端口。 
  
  ---- cache_store_log /var/log/squid/store.log 
  
  ---- #用于描述页面从高速缓存中被调入调出的情况。 
  
  pid filename /var/run/squid.pid
  #Squid进程的进程号。
  dns nameservers 192.x.x.1
  #定义域名解析服务器的地址。
  cache_mgr squidadmin@your.domain
  #cache管理员的邮件箱地址。
  reference age 1 week
  #设置缓冲区的更新周期。
  maximum object size 4096 KB
  #设置允许被缓存的一次性最大请求。
  cache_effective_user squidadmin squidadmin
  #以用户squidadmin的身份运行。
  
  四、用SQMGRLOG实现计费 
  $cd /tmp
  $tar -zxvf sqmlog*
  $cd sqm*
  $./configure --enable-cOnfig=/usr/local/squid/
  的选项主要有以下2项。
  
  ---- 1. 语言 
  
  ---- 该语言不包含中文。事实上,它的语言部分是由English.h控制 的,可以汉化后对其进行编译和安装。 
  
  ---- --enable-language=English, Bulgarian_windows1251, Czech, Dutch, French, German, Hungarian, Indonesian, talian, apanese, Portuguese, Russian_Koi8, Russian_windows1251, Serbian, Spanish, Turkish default: English 
  
  ---- 2.安装目录 
  
  ---- --enable-cOnfig=/usr/local/squid/etc 
  
  ---- #笔者将SQMGRLOG的配置文件sqmgrlog.conf 放在与Squid的配 置文件相同的目录下。 
  
  --enable-prefix=/usr/local/squid/bin
  #最终编译生成的运行文件sqmgrlog的放置目录。
  $make
  $make install
  最后,我们还要配置sqmgrlog.conf。
  access log /usr/local/squid/logs/access.log
  #设置Squid的使用记录文件access.log的所在地。
  output dir /home/squidadmin/public_html/squid-reports
  #生成report的输出目录。
  password /usr/local/squid/etc/passwd
  #只生成此passwd文件中指明的用户report。
  $./sqmgrlog
推荐阅读
  • Nginx使用AWStats日志分析的步骤及注意事项
    本文介绍了在Centos7操作系统上使用Nginx和AWStats进行日志分析的步骤和注意事项。通过AWStats可以统计网站的访问量、IP地址、操作系统、浏览器等信息,并提供精确到每月、每日、每小时的数据。在部署AWStats之前需要确认服务器上已经安装了Perl环境,并进行DNS解析。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • 这是原文链接:sendingformdata许多情况下,我们使用表单发送数据到服务器。服务器处理数据并返回响应给用户。这看起来很简单,但是 ... [详细]
  • Centos7.6安装Gitlab教程及注意事项
    本文介绍了在Centos7.6系统下安装Gitlab的详细教程,并提供了一些注意事项。教程包括查看系统版本、安装必要的软件包、配置防火墙等步骤。同时,还强调了使用阿里云服务器时的特殊配置需求,以及建议至少4GB的可用RAM来运行GitLab。 ... [详细]
  • 本文介绍了在Hibernate配置lazy=false时无法加载数据的问题,通过采用OpenSessionInView模式和修改数据库服务器版本解决了该问题。详细描述了问题的出现和解决过程,包括运行环境和数据库的配置信息。 ... [详细]
  • 禁止程序接收鼠标事件的工具_VNC Viewer for Mac(远程桌面工具)免费版
    VNCViewerforMac是一款运行在Mac平台上的远程桌面工具,vncviewermac版可以帮助您使用Mac的键盘和鼠标来控制远程计算机,操作简 ... [详细]
  • 本文详细介绍了Linux中进程控制块PCBtask_struct结构体的结构和作用,包括进程状态、进程号、待处理信号、进程地址空间、调度标志、锁深度、基本时间片、调度策略以及内存管理信息等方面的内容。阅读本文可以更加深入地了解Linux进程管理的原理和机制。 ... [详细]
  • 图解redis的持久化存储机制RDB和AOF的原理和优缺点
    本文通过图解的方式介绍了redis的持久化存储机制RDB和AOF的原理和优缺点。RDB是将redis内存中的数据保存为快照文件,恢复速度较快但不支持拉链式快照。AOF是将操作日志保存到磁盘,实时存储数据但恢复速度较慢。文章详细分析了两种机制的优缺点,帮助读者更好地理解redis的持久化存储策略。 ... [详细]
  • Linux服务器密码过期策略、登录次数限制、私钥登录等配置方法
    本文介绍了在Linux服务器上进行密码过期策略、登录次数限制、私钥登录等配置的方法。通过修改配置文件中的参数,可以设置密码的有效期、最小间隔时间、最小长度,并在密码过期前进行提示。同时还介绍了如何进行公钥登录和修改默认账户用户名的操作。详细步骤和注意事项可参考本文内容。 ... [详细]
  • Metasploit攻击渗透实践
    本文介绍了Metasploit攻击渗透实践的内容和要求,包括主动攻击、针对浏览器和客户端的攻击,以及成功应用辅助模块的实践过程。其中涉及使用Hydra在不知道密码的情况下攻击metsploit2靶机获取密码,以及攻击浏览器中的tomcat服务的具体步骤。同时还讲解了爆破密码的方法和设置攻击目标主机的相关参数。 ... [详细]
  • 本文介绍了在SpringBoot中集成thymeleaf前端模版的配置步骤,包括在application.properties配置文件中添加thymeleaf的配置信息,引入thymeleaf的jar包,以及创建PageController并添加index方法。 ... [详细]
  • 知识图谱——机器大脑中的知识库
    本文介绍了知识图谱在机器大脑中的应用,以及搜索引擎在知识图谱方面的发展。以谷歌知识图谱为例,说明了知识图谱的智能化特点。通过搜索引擎用户可以获取更加智能化的答案,如搜索关键词"Marie Curie",会得到居里夫人的详细信息以及与之相关的历史人物。知识图谱的出现引起了搜索引擎行业的变革,不仅美国的微软必应,中国的百度、搜狗等搜索引擎公司也纷纷推出了自己的知识图谱。 ... [详细]
  • 本文讲述了作者通过点火测试男友的性格和承受能力,以考验婚姻问题。作者故意不安慰男友并再次点火,观察他的反应。这个行为是善意的玩人,旨在了解男友的性格和避免婚姻问题。 ... [详细]
  • 1,关于死锁的理解死锁,我们可以简单的理解为是两个线程同时使用同一资源,两个线程又得不到相应的资源而造成永无相互等待的情况。 2,模拟死锁背景介绍:我们创建一个朋友 ... [详细]
  • 本文介绍了在Linux下安装Perl的步骤,并提供了一个简单的Perl程序示例。同时,还展示了运行该程序的结果。 ... [详细]
author-avatar
星宿1970_219
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有