Squid代理服务器
一、squid服务理论:
缓存代理加速web站点的访问速度
代理的好处:提高web访问速度、隐藏客户机的真实IP地址
代理的基本类型:
传统代理:可以为互联网也可以为局域网主机提供代理
透明代理:只为局域网提供代理,需配置在网关主机上
二、安装及运行控制:
Squid基于硬盘存放缓存数据,工作在应用层,提供HTTP、FTP缓存
编译安装squid:
./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-arp-acl --enable-linux-netfilter --enable-linux-tproxy --enable-async-io=100 --enable-err-language=”Simplify_Chinese” --enable-underscore --enable-poll --enable-gnuregex && make && make install
--prefix=/usr/local/squid 安装目录
--sysconfdir=/etc 单独将配置文件修改到其他目录
--enable-arp-acl 可以在规则中设置直接通过客户端MAC
进行管理,防止客户端使用IP欺骗。
--enable-linux-netfilter 使用内核过滤
--ebable-linux-tproxy 支持透明模式
--enable-async-io=值 异步I/O,提升存储性能
--enable-err-language=”Simplify_Chinese” 错误信息的显示语言
--enable-underscore 允许URL中有下划线
--enable-poll 使用poll()模式,提升性能
--enable-gnureges 使用GNU正则表达式
创建链接文件、创建用户和组
ln -s /usr/local/squid/sbin/* /usr/local/sbin
useradd -M -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var
传统代理:
修改squid的配置文件(/etc/squid.conf)
http_port 3128 代理服务默认端口 TCP 3128
去掉cache_dir前的#号(磁盘占用大小、一级子目录数、二级子目录数)
手动添加:
cache_effective_user squid 指定squid的程序用户
cache_effective_group squid 指定账号的基本组
visible_hostname 主机名
Squid的运行控制
squid -k parse 配置文件语法检查
squid 启动squid服务
(squid -k kill 停止服务 squid 启动服务) 重启服务
注:防火墙
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
service iptables save
透明代理:
配置squid支持透明代理:
vi /etc/squid.conf
http_port 192.168.1.1:3128 transparent
(squid -k kill 停止服务 squid 启动服务) 重启服务
设置iptables的重定向策略:
iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
service iptables save
ACL访问控制
格式: acl 列表名称列表类型列表内容
常用的访问控制列表类型:
src 源IP地址、网段、IP地址范围
dst 目标IP地址、网段、主机名
port 目标端口
dstdomain 目标域,匹配域内所有站点
time MTWHTFAS (星期日-------星期六)
maxconn 每个客户机的并发连接数
url_regex 目标资源的URL地址,-i表示忽略大小写
urlpath_regex 目标资源的整个URL路径,-i表示忽略大小写
执行访问控制时,squid将按照各条规则的顺序依次进行检查,如果找到一条相匹配的规则就不再向后搜索
1、没有设置任何规则时:squid将拒绝客户端的请求
2、有规则但找不到相匹配的项:squid将采用与最后一条规则相反的权限,即
如果最后一条规则是allow,就拒绝客户端的请求,否则允许该请求