squid透明代理

透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成


一。编译安装squid

tar -zxf /mnt/squid-3.4.6.tar.gz -C /usr/src
./configure 
--prefix=/usr/local/squid    
--sysconfdir=/etc        //单独将配置文件修改到此目录下
--enable-arp-acl         //可以在规则中设置直接通过客户端MAC进行管理,防止客户端使用IP欺骗
--enable-linux-netfilter       //使用内核过滤
**--enable-linux-tproxy        //支持透明模式**
--enable-async-io=100          //异步I/O,提升存储性能
--enable-err-language="Simplify_Chinese"     //错误信息的显示语言
--enable-underscore            //允许URL中有下划线
--enable-poll                  //使用Poll()模式,提升性能
--enable-gnuregex              // 使用GUN正则表达式

make && make install

优化路径:

ln -s /usr/local/squid/sbin/* /usr/local/sbin
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var

squid的配置文件:

vim /etc/squid.conf

......//省略部分
cache_effective_user squid   //指定squid程序用户
cache_effective_group squid  //程序基本组账户,需要手工添加
visible_hostname centos1.lalala.com  //手工添加主机名,,需要手工添加
cache_dir ufs /usr/local/squid/var/cache/squid 100 16 256 //设置缓存目录的大小,一级子目录和二级子目录的个数(默认有此项,去点前面的#)
cache_mem 64 MB    //缓存功能所使用的内存空间大小. 建议设为实际内存的1/4到1/3
maximum_object_size 4096 KB    //允许保存到缓存空间最大对象文件. 默认以KB为单位
reply_body_max_size 10240000 allow all   //允许用户下载的最大文件大小. 默认以byte为单位。 默认设置为0,表示不进行设置.
......//省略部分

启动服务:

squid -z //-z选项用来初始化缓存目录
squid //启动squid服务
squid -k reconfigure //重启squid服务


squid透明代理_第1张图片
二。构建透明代理(以上图为例)

1)在squid上开启路由功能

vim /etc/sysctl.conf
net.ipv4.ip_forward = 0  ----->net.ipv4.ip_forward = 1

sysctl   -p

2)在客户机和服务器上都填写好网关

3)配置squid支持透明代理

vim /etc/squid.conf
http_port  3128  改为  http_port 192.168.1.1: 3128 transparent

squid -k reconfigure

4)设置iptables的重定向策略,将来自局域网内192.168.1.0/24网段且访问http,https等协议的数据包交给运行在本机3128端口上的squid服务处理

iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp -m multiport –dport 80,443 -j REDIRECT –to 3128


设置ACL访问控制
1.使用acl配置项定义需要控制的条件
2.通过使用http_access配置项对已经定义的列表做”允许”或拒绝访问的控制
ACL访问控制列表的定义方法:
acl 列表名称 列表类型 列表内容(可以为多个内容,以空格分隔,为或的关系)
访问权限定义方法
http-access allow或deny 列表名

说明:
1. 每一条http_access规则中,可以同时包含多个控制列表,空格分隔,为与的关系
2. 取反条件时,用!符号
3. http_access必须放在acl之后
关于规则的执行过程:
4. 找到一条规则即不再向后搜索
5. 没有配置任何规则时,squid服务将拒绝客户端的请求
6. 有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限

e.g.若要针对目标地址建立黑名单文件,可以参考以下操作:

vim /etc/squid/iplocak.list        //建立目标IP地址
62.153.198.25
62.153.198.26
62.153.198.27
......

vim /etc/squid/dmblock.list         //建立目标域地址名单
.qq.com
.msn.com
.live.com
......

vim /etc/squid.conf
acl IPBLOCK dst "/etc/squid/ipblock.list"     //调用指定文件中的列表内容
acl DMBLOCK dstdomain "/etc/squid/dmblock.list"

你可能感兴趣的:(系统运维)