透明代理:客户不需要指定代理服务器的地址和端口,而是通过网关,由防火墙的重定向策略将用户的请求交给代理服务器处理;域名解析有客户机完成
一。编译安装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服务
二。构建透明代理(以上图为例)
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"