squid三种代理方式

squid服务的三种代理模式
普通代理: 客户端必须在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,才能通过代理服务器上网。
透明代理: 客户端不需要在自己的浏览器里指定代理服务器的ip地址和代理服务监听的端口号,给客户端的感觉自己是直接和公网通信。 必须把网关地址指向代理服务器的内网接口ip地址。
普通代理 和 透明代理 都是代替私网用户访问公网的机器
反向代理: 代替公网用户访问私网的机器

配置普通代理:
web eth0
192.168.0.1 —-192.168.0.254 | squid | 1.1.1.254 —– 1.1.1.1
eth1
安装squid服务:

mount   /dev/cdrom    /mnt
[root@pc205 Packages]#rpm -ivh  /mnt/Packages/squid-3.1.10-19.el6_4.x86_64.rpm 
[root@pc205 Packages]# rpm -q squid
squid-3.1.10-19.el6_4.x86_64
[root@pc205 Packages]# 

端口 3128
进程名 squid
进程所有者/组 squid/squid
数据传输协议 tcp
/etc/squid/squid.conf 主配置文件
/etc/squid/squid.conf.default 主配置文件模板文件

http_port    3128#监听端口
cache_dir ufs /var/spool/squid 100 16 256#缓存文件路径,该路径下建立16个一级目录,每个一级目录下建立256个二级目录,总文件不超过100M
cache_mem  64 MB#内存缓存64M
access_log   /var/log/squid/access.log   squid
maximum_object_size  4096 KB#可接受的缓存目标,大于4096KB的请求数据不予缓存
visible_hostname    pc205.tarena.com (可选项)

配置dns参数:

[root@pc205 squid]# tail -1  /etc/hosts
1.1.1.254       pc205.tarena.com   pc205

*squid服务默认就代替私网ip地址 用户 访问公网机器。

service squid status|start|stop
[root@pc205 squid]# service squid start
init_cache_dir /var/spool/squid… 正在启动 squid:. [确定]
客户机浏览器要配置为代理上网模式:代理IP为squid服务器内网IP,端口为3128

配置透明代理:
企业的网关(共享接入Internet)主机
需要配合设置防火墙策略,将客户机的Web访问数据转交给代理服务程序处理 。将客户机发送的目的端口号为80的数据包转给squid服务器的3128接口进行处理。
192.168.0.1 —192.168.0.254 | 服务器 | 1.1.1.254 —— 1.1.1.10
修改squid参数:

vim  squid.conf
http_port  3128    transparent

service squid restart
chkconfig –level 35 squid on

配置iptables:

service iptables start
chkconfig –level 35 iptables on
iptables -F 清除默认规则
iptables -L
service iptables save

iptables配置方法:
iptables -t 表名 管理选项 链名 匹配条件 -j 处理动作

表名 (不同的表有不同的功能)
filter 过滤数据包 (默认表)
mangle 给数据包打标记
raw 跟踪数据包状态
nat 做源地址转换 、目标地址转换、端口转换

管理选项 查看 删除 添加 替换
-L -D -A/I -R -F(清空规则)

链名(数据包传输的方向,参照物时防火墙服务器本机)
INPUT 进入防火墙的数据包
OUTPUT 从防火墙本机出去的表
FORWARD 经过防火墙的数据包
PREROUTING 路由前
POSTROUTING 路由后

匹配条件 :
数据传输协议 -p tcp / udp
源地址 -s 192.168.1.1 192.168.1.0/24 (IP地址或IP段)
目的地址 -d 192.168.1.1 192.168.1.0/24
源端口 –sport 6534
目标端口 –dport 80
数据进入的物理接口名 -i eth0 /eth1
数据包出去的物理接口名 -o eth0 /eth1

处理动作 :
ACCEPT 放行, DROP 丢弃, REJECT 拒绝 ,SNAT 源地址转换, DNAT 目的地址转换 ,REDIRECT 端口转换

squid服务器iptables配置:

[root@pc205 squid]#iptables  -t   nat    -A     PREROUTING   -i  eth0  -s  192.168.0.0/24  -p tcp   --dport 80  -j   REDIRECT  --to-ports   3128
[root@pc205 squid]# service iptables save

客户端配置,将默认网关指向squid服务器内网口:
eth0 192.168.0.100
ping -c 3 192.168.0.254
route add default gw 192.168.0.254

配置squid 反向代理:

           192.168.0.254
              eth0

web_10 ————|服务器| —————-1.1.1.10
eth1 1.1.1.254
http://1.1.1.254/a.html
反向代理不必需iptables的支持,关闭iptables :

service iptables stop
chkconfig  --level 35 iptables off

squid服务将监听80端口,所以要确保80端口没有被占用:

netstat  -untlap   |   grep :80
service  httpd  stop ;chkconfig   --level  35  httpd  off

修改squid服务配置:
vim squid.conf

http_access allow all
http_port  80  vhost
cache_peer   192.168.0.100  parent   80   0   originserver

重载squid配置:
service squid reload

[root@pc205 squid]# netstat -untlap | grep :80
tcp 0 0 :::80 :::* LISTEN 6359/(squid)
[root@pc205 squid]#

使用squid服务代理两个web服务
首先配置web服务器的虚拟主机服务:
vim conf.d/vhost.conf

listen 8000
NameVirtualHost *:80

   servername  www.tarena.com
   documentroot  /webdir


   servername  bbs.tarena.com
   documentroot  /bbsdir

配置squid服务器的配置:
vim squid.conf

http_port 80  vhost
cache_peer   192.168.0.100  parent   80   0   originserver  name=www#第一个web,在80端口
cache_peer   192.168.0.100  parent   8000   0   originserver  name=bbs#第二个web,在8000端口
cache_peer_domain  www  www.tarena.com
cache_peer_domain  bbs  bbs.tarena.com
cache_dir ufs /var/spool/squid 100 16 256
swap_low_cache  90   
swap_high_cache  95 #以上两条保证文件缓存在90%~95%之间 
cache_mem  64 MB#内存缓存空间64MB
...
refresh_pattern ^ftp: 1440 20% 10080#内存缓存生命周期为1440分钟,文件内存生命周期为10080*20%分钟
refresh_pattern  ^gopher: 1440  0%  1440#gopher协议
refresh_pattern -i (/cgi-bin/|\?) 0  0% 0
refresh_pattern  .  0 20% 4320

你可能感兴趣的:(squid)