squid:正向代理服务器:
1.代替客户端向网站请求数据,不需要访问代理的ip地址,直接请求目的网站,有代理服务器处理请求和响应。可以隐藏用户的真实ip
2.客户端访问目标网站之后(静态web元素)保存到缓存中,发送给客户端。下一次所有的客户机都可以使用缓存访问,加快访问速度
1.资源获取,代替客户端获取目标服务器的资源
2.加速访问 代理服务器可以和目标服务器距离更近,可以起到一定的加速作用
3.缓存作用 代理服务器保存从目标服务器获取的资源。客户端下一次再请求目标服务器可以直接访问缓存即可,减轻目标服务器的压力
4.隐藏真实的ip地址,代理服务器代替客户端请求,客户端的信息不会显示
1.传统代理,正向代理,需要再客户端上指定好代理服务器的地址和端口
2.透明代理 客户端不再需要指定代理服务器的地址和端口,而是通过默认路由来进行转发。(squid服务器,网关)
3.反向代理 在反向代理的squid服务器当中缓存了请求资源,将资源直接返回给客户端。
否则,代理服务器会代理客户端向web服务器发起请求,然后再把请求的资源响应给客户端,同时把响应缓存在本地,后续请求者都可以使用。
SNAT和DNAT 代理服务器squid
网络层 应用层
改变数据包头部 不改变数据包的任何信息,直接把数据包发给代理,代理通过应用层过 滤的
源ip地址和目的地址 方式来实现转发
架构
test1:客户端 192.168.233.10
test2:squid 192.168.233.20(做透明代理会需要双网卡)
web页面 nginx1 192.168.233.61
web页面 nginx2 192.168.233.62
1.正向代理
所有
systemctl stop firewalld
setenforce 0
test2:
cd /opt
tar -xf squid-3.5.28.tar.gz
yum -y install gcc gcc-c++ make
cd /opt
ls
cd squid-3.5.28/
./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 \
--disable-poll \
--enable-epoll \
--enable-gnuregex
make -j 4 && 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/
vim /etc/squid.conf
set nu
56行
http_access allow all
配置文件的匹配规则:自上而下匹配
61行
cache_effective_user squid
cache_effective_group squid
68行
squid -k parse #检测配置文件是否正确
squid -z
回车
squid
netstat -antp | grep squid
squid -N -d1 #运行过程是否正常
vim /etc/init.d/squid
#!/bin/bash
#chkconfig: 2345 90 25
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
start)
netstat -natp | grep squid &> /dev/null
if [ $? -eq 0 ]
then
echo "squid is running"
else
echo "正在启动 squid..."
$CMD
fi
;;
stop)
$CMD -k kill &> /dev/null
rm -rf $PID &> /dev/null
;;
status)
[ -f $PID ] &> /dev/null
if [ $? -eq 0 ]
then
netstat -natp | grep squid
else
echo "squid is not running"
fi
;;
restart)
$0 stop &> /dev/null
echo "正在关闭 squid..."
$0 start &> /dev/null
echo "正在启动 squid..."
;;
reload)
$CMD -k reconfigure
;;
check)
$CMD -k parse
;;
*)
echo "用法:$0{start|stop|status|reload|check|restart}"
;;
esac
chmod +x /etc/init.d/squid
chkconfig --add /etc/init.d/squid
chkconfig --level 35 squid on #35 启动优先级 0-100 数字越大优先级越低
systemctl restart squid
netstat -antp | grep squid
vim /etc/squid.conf
63行插入
cache_mem 2000 MB #缓存功能使用的内存空间大小,容量最好为4的倍数,单位用MB,建议是内存的四分之一
reply_body_max_size 100 MB #允许用户下载的最大文件的大小。浏览器会提示请求或者访问太大
maximum_object_size 100 MB #能够缓存的对象的最大值。超过这个单位不会被缓存,直接返回给用户
service squid restart
systemctl restart squid
iptables -F
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
再开一个test2
tail -f /usr/local/squid/var/logs/access.log
nginx1:
systemctl restart nginx
vim /usr/local/nginx/html/index.html
this is squid
客户端1:
访问192.168.233.61 nginx1
透明代理:
test 2添加网络适配器 设置双网卡
web 12.0.0.2
cd /etc/sysconfig/network-scripts/
vim ifcfg-ens33
cp ifcfg-ens33 ifcfg-ens36
systemctl restart network
nginx1:
vim ifcfg-ens33
systemctl restart network
进入test2
vim /etc/sysctl.conf
net.ipv4.ip_forward=1
sysctl -p
vim /etc/squid.conf #透明代理
http_port 192.168.233.20:3128 transparent
squid -k parse
squid -N -d1
systemctl restart squid
test2:
iptables -t nat -vnL
iptables -t nat -I PREROUTING -i ens33 -s 192.168.66.0/24 -p tcp --dport 80 -j REDIRECT --to 3128
iptables -t nat -I PREROUTING -i ens33 -s 192.168.66.0/24 -p tcp --dport 443 -j REDIRECT --to 3128
iptables -I INPUT -p tcp --dport 3128 -j ACCEPT
test1:
vim ens33
反向代理:
test2
vim ens33
GATEWAY打开
DNS网关打开
还原nginx
nginx1:
systemctl restart nginx
systemctl stop firewalld
setenforece 0
vim /usr/local/nginx/html/index.html
nginx2:vim /usr/local/nginx/html/index.html
test2:iptables -F
iptables -t nat -F
vim /etc/squid.conf
http_port 192.168.233.20:80 accel vhost vport
netstat -antp | grep 80
systemctl restart squid
netstat -antp | grep squid #一定要是80端口
客户端
vim /etc/hosts
192.168.233.20 www.kgc.com
访问
curl www.kgc.com