设为首页 收藏本站
查看: 1252|回复: 0

[经验分享] 2015/05/25 squid

[复制链接]

尚未签到

发表于 2018-12-27 08:52:22 | 显示全部楼层 |阅读模式
  http://symphony.b3log.org/article/1381403388981     #正向、反向代理解释
  一、什么是squid?
  squid可以做代理也可以做缓存。
  squid缓存不仅可以节省宝贵的带宽资源, 也可以大大降低服务器的I/O。
  squid不仅可以做正向代理, 又可以做反向代理。
  正向代理, squid后面是客户端, 客户端上网铜鼓squid去上。
  反向代理, squid后面是服务器, 服务器返回给用户数据需要走squid。
  正向代理用在企业的办公环境中, 客户端上网通过squid代理来上网,这样可以节省网络带宽资源。
  反向代理用来搭建网站静态项(图片、html、流媒体、js、css等)的缓存服务器, 它用于网站架构中。
  二、搭建squid正向代理
  1. 用yum安装squid;
  [root@squid ~]# yum -y install squid
  2. 搭建squid正向代理;
  [root@squid ~]# squid -v                    #查看squid版本;
  [root@squid ~]# cd /etc/squid/
  [root@squid squid]# cp squid.conf squid.conf.20150523
  [root@squid squid]# vim squid.conf               #编辑squid主配置文件
  把默认的squid.conf里的内容全部删除, 添加下面的配置..
  ###### 添加如下 ######
  http_port 3128                                             #squid端口号;
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_dir aufs /data/cache 1024 16 256               #缓存目录
cache_mem 128 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
  ######    结束    ######
  [root@squid squid]# mkdir /data/cache               #创建缓存目录
  [root@squid squid]# chown -R squid /data/cache/          #更改权限
  [root@squid squid]# squid -z                         #初始化缓存目录.
  [root@squid squid]# squid -kcheck               #检测配置文件是否有错
  [root@squid squid]# /etc/init.d/squid start    #启动squid服务
Starting squid: ....................[FAILED]
  启动squid失败, 能看到squid进程, 不能看见squid的3128端口号. 解决办法如下
  [root@squid ~]# vim /etc/hosts                    #添加本地hosts文件
192.168.15.12   squid.com
  [root@squid squid]# vim squid.conf              #编辑squid主配置文件
http_port 192.168.15.12:3128                       #添加本机IP:3128
  [root@squid squid]# /etc/init.d/squid start    #启动squid服务
  [root@squid ~]# netstat -anpt |grep 3128     #检查3128端口是否存在;
tcp        0      0 192.168.15.12:3128          0.0.0.0:*                   LISTEN      3425/(squid)
       用curl验证正向代理.
  [root@LAMP ~]# curl -x192.168.15.12:3128 www.90root.com -I          #验证正向代理
HTTP/1.0 200 OK
Server: nginx
Date: Fri, 22 May 2015 18:07:49 GMT
Content-Type: text/html
X-Powered-By: PHP/5.4.37
X-Cache: MISS from squid.com
X-Cache-Lookup: MISS from squid.com:3128
Via: 1.0 squid.com (squid/3.1.10)                                                       #squid代理访问;
Connection: keep-alive
  3. 需求: 禁止访问淘宝、京东网站;
  [root@squid squid]# vim squid.conf
  #####建议添加acl后面#####
  acl http proto HTTP
acl bad_domain dstdomain .taobao.com .jd.com           
http_access deny http bad_domain

  #####         结束        #####
  在没重启squid之前, 使用正常代理能够访问淘宝、京东。 只截取几条重要信息。
  [root@LAMP ~]# curl -x192.168.15.12:3128 www.jd.com -I
  HTTP/1.0 200 OK
Server: JDWS
  X-Cache-Lookup: MISS from squid.com:3128
  [root@LAMP ~]# curl -x192.168.15.12:3128 www.taobao.com -I
  HTTP/1.0 200 OK
Server: Tengine
  X-Cache-Lookup: MISS from squid.com:3128
  [root@squid squid]# squid -kcheck                        #检查squid语法是否有误;
  [root@squid squid]# squid -kreconfig                    #重新加载配置文件;
       用curl验证正向代理
  [root@LAMP ~]# curl -x192.168.15.12:3128 www.taobao.com -I
HTTP/1.0 403 Forbidden
Server: squid/3.1.10
  X-Cache-Lookup: NONE from squid.com:3128
  [root@LAMP ~]# curl -x192.168.15.12:3128 www.jd.com -I
HTTP/1.0 403 Forbidden
Server: squid/3.1.10
  X-Cache-Lookup: NONE from squid.com:3128
       用windows主机验证正向代理
  打开IE浏览器, 点击工具---Internet选项.


  用IE访问www.taobao.com和www.jd.com

  

  三、搭建squid反向代理
  1. 编辑squid主配置文件;
  [root@squid squid]# vim squid.conf
  ###### 添加如下 ######
  http_port 192.168.15.12:8081 accel vhost vport                         #将3128端口改为8081, 并在后面添加ccel vhost vport  
cache_peer 182.254.18.159 parent 80 0 originserver name=a     #代理域名的IP、端口号、a为域名的别名,可自定义。
  cache_peer_domain a www.qq.com
cache_peer 112.74.113.61   parent 80 0 originserver name=b      
cache_peer_domain b www.90root.com
  如果是squid要代理一台web上的所有域名, 那么就写成这样: cache_pper 192.168.10.11 80 0 originserver
  cache_peer_domain 都可以省掉
  之前增加的域名白/黑名单相关配置去掉. 在下面2行前面添加注释;
  #acl bad_domain dstdomain .taobao.com .jd.com
#http_access deny http bad_domain
  ######    结束    ######
  [root@squid squid]# squid -kcheck
[root@squid squid]# squid -kreconfig
       用curl验证反向代理.
  [root@LAMP ~]# curl -x192.168.15.12:8081 www.qq.com -I
HTTP/1.0 200 OK
Server: squid/3.4.1
  X-Cache-Lookup: MISS from squid.com:8081
  [root@LAMP ~]# curl -x192.168.15.12:8081 www.90root.com -I
HTTP/1.0 200 OK
Server: nginx
  X-Cache-Lookup: MISS from squid.com:8081
  [root@LAMP ~]# curl -x192.168.15.12:8081 www.taobao.com -I
HTTP/1.0 503 Service Unavailable
Server: squid/3.1.10
  X-Cache-Lookup: MISS from squid.com:8081
  当访问qq和90root域名时, 能访问..  访问其它域名时出现503. 这样反向代理验证成功。
  四、搭建透明代理
  透明代理的意思是客户端根本不需要知道有代理服务器的存在, 它改变你的request fields(报文), 并会传送真实IP, 多用于路由器的NAT转发中.
  透明代理的原理是这样的:
  ①. 假设A为内部网络客户机
  ②. B为外部网络服务器, B提供的服务为httpd服务, 监听端口为80
  ③. C为代理服务器(也就是我们的网关), 架设代理服务器提供服务端口为3128
  过程: 当A向B的80端口请求数据时,TCP连接请求要先经过C,C看到A请求的是B的80端口时,C由于已经设置了转发规则,所以C会把A的请求80端口转发到自己的3128端口,也就是说A将要直接访问C的3128端口,而非B服务器的80端口,此时,C会先去访问B的80端口,把A要访问B的请求数据先请求过来,保存到C上,然后C再把请求数据吐给A。而在A看来,它貌似是直接请求的B,而实际并非如此。由于这些连接过程是自动的,不需要客户端手工配置代理服务器,甚至用户根本不知道代理服务器的存在,因而对用户来说是透明的。
  需求: 透明代理服务器的eth0网卡地址为10.2.1.100(可以上公网的IP), eth1网卡地址为192.168.1.10, 那么要通过透明代理上网的局域网段应该为192.168.1.0/24, 并且在该局域的客户机应该设置的网关地址为192.168.1.10
  通过上面的原理分析,可知,只有您的代理服务器为网关时,才可以实现透明代理的功能,否则无效。实际应用中,透明代理服务器应该有至少两个网卡,第一个网卡连接到外网,或者它可以直接上网,第二个网卡连接的是内部的一个局域网段,也就是想使用代理上网的网段。
  

  1. 编辑squid主配置文件
  [root@squid ~]# cd /etc/squid/
  [root@squid squid]# cp squid.conf squid.conf.20150524
  [root@squid squid]# vim squid.conf
  把默认的squid.conf里的内容全部删除, 添加下面的配置..
  ###### 添加如下 ######
  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 all
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 deny all
cache_dir aufs /data/cache 1024 16 256
cache_mem 128 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

  ######    结束    ######
  

  2. 创建缓存目录, 并修改权限.
  [root@squid squid]# mkdir  /data/cache/
  [root@squid squid]# chown -R squid:squid /data/cache/
  3. 初始化缓存目录
  [root@squid squid]# squid -z
  4. 打开端口转发
  [root@squid squid]# echo "1" > /proc/sys/net/ipv4/ip_forward
  5. 设置防火墙规则
  [root@squid squid]# iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
[root@squid squid]# iptables -t nat -A PREROUTING -p tcp -s 192.168.1.0/24 --dport 80 -j REDIRECT --to-ports 3128
  6. 客户机验证





运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656283-1-1.html 上篇帖子: squid安装与相关配置 下篇帖子: squid简单配置文档
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表