Squid代理服务器安装
- 代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:
)
客户机向代理服务器发起访问互联网的请求)
代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。)
代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。)
如果没有找到数据缓存,则代替客户机在互联网上发起请求。)
接到请求回应后复制一份到缓存中,然后返回给客户机。 - 2
编译安装首先到官方网站下载源码包:http://www.squid-cache.org/
接着就是编译的一套流程了,指定安装目录和配置文件路径和开启各选择
# tar xf squid.tar.bz2
# cd squid
# ./configure --prefix=/usr/local/squid \
--sysconfdir=/etc/squid --enable-gnuregex \
--disable-carp --enable-async-io=240 \
--with-pthreads --enable-storeio=ufs,aufs,diskd \
--disable-wccp --enable-icmp \
--enable-kill-parent-hack \
--enable-cachemgr-hostname=localhost \
--enable-default-err-language=Simplify_Chinese \
--with-maxfd=65535 --enable-poll \
--enable-linux-netfilter --enable-large-cache-files \
--disable-ident-lookups \
--enable-default-hostsfile=/etc/hosts --with-dl \
--with-large-files --enable-delay-pools \
--enable-snmp --disable-internal-dns \
--enable-underscore --enable-arp-acl
# make && make install
还有一项必须注意的是关闭SElinux,当初就是卡在SElinux上好长时间,不关闭的话无法启动服务。这里先临时关闭。永久关闭可以修改配置文件:" /etc/selinux/config ",改为SELINUX=disabled,重启生效
# setenforce 0
软件源安装:
# yum install squid
- 创建运行用户和组
# groupadd squid
# useradd -M -s /sbin/nologin -g squid squid
我们把缓存目录放在" /data/cache "中,所以要先建立目录
# mkdir /data/cache -pv
更改数据目录和安装目录的属组属主
# chown squid:squid /data -R
# chown squid:squid /usr/local/squid/ -R
- Squid 的配置文件是 " /etc/squid/squid.conf " ,我们先了解下各项配置的意义
http_port [hostname:]port 设定服务监听的IP地址和端口,IP为可选项
cache_mem 设置需要多少物理内存做代理服务器的缓存,默认8MB。如果服务器上还有其他服务在允许,建议不超过物理内存的三分之一
。还有一点需要注意的是数值和单位之间一定要有空格,否则你会遇到一个很纠结的问题,例如:cache_mem 512 MB , 512和MB之间一定要有空格minimum_object_size 设置最小接收的对象的大小,小于该值就不被保存进缓存,默认为0KB,不限制
maximum_object_size 设置最大接收对象的大小,大于该值不被保存,默认为4096KB
cache_dir 设置磁盘缓存的位置和大小,格式为:cache_dir aufs 目录位置 大小(MB) 一级子目录数量 二级子目录数量
,例如:cache_dir aufs /data/cache 1024 16 256 - cache_effective_user 指定Squid进程和缓存使用的用户
cache_effective_group 指定Squid进程和缓存使用的组
dns_nameservers Squid所使用的DNS服务器,该选项会覆盖本地配置的DNS服务器。多个DNS服务器用空格隔开
visible_hostname 指定运行Squid的主机名称
cache_mgr 指定Squid系统管理员的邮箱地址
access_log 该选项定义的文件记录客户端每一次HTTP或TCP请求的日志。
cache_store_log 记录哪些对象被被保存进缓存和被拒绝
cache_log 一般日志的记录位置
debug_options 定义一般日志的详细程度,ALL表示全方面,1-9表示级别:debug_options ALL,1 ,推荐默认值即可
pid_filename 指定保存pid文件的位置
log_fqdn 定义Squid记录客户端地址的方式,on 记录完整域名, off 记录IP地址,启用后会调用DNS解析,降低性能,推荐off
acl 重头戏,用于定义访问控制列表,可被http_access、icp_access等选项进行引用。用法是 acl 列表名称 列表类型 -i 列表值,-i 为不区分大小写
http_access 定义是允许还是拒绝acl中定义的列表,用法:http_access allow | deny [!]aclname ... ,!是非的意思
- 接下来对配置文件稍作修改,然后把他启动起来。服务默认端口是" 3128 ",运行用户是nobody,我们设置用户为squid,缓存目录为/data/cache,物理内存缓存使用64 MB,之后执行建立缓存目录,停止后回车退出
# /usr/local/squid/sbin/squid -z
端口呢?
# /usr/local/squid/sbin/squid
# netstat -anpt | grep squid
yum安装的直接 service squid start 就可以启动了
下面贴出完整配置:
http_port 3128 transparent
acl manager proto cache_object
acl localhost src 127.0.0.1/32 ::1
acl to_localhost dst 127.0.0.0/8 0.0.0.0/32 ::1
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 SSL_ports port 443
acl Safe_ports port 80 8080 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl CONNECT method CONNECT
http_access allow manager localhost
http_access deny manager
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localnet
http_access allow localhost
http_access allow all
cache_effective_user squid
cache_effective_group squid
cache_dir aufs /data/cache 1024 16 256
cache_mem 64 MB
hierarchy_stoplist cgi-bin ?
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 \.(jpg|png|gif|mp3|xml) 1440 50% 2880 ignore-reload
refresh_pattern . 0 20% 4320
秒的时间等待断掉所有连接。也可以直接squid -k kill来直接关闭
- 默认是允许代理所有网络的,需要在需要代理的主机上配置代理服务器的IP和端口号,Windows下:IE浏览器 --> Internet选项 --> 连接 --> 局域网设置 --> 设置代理服务器的IP和端口。Linux下可以直接使用 curl 命令进行测试,通过状态返回值来判定。使用 -x 选项为curl设置代理, -I 查看返回值,例如:
# curl -I -x 10.0.0.2:3128 www.xxxx.com
通过 10.0.0.2:3128 来打开某某某网址
- 配置透明代理:
我们要为主机配置代理上网的话,就必须要去设置,这样很不利于控制和管理主机。比如我们限制了主机不能登QQ,不能访问某网址,或者只能访问某网址,结果这些主机都不设置代理上网,那功夫岂不是白费了。其实我们可以利用iptables和将代理服务器作为网关的方式让主机不知不觉中就使用代理上网,这就是Squid的透明代理。将主机发往网关数据包的目标地址端口转发到 3128 也就是Squid服务器的监听端口,这样就实现了主机不设置代理服务器也通过代理服务器上网
修改配置文件:http_port 3128 transparent
打开内核路由转发功能
# echo 1 > /proc/sys/net/ipv4/ip_forward
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-ports 3128
其中 -i 指定的网卡接口为接收其他主机数据包的网卡。
端口的包。
- 接下来就研究下 acl 和 http_access 如设置访问控制,再看下 acl 的写法:
acl 列表名称 列表类型 -i 列表值 名称自拟,-i 不区分大小写
列表类型:
src 源IP地址,客户端的IP地址 格式:acl name src ip/netmask
dst 目的IP地址,访问的IP地址 格式:acl name src ip/netmask
arp 客户端MAC地址 格式:acl name arp mac-addr
srcdomain 源域名 格式:acl name srcdomain .domain.com
dstdomain 目标域名 格式:acl name dstdomain .domain.com
port 端口 格式:acl name port num | num1 - num2
proto 协议 格式:acl name proto HTTP FTP ......
method 请求类型 格式:acl name method GET POST ......
maxconn 单一IP地址最大连接数 格式:acl name maxconn num
url_regex URL匹配 格式:acl name url_regex [-i] ^http://......
time 时间段 格式:acl name time [day] [h1:m1-h2:m2]
- http_access来控制acl中定义的是拒绝还是允许,!可以取非值,比如我们不允许访问 qq.com ,在配置文件中添加如下:
acl deny_domain dstdomain .qq.com
http_access deny deny_domain
http_access allow !deny_domain
秒,等所有的连接关闭才关闭服务,如果不想等可以直接killall squid 暴力杀死进程
的错误,而baidu.com返回200 OK
- 然后试试只允许访问qq.com,拒绝其他所有域名
acl deny_domain dstdomain .qq.com
http_access deny !deny_domain
http_access allow deny_domain
只需把" ! " 的位置变一下就好了,或者allow和deny换一下,之后重新读取配置文件
是不是只能访问qq了呢,baidu和taobao都无法访问了
- 其他的acl控制就不过多演示了,道理都相同,只是控制类型和值得不同而已。感兴趣的话可以问度娘获取更多资源,请善于借助搜索引擎哦 o(^▽^)o
END
Squid代理服务器安装的更多相关文章
- squid 代理服务器安装配置
ubuntu16.04 安装squid代理服务器配置 本文参考 http://www.cnblogs.com/newflypig/archive/2012/09/28/2862000.html 1,删 ...
- squid代理服务器安装和配置
服务器版本:centos6.5 squid版本:3.1 Squid介绍 Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载一个主页时,可 ...
- ubuntu squid 代理服务器安装配置
安装: 下载安装包 http://pan.baidu.com/s/1mitvwpE 解压 tar -xzvf file.tar.gz 编译: 进入sbin目录 执行 ./configure --pr ...
- Linux实战教学笔记43:squid代理与缓存实践(二)
第6章 squid代理模式案例 6.1 squid传统正向代理生产使用案例 6.1.1 squid传统正向代理两种方案 (1)普通代理服务器 作为代理服务器,这是SQUID的最基本功能:通过在squi ...
- squid代理与缓存(下)
squid代理与缓存(下) 6. squid代理模式案例 6.1 squid传统正向代理生产使用案例 6.1.1 squid传统正向代理两种方案 (1)普通代理服务器 作为代理服务器,这是SQUID的 ...
- Linux下squid代理缓存服务环境部署
代理服务器英文全称是Proxy Server,其功能就是代理网络用户去取得网络信息. Squid是一个缓存Internet 数据的软件,其接收用户的下载申请,并自动处理所下载的数据.当一个用户想要下载 ...
- squid代理加用户认证
squid代理加用户认证 用authentication helpers添加身份验证 有如下几种认证方式 :=> NCSA: Uses an NCSA-style username and pa ...
- 在Azure DevOps Server的代理服务器安装Python环境
Python和Azure DevOps Server Python是一种计算机程序设计语言.是一种动态的.面向对象的脚本语言,最初主要为系统运维人员编写自动化脚本,在实际应用中,Python已经在前端 ...
- squid代理http和https方式上网的操作记录
需求说明:公司IDC机房有一台服务器A,只有内网环境:192.168.1.150现在需要让这台服务器能对外访问,能正常访问http和https请求(即80端口和443端口)操作思路:在IDC机房里另找 ...
随机推荐
- Asp.net中,从弹出窗体取选择值(转)
在Asp.net中,从A页面中弹出B页面,在B页面中选择数据后,关闭并将数据更新到A页面,是一种常用 的方式.只是我对Javascript不熟悉,所以捣鼓了一下午,终于有了一点成绩:测试项目有两个页面 ...
- YUM安装东西提示PYCURL ERROR 6 - "Couldn't错误的解决办法
执行yum install命令时提示PYCURL ERROR 6 - "Couldn't resolve host 错误,原来是dns设置出错,具体错误代码: Loaded plugins ...
- Spark Streaming 调优指南
SparkStreaming是架构在SparkCore上的一个"应用",SparkStreaming主要由DStreamGraph.Job的生成.数据的接收和导入以及容错四大模块组 ...
- 设计模式之Adapter模式
说起Adapter,STL里的stack和queue都是adapter,底层是deque,隐藏了deque的一些接口,使得其可以达到FIFO是queue,LIFO是stack. The STL sta ...
- S7-200PLC间的PPI通信
一. PPI通信协议是一种主从式的通信协议,上位机即PC机为主,PLC为从.通信开始由计算机发起,PLC予以响应. 1).计算机按通信任务,用一定格式,向PLC发送通信命令. 2).PLC收到命令后, ...
- 连上Wi-Fi 热点自动弹窗的实现方法
当我们连上某个热点, 自动弹出登录窗口的专业名称叫做: Captive portal 原理, 实现方式有三种 1 : dns 跳转, 在热点上面实现配置, 把所有dns请求返回都配置为:服务器地址 : ...
- lumen的自定义依赖注入
比如我现在有个token认证系统,目前我用mysql的token表实现,将来有可能会改成redis,怎么实现未来的无缝连接呢. 先定义一个合约文件app/Contracts/TokenHandler. ...
- [js高手之路] dom常用节点属性兼容性详解与应用
一.每个DOM节点都有一个nodeType属性,表示节点类型, NodeType一共有12种类型,我们可以通过遍历内置的Node构造函数获取 window.onload = function(){ v ...
- noip普及组2007 Hanoi双塔问题
Hanoi双塔问题 描述 给定A,B,C三根足够长的细柱,在A柱上放有2n个中间有孔的圆盘,共有n个不同的尺寸,每个尺寸都有两个相同的圆盘,注意这两个圆盘是不加区分的.现要将这些圆盘移到C柱上,在移动 ...
- 使用EasyWechat快速开发微信支付
前期准备: 申请微信支付后, 会收到2个参数, 商户id,和商户key.注意,这2个参数,不要和微信的参数混淆.微信参数: appid, appkey, token支付参数: merchant_id( ...