【澳门十大电子游戏平台】squid代理服务器,Squid代理服务器安装

Squid代理服务器安装,squid代理服务器
注意事项
- 启动Squid必须关闭SElinux,否则会遇到各种问题
- 实验用3.1版本的squid,高版本的squid会出现配置文件不兼容的问题,所以选择版本要注意了
注意事项
启动 Squid 必须关闭 SElinux ,否则会遇到各种问题 实验用 3.1 版本的 squid
,高版本的 squid 会…
**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://jingyan.baidu.com/album/19192ad815430ee53e5707a7.html?picindex=11)
-
创建运行用户和组
# 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
-
然后试试只允许访问qq.com,拒绝其他所有域名
acl
deny_domain dstdomain .qq.comhttp_access
deny !deny_domainhttp_access
allow deny_domain只需把” ! ” 的位置变一下就好了,或者allow和deny换一下,之后重新读取配置文件
是不是只能访问qq了呢,baidu和taobao都无法访问了
-
代理服务器的功能是代替网络用户去访问网络信息,并把获得的信息返回给用户,其工作步骤大致如下:
(1) 客户机向代理服务器发起访问互联网的请求
(2) 代理服务器收到请求后检查请求是否被允许,如果允许将会进行下一步处理,否则丢弃该请求。
(3) 代理服务器先查找本地缓存中是否有客户机请求的数据,如果有则直接返回给客户端,否则继续下一步。
(4) 如果没有找到数据缓存,则代替客户机在互联网上发起请求。
(5) 接到请求回应后复制一份到缓存中,然后返回给客户机。
-
2
-
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
设置最大接收对象的大小,大于该值不被保存,默认为4096KBcache_dir
设置磁盘缓存的位置和大小,格式为:cache_dir aufs
目录位置 大小(MB) 一级子目录数量 二级子目录数量 ,例如:cache_dir aufs
/data/cache 1024 16 256
-
http_access来控制acl中定义的是拒绝还是允许,!可以取非值,比如我们不允许访问 qq.com ,在配置文件中添加如下:
acl
deny_domain dstdomain .qq.comhttp_access
deny deny_domainhttp_access
allow !deny_domain设置目标域名为 .qq.com,名为deny_domain
,拒绝deny_domain中的域名,允许非deny_domain中的域名,然后 squid -k
rec 来重新读取配置文件,停止squid服务会延迟30秒,等所有的连接关闭才关闭服务,如果不想等可以直接killall
squid 暴力杀死进程下图为验证结果的截图,qq.com返回403的错误,而baidu.com返回200 OK
**# 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 shutdown
来安全的退出服务,会有30秒的时间等待断掉所有连接。也可以直接squid -k
kill来直接关闭
[](http://jingyan.baidu.com/album/19192ad815430ee53e5707a7.html?picindex=6)
[](http://jingyan.baidu.com/album/19192ad815430ee53e5707a7.html?picindex=7)
-
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解析,降低性能,推荐offacl
重头戏,用于定义访问控制列表,可被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接着就可以启动服务了,看看你的服务是否正常监听到3128端口呢?
# /usr/local/squid/sbin/squid
-
接下来就研究下 acl 和 http_access
如设置访问控制,再看下 acl 的写法:acl 列表名称 列表类型 -i
列表值 名称自拟,-i 不区分大小写列表类型:
src
源IP地址,客户端的IP地址 格式:acl name
src ip/netmaskdst
目的IP地址,访问的IP地址 格式:acl name
src ip/netmaskarp
客户端MAC地址 格式:acl name arp mac-addr
编译安装首先到官方网站下载源码包:**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**
[](http://jingyan.baidu.com/album/19192ad815430ee53e5707a7.html?picindex=1)
[](http://jingyan.baidu.com/album/19192ad815430ee53e5707a7.html?picindex=2)
-
启动Squid必须关闭SElinux,否则会遇到各种问题
-
实验用3.1版本的squid,高版本的squid会出现配置文件不兼容的问题,所以选择版本要注意了
-
默认是允许代理所有网络的,需要在需要代理的主机上配置代理服务器的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
来打开某某某网址
-
其他的acl控制就不过多演示了,道理都相同,只是控制类型和值得不同而已。感兴趣的话可以问度娘获取更多资源,请善于借助搜索引擎哦 o(^▽^)o
END
-
配置透明代理:
我们要为主机配置代理上网的话,就必须要去设置,这样很不利于控制和管理主机。比如我们限制了主机不能登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 指定的网卡接口为接收其他主机数据包的网卡。
之后将其他主机的网关设置为代理服务器的IP。下图为用tcpdump抓到客户机发向80端口的包。