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