squid使用端口:3128
代理的基本类型
传统代理:适用于Internet,需明确指定服务端
透明代理:适用于共享上网网关,不需指定服务端
使用代理的好处
提高Web访问速度
隐藏客户机的真实IP地址
代理服务器工作流程:
1、客户机访问网站,其实是访问的代理服务器
2、当客户机第一次请求页面的时候,代理服务器缓存内没有被请求的页面
代理服务器就会去网站服务器请求页面
3、当代理服务器得到被请求的页面后,就保存到本地缓存中
4、当客户机再次请求该页面的时候,代理服务器直接响应
不会再访问网站服务器
网站+DNS服务器A(192.168.1.1/24 DNS1:192.168.1.1)
安装httpd和DNS
echo "www.benet.com" >> /var/www/html/index.html
squid代理服务器B(192.168.1.2/24 DNS1:192.168.1.1)
安装squid
tar -zxf squid....
cd squid...
./configure
--prefix=/usr/local/squid 指定安装路径
--sysconfdir=/etc 指定配置文件路径
--enable-linux-netfilter 启用内核过滤
--enable-async-io=240 提高性能
--enable-default-err-language=Simplify_Chinese 启用中文报错
--disable-poll 禁用poll模式
--enable-epoll 启用epoll模式
--enable-gnuregex 启用正则
./configure --prefix=/usr/local/squid --sysconfdir=/etc --enable-linux-netfilter --enable-async-io=240 --enable-default-err-language=Simplify_Chinese --disable-poll --enable-epoll --enable-gnuregex && make && make install
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/
chmod -R 757 /usr/local/squid/var/
修改配置文件
vim /etc/squid.conf
添加
cache_effective_user squid #指定程序用户
cache_effective_group squid
在http_access deny前添加
http_access allow all
检测语法
squid -k parse 检测语法
squid -z 清空缓存
squid 启用squid
netstat -anpt | grep squid 查看squid是否已运行
测试:客户机C(192.168.1.3/24 DNS1:192.168.1.1)
浏览器上手动指定代理服务器(192.168.1.2)
访问网站,查看网站服务器的访问日志,没有192.168.1.3的访问记录
透明代理(代理服务器是内网网关)
1、网站服务器同上(使用公网网卡IP:192.168.2.2/24 GW:192.168.2.1)
2、代理服务器B(内网网卡:192.168.1.1/24、公网网卡:192.168.2.1/24)
安装squid、优化执行路径、创建程序用户
修改配置文件,在传统代理基础上
修改:http_port 3128
为:http_port 内网网卡IP:3128 transparent
修改内核文件,添加路由功能
vim /etc/sysctl.conf
添加
net.ipv4.ip_forward = 1
保存退出后使用sysctl -p使文件生效
启用防火墙,添加防火墙规则
systemctl start firewalld
firewall-cmd --zone=external --add-interface=内网网卡名
firewall-cmd --zone=internal --add-interface=公网网卡名
firewall-cmd --zone=external --add-service=http
firewall-cmd --zone=external --add-service=https
firewall-cmd --zone=external --add-port=3128/tcp
firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i 内网网卡名 -p tcp --dport 80 -j REDIRECT --to-ports 3128
firewall-cmd --direct --add-rule ipv4 nat PREROUTING 0 -i 内网网卡名 -p tcp --dport 443 -j REDIRECT --to-ports 3128
firewall-cmd --runtime-to-permanent
前两句:设置网卡所属区域
3、4句:添加区域允许通过的服务
5句:添加区域允许通过的端口号
6、7句:把来自内网要访问80端口的请求改成访问3128端口,激活代理
3、验证:客户机(内网网卡 IP:192.168.1.2/24 GW:192.168.1.1)
直接用浏览器访问192.168.2.2,
然后查看网站服务器的访问记录(/etc/httpd/logs/access_log)
ACL访问控制方式
根据源地址、目标URL、文件类型等定义列表
acl 列表名称 列表类型 列表内容 ...
针对已定义的acl列表进行限制
http_access allow或deny 列表名称 ...
常用的ACL列表类型
src 源地址
dst 目标地址
port 目标端口
dstdomain 目标域
time 访问时间
maxconn 最大并发连接
url_regex 目标URL地址
Urlpath_regex 整个目标URL路径
举例:允许1.2访问,拒绝1.3访问
acl yx src 192.168.1.2
acl byx src 192.168.1.3
http_access allow yx
http_access deny byx
应用规则:从上往下匹配,匹配到就不再继续往下匹配