suid
:
代理服务器
提供文件缓存
地址过滤等服务
加速内部主机访问
internet
的速度
节省
web
流量
提高性能
代理加速
缓存:不是所有的东西都可以缓存
ICP : Internet
缓存协议:实现多个缓存之间共享资源
udp 3130
端口
缓存之间:父子关系
兄弟关系
缓存中有请求内容:
hit
缓存丢失:
miss
没缓存到内容
代理类型:
proxy
:
SNAT
代理工具
Squid
,
Varnish
,
ATS ,Nginx
reverse proxy
:反向代理
DNAT
CDN
:多台
squid
和
web
服务器组成
内容分发网络
智能
CDN
www.cache.org
网站
软件:
squid-2.6.STABLE6
默认监听端口:
tcp
端口
3128
配置文件:
/etc/squid/squid.conf
服务脚本:
/etc/init.d/squid
日志文件:
/var/log/squid/access.log
主程序:
/usr/sbin/squid
squid
配置:
yum install squid
vim /etc/squid/squid.conf
http_port 3128
监听端口
cache_mem 64M
代理监听使用的内存
maximum_object_size
最大缓存对象
rely_body_max_size 1024000 allow all
单个最大文件大小为
1M,
单位为字节
,
0
表示不限制
access_log /var/log/squid/access.log
日志文件位置
visible_hostname
可见主机名
squid
在错误页面显示的服务器名字
cache_dir ufs
使用系统
/var/spool/squid 100
大小
16
一级缓存目录多少
256
二级缓存目录多少
缓存目录
squid
:
两块网卡
eth0
桥接
192.168.0.34
eth1 host-only 192.168.10.2/24
client
:
eth0 host-only 192.168.10.3/24
编辑
squid:
vim /etc/squid/squid.conf
http_port 192.168.10.2:3128
cache_mem 128 MB
visible_hostname proxy.a.com
添加
cache_dir 1024 16 256
http_access allow all
error_directory /usr/share/squid/errors/Simplify_Chinese
返回信息中文
squid -k parse
检查语法
squid -K reconfig
重读一下配置文件
squid -z
初始化缓存
ls /var/spool/squid/
service squid restart
netstat ntlp | grep 3128
route add default gw 192.168.0.254
client:
route add default gw 192.168.10.2
http://www/redhat.com
设置浏览器
edit--
》
prefence--network--setting--
》设定代理服务器
squid
的
acl
访问控制功能:
格式:
acl all_name acl_type values
http_access allow|deny all_name
acl
类型:
src
基于源地址控制
acl LAN src 192.168.10.0/24
acl LAN src 192.168.100.0/24
acl
定义名字一样去并集
192.168.1.25-192.168.1.55
具体主机范围
http_access allow|deny LAN
dst
基于目标地址控制
port
基于端口控制
myip squid
的自身的
ip
控制
srcdomain
源域名控制
基于客户端
acl domain srcdomain .baidu.com
也可以是
ip
dstdomain
目标域名控制
acl DU dstdomain *.baidu.com
http_access deny LAN DU
拒绝
LAN
范围的网络访问百度
http_access deny DU
所有的都不可以访问百度
time
基于时间
acl WTIME time MTWHF 09:00-12:00
时间结束时间大于开始时间
http_access deny LAN WTIME
拒绝
LAN
在周一到周五的
9
到
12
点访问
maxconn
最大连接数
acl someuser maxconn 5
http_access deny LAN someuser LAN
用户访问链接最多为
5
个
http_access allow !someuser
低于
5
个允许
url_regex url
列表
匹配独步路径
acl BAI url_regex -i ^http://image.baidu.com/
不区分大小写
http_access deny LAN BAI
不能访问百度的图片链接
acl BAI url_regex -i ^.*tp://.*\.iso$
http_access allow LAN !BAI
拒绝访问以
iso
结尾的文件
urlpath_regex url
路径
匹配部分路径
acl LAN time
arp
基于源
mac
地址作控制的
acl LAN arp 11:12:13:14:15:16
browser
基于浏览器控制的
代理服务器的透明代理:
Transparent Proxy
不应用户手动指定代理地址和
port
来做转换
访问重定向
www.dohu.com:80--->192.168.10.3:3128
透明代理配置:
服务器端:
eth1 192.168.10.2 eth0 192.168.0.65
vim /etc/squid/squid.conf
http_port 192.168.10.2:8080 transparent
squid -k parse
squid -k reconfig
iptables -t nat -A PREROUTING -I eth1 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT -to-port 8080
iptables -L -n -t nat
客户端配置:
eth0 192.168.10.3
浏览器取消
squid
代理配置
route add default gw 192.168.10.2
服务端:
squid
不支持
DNS
解析
解决方法:
1
、内部
DNS
服务器
2
、
DNS
请求做
SNAT
打开路由转发功能
proc/sys/net/ipv4/ip_forwards 1
vim /etc/resole.conf 192.168.0.254 DNS
服务器
iptables -t NAT -A POSTROUTING -s 192.168.10.0/24 -j SNAT --to-source 192.168.0.65
反向代理:
squid
只代理有限的服务器
客户端很可能是外网
squid
和
web server
在同一网络
一台
squid
多台
web server
虚拟主机
vhost
服务端配置:
squid
和
一台有虚拟主机的
web server
eth0 192.168.0.65
内网
eth1 192.168.10.2
外网
vim /etc/squid/squid.conf
http_port 192.168.10.2:80 vhost (
指定
vhost
就为允许缓存
)
cache_peer 192.168.0.254 parent 80 0 originserver weight=1 max-conn=1000
(web
服务器
ip
或对等兄弟
squid) (icp)
本身为真正的
web
服务器
weight
表示的为比例
重建缓存
:
rm -rf /var/spool/squid/*
service squid stop
squid -z
squid -k parse
检查
acl
和
iptables
清空
客户端配置
eth0 192.168.10.3
测试:
http://192.168.10.2
web
服务器:
eth0 192.168.0.254
通过
DNAT
做代理:
服务器端:
service squid stop
iptables -t nat PREROUTING -d 192.168.10.2 -p tcp --dport 80 -j DNAT --to-destination 192.168.0.254
web
服务器:
route add -net 192.168.10.0/24 gw 192.168.0.65
route -n
压力测试:比较两种方式
DNAT
和反向代理孰好孰坏
在服务器端编译安装
http_load
tar zxvf http_load-12mar2006
cd http_load-12mar2006
make install
vim url
填写
192.168.0.254
的网页链接
http://192.168.10.2
http://192.168.10.2/workstaion.cfg
http://192.168.10.2/vserver.cfg
http://192.168.10.2/a2.cfg
http_load -parallel 200 -fetchs 1000 url
测试
DNAT
和
squid
两种方式
squid
不能同时反向代理和透明代理