构建透明代理
安装squid支持透明模式
- squid透明代理本属于squid标准传统代理的一部分,本文特意将透明代理单独写出,是因为yum安装的版本中没有支持透明模式的模块。
- 因此,支持透明代理的模块需要在手动编译安装时加入。
tar zxvf squid-3.4.6.tar.gz -C /opt/
cd /opt/squid-3.4.6
./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 //使用GNU正则表达式
实验环境
服务器 | 操作系统 | IP地址 | 使用软件 |
---|---|---|---|
squid代理服务器 | centos7.3 | 内192.168.100.1 外12.0.0.1 | squid |
外网web服务器 | centos7.3 | 12.0.0.12 | http |
client | windows7 | 192.168.100.100 | IE浏览器 |
实验拓扑展示
透明代理配置过程
squid代理服务器设置
1、添加网卡,内网卡ens33,外网卡ens37
- 网卡添加完成后修改IP,此过程建立在已经安装好squid缓存代理服务器基础上。
- 网卡配置如下图所示:
- 接着打开路由转发功能:
vim /etc/sysctl.conf
net.ipv4.ip_forward = 1 //添加打开路由转发功能
sysctl -p //立即生效
- 或者这样打开路由转发功能:
echo "1" > /proc/sys/net/ipv4/ip_forward
2、配置squid代理服务配置文件
ln -s /usr/local/squid/sbin/* /usr/local/sbin/
useradd -M -s /sbin/nologin squid
chown -R squid.squid /usr/local/squid/var/ vim /etc/squid/squid.conf
# Squid normally listens to port 3128
http_port 192.168.100.1:3128 transparent //设置为内网端口代理
cache_mem 64 MB #指定缓存功能所使用的内存空间大小,便于保持访问较频繁的WEB对象,容量最好为4的倍数,单位为MB,建议设为物理内存的1/4
reply_body_max_size 10 MB #允许用户下载的最大文件大小,以字节为单位。默认设置0表示不进行限制
maximum_object_size 4096 KB #允许保存到缓存空间的最大对象大小,以KB为单位,超过大小限制的文件将不被缓存,而是直接转发给用户
...
cache_effective_user squid #添加 指定程序用户
cache_effective_group squid #添加 指定账号基本组
coredump_dir /usr/local/squid/var/cache/squid #在这一行上方添加
systemctl restart squid.service
3、写入防火墙nat策略
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128 //允许http端口服务
iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128 //允许https端口服务
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
4、外网web服务器配置
- 将外网网卡IP设置为12.0.0.12,启动HTTP服务即可。
5、客户端访问
- 客户端访问时不需要通过在浏览器中设置代理功能,直接访问IP地址即可。访问结果如下: