Squid ---- 傳統代理模式
一:定義
Squid傳統代理是普通的代理服務,需要客戶端在瀏覽器、聊天工具等一些程序中設置代理服務器的地址和端口,然後才能使用代理來訪問網絡,這種方式相比較而言比較麻煩,因爲客戶機還需手動指定代理服務器,所以一般用於Internet環境 。
二:代理的作用
squid作爲一款應用層的代理服務軟件,主要提供了緩存加速、應用層過濾的功能;提高web訪問速度;隱藏客戶機的真實 IP地址,起到一定保護作用。
三:實驗過程
1、實驗環境
2、修改主機名 ,創建新目錄並把squid壓縮包掛載上,然後解壓
[root@localhost ~]# hostnamectl set-hostname squid
[root@localhost ~]# su
[root@squid ~]# mkdir /abc
[root@squid ~]# mount.cifs //192.168.100.1/share /abc
[root@squid ~]# cd /abc
[root@squid abc]# tar zxvf squid-3.4.6.tar.gz -C /opt
3、安裝編譯工具,再編譯,再安裝
[root@squid abc]# cd squid-3.4.6
[root@squid squid-3.4.6]# yum install gcc gcc-c++ -y
[root@squid squid-3.4.6]#./configure --prefix=/usr/local/squid \ ‘安裝路徑’
--sysconfdir=/etc \ ‘配置文件目錄’
--enable-arp-acl \ ‘啓用acl訪問控制列表功能’
--enable-linux-netfilter \ ‘內核過濾’
--enable-linux-tproxy \ ‘支持透明模式’
--enable-async-io=100 \ ‘對於io的優化’
--enable-err-language="Simplify_Chinese" \ ‘支持的語言’
--enable-underscore \ ‘支持下劃線’
--enable-poll \ ‘功能的提升’
--enable-gnuregex ‘正則表達式的提升’
[root@squid squid-3.4.6]# make && make install
4、爲了方便管理,創建軟鏈接
[root@squid squid-3.4.6]# ln -s /usr/local/squid/sbin/* /usr/local/sbin
5、建立程序性用戶squid ,並賦予權限
[root@squid squid-3.4.6]# useradd -M -s /sbin/nologin squid
[root@squid squid-3.4.6]# chown -R squid.squid /usr/local/squid/var/
6、修改主配置文件
[root@squid squid-3.4.6]# vim /etc/squid.conf
[root@squid squid-3.4.6]# squid -k parse ‘檢查語法,沒問題Ctrl+C鍵取消’
[root@squid squid-3.4.6]# squid -z ‘初始化緩存目錄’
[root@squid squid-3.4.6]# squid ‘啓動服務’
[root@squid squid-3.4.6]# netstat -ntap | grep 3128 ‘檢測是否啓動成功’
7、編寫啓動腳本
[root@squid squid-3.4.6]# cd /etc/init.d
[root@squid init.d]# vim 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
[root@squid init.d]# chmod +x squid ‘添加權限’
[root@squid init.d]# chkconfig --add squid ‘便於service識別’
[root@squid init.d]# service squid stop ‘關閉squid服務’
[root@squid init.d]# service squid start ‘開啓squid’
8、搭建傳統代理服務器
[root@squid init.d]# vim /etc/squid.conf
9、制定防火牆的規則
[root@squid init.d]# iptables -F '清空防火牆表內容'
[root@squid init.d]# iptables -L '查看防火牆表內容'
[root@squid init.d]# setenforce 0 '關閉防火牆增強型功能'
[root@squid init.d]# iptables -I INPUT -p tcp --dport 3128 -j ACCEPT '新增規則,允許3128端口做轉發'
[root@squid init.d]# service squid reload '重啓服務'
1、安裝httpd服務 ,關閉防火牆
[root@web ~]# systemctl stop firewalld.service
[root@web ~]# setenforce 0
[root@web ~]# yum install httpd -y
[root@web ~]# systemctl start httpd ‘開啓httpd服務’
2、在win10客戶機測試web網頁
3、 通過查看訪問日誌,發現來訪者的IP地址爲win10客戶端的IP地址192.168.48.129
4、設置squid代理
(1)首先清除客戶機瀏覽器的緩存記錄(以谷歌爲例)
(2)設置代理
打開谷歌瀏覽器,設置-高級-系統-打開您計算機的代理設置
(3)再次訪問Web服務器
(4)再次查看Web端的httpd訪問日誌
[root@web ~]# cat /var/log/httpd/access_log ‘發現訪問原地址48.129 變成了192.168.48.128 squid的代理地址’
由此可以看出是由代理服務器過來訪問網頁的,而不是客戶機,這就起到了隱藏客戶機真實 IP地址的目的。
瀏覽器訪問 web服務器的IP地址,由於我們設置了代理服務,所以訪問網站這個請求,是代理服務器幫我們完成的。爲了驗證,可以查看 web服務器的日誌文件,就能知道訪問的 IP地址是客戶機還是代理服務器的。