A-A+

Squid透明代理内网用户上网

2016年01月05日 站长资讯 暂无评论

一、简介

squid实现代理上网是7层代理,传统的路由器实现snat一般是4层,基于ip地址和端口转换实现的,7层和4层的区别如下:

1.nat需要开启路由转发功能,7层代理squid不需要开启路由转发

2.7层能够实现应用层面的控制,可以基于url的控制过滤,4层无法做到。

Squid基本功能:

1.提供HTTP和FTP协议的代理服务

2.缓存代理数据,提高访问速度

3.ACL限制内网访问外网资源(时间,ip)

二、Squid实现内网上网

拓扑:

wKioL1UzmrqCxVXUAAGjVVTU3Yo755.jpg

(不追求美观,但讲究精确)

①安装squid软件

  1. [root@node1 ~]#  yum  install  -y  squid  
  2.   
  3. [root@node1 ~]#  rpm  -ql  squid  
  4. /etc/logrotate.d/squid     ##日志轮转  
  5. /etc/pam.d/squid            ##squid支持的认证模块  
  6. /etc/rc.d/init.d/squid         ##服务脚本  
  7. /etc/squid                     ##配置文件位置  
  8. /etc/squid/cachemgr.conf  
  9. /etc/squid/cachemgr.conf.default  
  10. /etc/squid/errorpage.css  
  11. /etc/squid/errorpage.css.default  
  12. /etc/squid/mime.conf            ##支持的媒体文件类型  
  13. /etc/squid/mime.conf.default  
  14. /etc/squid/msntauth.conf  
  15. /etc/squid/msntauth.conf.default  
  16. /etc/squid/squid.conf            ##当前生效的配置文件  
  17. /etc/squid/squid.conf.default    ##初始化配置文件的备份  
  18.   
  19.   
  20. /var/log/squid                    ##日志文件  
  21. /var/spool/squid  

②配置squid节点

前提:保证squid自身能上网

  1. ######/etc/squid/squid.conf#####主要配置内容  
  2.   
  3. http_port 192.168.112.135:3128 transparent  
  4.   
  5. acl  innet src 192.168.112.0/24  
  6. http_access allow  innet  
  7.   
  8. cache_access_log  /var/log/squid/access.log ##设置高速缓存存取记录文件的名称和所在目录,它记录了所有高速缓存的行为,如果不需要,可以设为"cache_access_log /dev/null"  
  9.   
  10. visible_hostname  192.168.112.135    ##用于提示客户端  
  11.   
  12. cache_mem   60M                    ##设置PROXY SERVER可使用多少内存作为高速缓存,一般要设置为物理内存的1/3  
  13.   
  14. cache_log /var/log/squid/cache.log  ##设置缓存存储记录文件的名称和所在目录,它记录了哪些数据从高速缓存移出,哪些数据被放入高速缓存  
  15.   
  16. cache_swap_low 80  
  17. cache_swap_high 97  ##这两行设置CACHE进行替换的闸值,当占用到97%的CACHE后,CACHE中的内容将被清空20%  
  18.   
  19. cache_dir ufs /var/spool/squid  100  16 256 ##设置高速缓存目录和高速缓存可以使用的硬盘空间,100表示最大可使用100MB,16表示第一层子目录最多可以有16个,256表示每个第一层子目录下最多可以有256子目录  
  20.   
  21. dns_nameservers 192.168.31.1    ##内部指定dns,没有则以/etc/resolv.conf为准  

③配置iptables规则,实现客户端的80,443请求定向到squid的3128端口,并且将pc的53dns请求snat出去(udp 的53dns无法代理,所以只能通过snat方式出去)

  1. [root@node1 squid]# iptables  -t  nat  -A PREROUTING -s 192.168.112.0/24 -p tcp --dport 80,443  -j  REDIRECT --to 3128  
  2. [root@node1 squid]# iptables  -t nat -A POSTROUTING -s 192.168.112.0/24 -p udp --dport 53 -j SNAT --to-source 192.168.31.241  

由于需要snat,因此还需要打开路由转发功能

[root@node1 squid]# echo 1 > /proc/sys/net/ipv4/ip_forward

④配置内网PC

前提:内网PC的流量必须经过squid,dns的解析可以不经过。

⑤测试

标签:

给我留言