Squid是一个缓存 Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据。当一个用户想要下载一个主页时,可以向 Squid 发出一个申请,要 Squid 代替其进行下载,然后 Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户。
按照代理类型的不同,可以将 Squid 代理分为正向代理和反向代理,正向代理中,根据实现方式的不同,又可以分为标准代理和透明代理。
1.标准的代理缓冲服务器
一个标准的代理缓冲服务被用于缓存静态的网页(例如:html文件和图片文件等)到本地网络上的一台主机上(即代理服务器)。当被缓存的页面被第二次访问的时候,浏览器将直接从本地代理服务器那里请求数据而不再向原web站点请求数据。这样就节省了宝贵的网络带宽,而且提高了访问速度。但是,要想实现这种方式,必须在每一个内部主机的浏览器上明确指明代理服务器的IP地址和端口号。客户端上网时,每次都把请求送给代理服务器处理,代理服务器根据请求确定是否连接到远程web服务器获取数据。如果在本地缓冲区有目标文件,则直接将文件传给用户即可。如果没有的话则先取回文件,先在本地保存一份缓冲,然后将文件发给客户端浏览器。
2.透明代理缓冲服务器
透明代理缓冲服务和标准代理服务器的功能完全相同。但是,代理操作对客户端的浏览器是透明的(即不需指明代理服务器的IP和端口)。透明代理服务器阻断网络通信,并且过滤出访问外部的HTTP(80端口)流量。如果客户端的请求在本地有缓冲则将缓冲的数据直接发给用户,如果在本地没有缓冲则向远程web服务器发出请求,其余操作和标准的代理服务器完全相同。对于Linux操作系统来说,透明代理使用Iptables或者Ipchains实现。因为不需要对浏览器作任何设置,所以,透明代理对于ISP(Internet服务器提供商)特别有用。
3.反向代理缓冲服务器
反向代理是和前两种代理完全不同的一种代理服务。使用它可以降低原始WEB服务器的负载。反向代理服务器承担了对原始WEB服务器的静态页面的请求,防止原始服务器过载。它位于本地WEB服务器和Internet之间,处理所有对WEB服务器的请求,阻止了WEB服务器和Internet的直接通信。如果互联网用户请求的页面在代理服务器上有缓冲的话,代理服务器直接将缓冲内容发送给用户。如果没有缓冲则先向WEB服务器发出请求,取回数据,本地缓存后再发送给用户。这种方式通过降低了向WEB服务器的请求数从而降低了WEB服务器的负载。
可以看一下这篇文章:图解正向代理、反向代理、透明代理,有助于你搞清代理的概念。
在pfsense中,使用较多的是Squid透明代理。本教程将告诉你如何在pfSense 2.33上设置Squid透明代理。本例中Squid的版本号为3.5.24_2 。
安装Squid
- 导航到System > Package Manager(插件管理)。
- 单击Available Packages(可用插件)选项卡。
- 向下翻页找到squid。
- 单击 ‘+’ 进行安装。
Squid GeneralSettings(常规设置)
- 导航到 Services > Squid Proxy Server > General选项卡
- Enable Squid Proxy(启用Squid代理)-Check toenable(设置为启用)
- Keep Settings/Data(保留设置/数据)-如果不想在删除Squid后,还保留大量的缓存数据,建议不选择。
- Proxy Interface(代理接口)-选择LAN 。
- Allow Users on Interface-如果选中,连接到“Proxy Interface(代理接口)”字段中选择的接口的用户将被允许使用该代理。不需要将接口的子网添加到允许的子网列表中。
- 其他设置可以使用默认值。
TransparentProxy Setting(透明代理设置)
- Transparent HTTP Proxy(透明代理)-Check to enable(设置为启用),启用后目标端口80的所有请求将转发到代理服务器。
- Transparent Proxy Interface(透明代理接口)-选择LAN。
- Bypass Proxy for Private Address Destination(旁路代理私人地址目的地)-必须选上,不然上不了网(虚拟机中测试)。(如果不设置,会有错误提示:您所请求的网址(URL)无法获取)。
- 其他设置默认。
LoggingSettings(日志设置)
可以不设置(特别在硬盘容量不足的时候)!
- Enable Access Logging(启用访问日志)-Check toenable(设置为启用)。
- Log Store Directory(日志保存目录)-通常不需要更改目录,因此保持默认值就足够了。如果确实需要更改路径,请记住不要在路径末尾添加“/”。
- RotateLogs(日志轮流)-定义将保留多少天的日志文件。如果不设置,则一直保存。
- 其他采用默认值。
HeadersHandling, Language and Other Customizations(标题处理,语言和其他设置)
- Visible Hostname(可见主机名)-如果代理服务器显示任何错误,这将显示在客户端计算机上。可以保持与pfSense服务器的主机名相同的名称。
- Administrator’s Email (管理员邮箱)–如果发生错误,这也将显示在客户机上。
- Error Language (错误提示语言)-选择在客户端出现错误信息时显示的语言。
- 其它选项保持默认就可以了。
Squid HardDisk Cache Settings(硬盘缓存设置)
- 单击Local Cache选项卡, 向下翻页找到Squid Hard Disk Cache Settings
- Hard Disk Cache Size(硬盘缓存大小)-分配给Squid的最大硬盘缓存。建议将数值设置在4GB以上。
- Hard Disk Cache System(硬盘缓存系统)-建议默认设置。
- Level 1 Directories(一级目录)-指定硬盘缓存1级目录的数量。最多可以设置256个。目录越多,启动越慢,但在特定条件下可以加快缓存速度。
- Hard Disk Cache Location(硬盘缓存位置)-如果硬盘足够存储在“硬盘缓存大小”中指定的缓存大小,请保持默认设置。 如果没有,请选择另外存储的路径,并记住不要在文件路径的末尾添加“/”。
- Minimum Object Size(最小对像大小)-小于指定大小的对象(以KB为单位)不会保存在磁盘上。默认值:0(表示没有最小值)建议默认值。
- Maximum Object Size(最大对像大小)-大于指定大小的对象(以MB为单位)不会保存在磁盘上。 默认值:4(MB)。提示:如果增加的速度比节省带宽更重要,则应将其设置为较低的值。建议默认值。
Squid MemoryCache Settings(内存缓存设置)
- Memory Cache Size(内存缓存大小)-可以为Squid设置缓存的内存越多,缓存过程就越快。建议使用2GB以上。 但不要超过总内存的50%。
- Maximum Object Size in RAM(RAM中的最大对象大小)- 高于分配大小的对象不会存储在内存缓存中。建议使用默认值(256 KB)。
- Memory Replacement Policy(内存替换策略)-确定在需要存储空间时从内存中清除哪些对象。建议默认heap GDSF。
Squid AccessControl Lists(访问控制列表)
根据需要进行设置!
- 单击ACLs选项卡。
- Allowed Subnets (允许的子网)–输入以CIDR格式(192.168.111.0/24) 允许使用代理的子网。每个条目一行。如果在“SquidGeneral Settings(常规设置)”选项卡上选中了“AllowUsers on Interface(允许接口用户)”时,则无需将“代理接口”子网添加到此列表中。
- 其他设置保证默认就行了。
经过以上设置Squid代理已经正常运行。
如果出现访问网站解析时间过长的问题,还要把DNS解析打开。
以上就是一个基本的Squid透明代理的配置过程。Squid 3.5.24_2 的功能非常多,其他更复杂的配置请自行研究!
视频教程请点击。