Squid服务基础及构建代理服务器

1.1 Squid服务基础

1.1.1 缓存代理概述

Squid:应用层的代理服务软件,主要提供缓存加速、应用层过滤控制的能

1.代理的工作机制:

当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,如果缓存中已经有客户机需呀的页面,则直接将缓存中的页面内容反馈给客户机;如果缓存中没有客户机要的访问页面,则由代理服务器向internet发送请求,当获得返回的web页面以后,将网页数据保存到缓存中并发送给客户机,如下图所示。

2.代理的基本类型

传统代理:也就是普通的代理服务器,首先必须在客户机的浏览器、QQ聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理来访问网络。

透明代理:提供与传统代理相同的功能和服务,其区别在于客户机不需要指定代理服务器的地址和端口,而是通过默认路由,防火墙策略将web访问重定向,实际仍然交给代理服务器来处理。

1.1.2 安装及运行控制

下面以Squid 3.4.6版为例,介绍其安装和运行控制。

1.编译安装Squid

[[email protected] ~]# tar -zxvf squid-3.4.6.tar.gz -C /usr/src/  #将squid解压到/usr/src/

[[email protected] ~]# cd /usr/local/squid/                       #到squid目录

[[email protected] squid-3.4.6]#  ./configure --prefix=/usr/local/squid \ #安装目录

-sysconfdir=/etc  \        #单独将配置文件修改到其他目录

--enable-arp-acl   \        #可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗

--enable-linux-netfilter \  #使用内核过滤

--enable-linux-tproxy  \    #支持透明模式

--enable-async-io=100    \  #异步I/O,提升存储性能,相当于--enable-pthreads

--enable-err-language="Simplify_Chinese"  \ #错误信息的提示语言

--enable-underscore    \     #允许URL中有下划线

--enable-poll       \        #使用Poll()模式,提升性能

--enable-gnuregex  \         #使用GNU正则表达式

[[email protected] squid-3.4.6]# make  && make  install

安装完成后,创建连接文件,创建用户和组

[[email protected] ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/

[[email protected] ~]#useradd -M -s /sbin/nologin squid

[[email protected] ~]#chown -R squid:squid /usr/local/squid/var/

2.Squid的配置文件

Squid服务的配置文件位于/etc/squid.conf,充分了解配置行的作用将有助于管理员根据实际情况灵活配置代理服务.更详细的配置项请参考/etc/squid.conf.documented文件

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

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost manager

http_access deny manager

http_access allow localnet

http_access allow localhost

http_access deny all

http_port 3128                     #用来指定代理服务监听的地址和端口(默认的端口号为3128)

cache_effective_user    squid       #指定squid的程序用户,用来设置初始化、运行时缓存的账号

cache_effective_group   squid       #默认为cache_effective_user指定账号的基本组

coredump_dir /usr/local/squid/var/cache/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.Squid的运行控制

1)检查配置文件语法是否正确

[[email protected] ~]# squid -k parse

2)启动.停止Squid

第一你启动squid服务时,会自动初始化缓存目录。在没有可用的squid服务脚本的情况下,也可以直接调用squid程序来启动服务,这是需要先进性初始化。

[[email protected] ~]# squid -z      #  -z选项用来初始化缓存目录

[[email protected] ~]# squid         #  启动squid服务

确认Squid服务处于监听状态。

[[email protected] ~]# netstat -uptln |grep squid

tcp        0      0 192.168.1.1:3128            0.0.0.0:*                   LISTEN

1.2 构建代理服务器

1.2.1 传统代理

1.Squid服务器的配置

1)修改squid.conf配置文件

[[email protected] ~]# vim /etc/squid.conf

http_access allow all   #添加此行,在deny上面

http_access deny all

http_port 3128

cache_effective_user squid  #初始化、运行时缓存的账号,否则启动不成功

cache_effective_group squid

:wq

2)在防火墙上添加加允许策略

[[email protected] ~]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT

[[email protected] ~]# /etc/init.d/iptables save

3)重载squid服务

[[email protected] ~]# squid reload

2.客户机的代理配置

打开网页测试

1.2.2 透明代理

1.相关网络配置

[[email protected] ~]# vim -O /etc/sysconfig/network-scripts/ifcfg-eth{0,1}

DEVICE=eth0                          |DEVICE=eth1

HWADDR=00:0C:29:d1:00:1e             |HWADDR=00:0C:29:d1:00:28

TYPE=Ethernet                        |TYPE=Ethernet

ONBOOT=yes                           |ONBOOT=yes

NM_CONTROLLED=no                     |NM_CONTROLLED=no

BOOTPROTO=static                     |BOOTPROTO=static

IPADDR=192.168.19.99                 |IPADDR=192.168.1.1

NETMASK=255.255.255.0                |NETMASK=255.255.255.0

GATEWAY=192.168.19.1                 |DNS1=192.168.3.5

DNS1=192.168.3.5

2.配置linux网关/Squid代理服务

1)清空已有的防火墙规则,打开IP转发

[[email protected] ~]# /etc/init.d/iptables stop

[[email protected] ~]# setenforce 0

[[email protected] ~]# vim /etc/sysctl.conf

net.ipv4.ip_forward = 1

:wq

[[email protected] ~]# sysctl -p

2)添加snat策略实现共享上网

[[email protected] ~]# iptables -t nat -I POSTROUTING -o eth1 -s 192.168.1.0/24 -j SNAT --to-source 192.168.19.99

3)修改squid.conf配置文件

[[email protected] ~]# vim /etc/squid.conf

http_port 192.168.1.1:3128 transparent

cache_effective_user squid

cache_effective_group squid

visible_hostname gateway.linuxfan.cn

:wq

检查配置文件语法是否正确

[[email protected] ~]# squid -k parse

初始化缓存目录

[[email protected] ~]# vim /etc/squid.conf

cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256

[[email protected] ~]# squid -z

4)添加REDIRECT策略支持透明代理

[[email protected] ~]# iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

[[email protected] ~]# iptables -t nat -I PREROUTING -i eth1 -s 192.168.1.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

3.验证透明代理

4.ACL访问控制

1)定义访问控制列表

[[email protected] ~]# vim /etc/squid.conf

acl localhost src 127.0.0.1/255.255.255.255  #源地址位127.0.0.1

acl MYLAN src 192.168.1.0/24 192.168.4.0/24  #客户机网段

acl to_localhost dst 127.0.0.0/8             #目标地址为127.0.0.0/8网段

acl MC20 maxconn 20                          #最大并发连接20

acl BlackURl url_regex -i ^rtsp:// ^emule:// #以rtsp://等开头的url

acl MEDIAFILE urlpath_regex -i \.mp3$ \.mp4$ \.rmvb$ #以.mp3 .mp4 .rmvb结尾的url

acl WORKTIME time MTWHF 08:30-17:30           #时间为周一至周五8:30-17:30

:wq

2)设置访问权限

http_access deny MYLAN MEDIAFILE              #禁止下载MP4,MP3等文件

http_access deny MYLAN IPBLOCK                #禁止访问黑名单中的地址

http_access deny MYLAN DMBLOCK                #禁止访问黑名单的地址域

http_access deny MYLAN MC20                   #客户机的最大并发连接20

http_access deny MYLAN WORKTIME               #允许客户机在工作时间上网

http_access deny all                          #默认策略禁止任何客户机使用代理服务

时间: 2024-08-05 02:27:13

Squid服务基础及构建代理服务器的相关文章

squid服务之配置透明代理

透明代理提供的服务功能与传统代理时一致的,但是其"透明"的实现依赖于默认路由和防火墙的重定向策略,因此更适用于局域网主机服务,而不适合Internet中. 网络环境如下: 项目大概流程如下: 在Linux网关上,构建squid为客户机访问Internet提供代理服务. 在局域网所有的客户机上,只需有正确的IP地址.默认网关和DNS,不需要手动指定代理服务器的地址.端口等信息(若指定了反而易出错).关于客户机的DNS解析工作,最好还是通过正常的DNS服务器来提供,不建议抛给代理服务器来处

如何使用Squid服务来构建=》传统和透明代理服务器,通俗易懂!

1.缓存代理概述: 作为应用层的代理服务软件,Squid主要提供缓存加速和应用层过滤控制的功能 2.代理的工作机制: (1)当客户机通过代理来请求web页面时,指定的代理服务器会先检查自己的缓存,若缓存中已有需访问页面,则直接将缓存中的页面内容反馈给客户机 (2)若缓存中没有所需页面,则代理服务器向Internet发送访问请求,当获得返回的web页面后,将网页数据保存到缓存中并发送给客户机 3.代理的基本类型: (1)传统代理: 需手动设置代理服务器的地址和端口,多见于Internet环境 (2

squid构建代理服务器

编译安装squid: tar xvf squid-3.5.25-20170408-r14154.tar.gz -C /usr/src/ #解压 cd /usr/src/ ./configure --prefix=/usr/local/squid --enable-async-io=160 --enable-epoll --enable-linux-netfilter --enable-stacktraces --enable-gunregex --enable-linux-tproxy --en

linux基础服务器架设squid(一)普通代理服务器!

一.简介 代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可以向Squid 发出一个申请,要Squid 代替其进行下载,然后Squid 连接所申请网站并请求该主页,接着把该主页传给用户同时保留一个备份,当别的用户申请同样的页面时,Squid 把保存的备份立即传给用户,使用户觉得速度相当快.Squid 可以代理HTTP.FTP.GOPH

Squid-4.1(最新)安装及构建代理服务器

Squid-4.1(最新)安装及构建代理服务器 缓存代理简介 Squid作为应用层代理服务软件,主要提供缓存加速和应用层过滤控制的功能.本次实验使用的是Squid 4.1版本,和以往版本有较多不同,经过几天的摸索,终于成功实现了传统代理.透明代理及反向代理等功能. 代理的工作机制 代理服务器(Proxy Server)是个人网络和Internet服务商之间的中间代理机构,负责转发合法的网络信息,对转发进行控制和登记.其最基本的功能就是连接,此外还包括安全性.缓存,内容过滤,访问控制管理等功能.当

Linux 之squid 服务应用

Squid是什么 Squid是比较知名的代理软件,它不仅可以跑在linux上还可以跑在windows以及Unix上,它的技术已经非常成熟.目前使用Squid的用户也是十分广泛的.Squid与Linux下其它的代理软件如Apache.Socks.TIS FWTK和delegate相比,下载安装简单,配置简单灵活,支持缓存和多种协议. Squid之所以用的很多,是因为它的缓存功能,Squid缓存不仅可以节省宝贵的带宽资源,也可以大大降低服务器的I/O. 从经济角度考虑,它是很多网站架构中不可或缺的角

Java远程过程调用基础:构建可自适应的动态代理对象的通用方法

[toc] Java远程过程调用基础:构建可自适应的动态代理对象的通用方法 前言 关于动态代理的知识,这里不再过多说明.这里要介绍的是,如何创建一个可自适应任意接口的动态代理对象的通用方法,也就是说,引用对象可为任意接口,举个例子,假如返回动态代理对象的方法是getProxy,而同时存在两个接口UserInterface和ProductInterface,这时可以这样使用: UserInterface user = getProxy(UserInterface.class); ProductIn

linux web服务基础知识,dns

Web服务基础 用户访问网站的基本流程 我们每天都会用web客户端上网,浏览器就是一个web客户端,例如谷歌浏览器,以及火狐浏览器等. 当我们输入www.oldboyedu.com/时候,很快就能看到老男孩教育的官网了,这一切看起来很平淡无奇,背后又是什么道理呢?普通人可以不知道,但是咱们作为it开发人员,必须得掌握清楚背后的技术. 下面超哥为你揭晓用户访问网站的基本流程 老男孩教育某python总监,讲了一天课感觉很累,下了班躺床上打开他的macbook pro,双击浏览器,输入www.por

微服务基础概念认知总结

由于从未使用过Spring Cloud.Dubbo等微服务框架,所以只能不断地从微服务基础知识出发,不让自己局限于某一种工具框架上.以下知识摘自一些自己看过的微服务相关的书上,还有一些自己对微服务的理解. 单体应用存在的问题 复杂性高 单体应用项目包含的模块非常多.模块的边界模糊.依赖关系不清楚.代码质量层次不齐.混乱地堆砌在一起.每次修复BUG或者新增功能,涉及的部分比较多,存在着隐含的缺陷,有可能一小部分的改变会影响到其他功能. 技术债务 虽然时间的推移.需求变更和人员的更迭,会逐渐形成应用