Centos 7安裝Squid代理服務及構建傳統代理

博文大綱
一、Squid服務概述
二、安裝及運行控制

一、Squid服務概述

作爲應用層的代理服務軟件,Squid主要提供緩存加速、應用層過濾控制的功能。

1、代理的工作機制

當客戶機通過代理來請求Web頁面時,指定的代理服務器會先檢查自己的緩存,如果緩存中已經有客戶機需要的頁面,則直接將緩存中的頁面內容反饋給客戶機;如果緩存中沒有客戶機要訪問的頁面,則由代理服務器向Internet發送訪問請求,獲得返回的Web頁面以後,將網頁數據保存到緩存中併發送給客戶機,如下圖所示:
Centos 7安裝Squid代理服務及構建傳統代理
由於客戶機的web訪問請求實際上是squid代理服務器來代替完成的,從而可以隱藏了用戶的真實IP地址,起到一定的保護作用。另一方面,squid也可以針對要訪問的目標、客戶機的地址、訪問的時間段進行過濾控制。

2、代理的基本類型

  • 傳統代理:也就是普通的代理服務,需要我們客戶端在瀏覽器、聊天工具等一些程序中設置代理服務器的地址和端口,然後才能使用代理來訪問網絡,這種方式相比較而言比較麻煩,因爲客戶機還需手動指定代理服務器,所以一般用於Internet環境。

  • 透明代理:與傳統代理實現的功能是一樣的,區別在於客戶機不需要手動指定代理服務器的地址和端口,而是通過默認路由、防火牆策略將web訪問重定向,實際上仍然交給代理服務器來處理,重定向的過程完全是由squid服務器進行的,所以對於客戶機來說,甚至不知道自己使用了squid代理服務,因此呢,我們稱之爲透明模式。

透明代理多用於局域網環境,如在Linux網關中啓用透明代理後,局域網主機無須進行額外設置就能享受更好的上網速度。

二、安裝及運行控制

所需設備:

  • Windows客戶端一臺;IP地址:192.168.100.102
  • linux客戶端一臺;IP地址:192.168.100.10
  • squid服務器一臺; IP地址:192.168.100.20
  • web服務器一臺;IP地址:192.168.100.30

所需的鏡像請訪問:https://pan.baidu.com/s/1-3jN_z-JqWg2X1Bpz0SHUw
提取碼:ysxn

1、安裝httpd

[root@centos03 ~]# yum -y install httpd    <!--安裝httpd服務-->
[root@centos03 ~]# cd /var/www/html/        <!--修改網站主頁的內容-->
[root@centos03 html]# ls -a
.  ..  
[root@centos03 html]# echo "www.accp.com" > index.html       <!--插入數據-->
[root@centos03 ~]# systemctl start httpd           <!--啓動httpd服務-->
[root@centos03 ~]# systemctl enable httpd        <!--設置開機自動啓動-->

2、安裝linux命令行客戶機

[root@centos01 ~]# yum -y install elinks     
      <!--安裝elinks軟件,linux操作系統光盤自動此軟件包-->
[root@centos01 ~]# elinks http://192.168.100.30  <!--訪問網站服務器是否可以訪問到-->

Centos 7安裝Squid代理服務及構建傳統代理

3、編譯安裝Squid

[root@centos02 ~]# mount /dev/cdrom /mnt/  <!--掛載linux光盤-->
[root@centos02 ~]# tar zxvf /mnt/squid-3.4.6.tar.gz -C /usr/src/ 
          <!--解壓縮squid軟件包到/usr/src/目錄-->

[root@centos02 squid-3.4.6]# ./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  <!--配置squid-->
[root@centos02 squid-3.4.6]# make && make install <!--編譯安裝squid-->

上述配置項的具體作用如下:

  • --prefix=/usr/local/squid :指定安裝目錄;
  • --sysconfdir=/etc :單獨將配置文件修改到其他目錄;
  • --enable-linux-netfilter:使用內核過濾;
  • --enable-async-io=值:異步I/O,提升存儲性能;
  • --enable-default-err-language=Simplify_Chinese :錯誤信息顯示語言;
  • --disable-poll 與--enable-epoll:關閉默認使用poll模式,開啓epoll模式提提升性能;
  • --enable-gunregex:使用GUN正則表達式;
    更多的配置項可以參考“./configure --help”;

安裝完成後,創建鏈接文件、創建用戶和組

[root@centos02 ~]# ln -s /usr/local/squid/sbin/* /usr/local/sbin/
[root@centos02 ~]# useradd -M -s /sbin/nologin squid 
[root@centos02 ~]# chown -R squid:squid /usr/local/squid/var/ 

4、修改squid主配置文件

[root@centos02 ~]# vim /etc/squid.conf  <!--編輯squid主配置文件-->
54 http_access allow all          <!--允許所有人訪問squid-->
60 http_port 3128            <!--squid監聽的端口號-->
61 cache_effective_user squid      <!--管理squid的賬戶-->
62 cache_effective_group squid      <!--管理squid的組-->
63 reply_body_max_size 10 MB <!--允許用戶下載最大數據10M-->
68 coredump_dir /usr/local/squid/var/cache/squid  <!--設置緩存位置-->
[root@centos02 ~]# squid -k parse <!--檢查配置文件語法是否錯誤-->

5、創建squid管理服務腳本

[root@centos02 ~]# vim /etc/init.d/squid    
 <!--爲了方便控制服務,編寫一個squid服務腳本,並添加爲系統服務,
 腳本如下-->
#!/bin/bash
# chkconfig: 35 90 25
# config file:/etc/squid.conf
# pidfile: /usr/local/squid/var/run/squid.pid
# Description: Squid - Internet object cache.
PID="/usr/local/squid/var/run/squid.pid"
CONF="/etc/squid.conf"
CMD="/usr/local/squid/sbin/squid"
case "$1" in
  start)
        netstat -anpt | 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
        echo "正在關閉squid..."
;;
  status)
     [ -f $PID ] &> /dev/null
        if [ $? -eq 0 ]
           then
     netstat -anpt | 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|restart|reload|check|status}"
exit 1
;;
esac
[root@centos02 ~]# chmod +x /etc/init.d/squid  <!--腳本添加執行權限-->
[root@centos02 ~]# chkconfig --add squid    <!--添加系統服務-->
[root@centos02 ~]# chkconfig --level 35 squid on   <!--設置開機自動啓動-->
[root@centos02 ~]# /etc/init.d/squid start    <!--啓動squid服務-->
正在啓動squid...

現在基於傳統代理的squid代理服務器已經配置完成了

6、Linux客戶端命令行使用代理服務器

[root@centos01 ~]# vim /etc/profile
HTTP_PROXY=http://192.168.100.20:3128  <!--爲使用HTTP協議指定代理-->
HTTPS_PROXY=http://192.168.100.20:3128  <!--爲使用HTTPS協議指定代理-->
FTP_PROXY=http://192.168.100.20:3128   <!--爲使用FTP協議指定代理-->
NO_PROXY=192.168.10.,192.168.20.   <!--對兩個局域網段不使用代理-->
export HTTP_PROXY HTTPS_PROXY FTP_PROXY NO_PROXY 
[root@centos01 ~]# source /etc/profile    <!--應用代理-->
[root@centos01 ~]# elinks http://192.168.100.30   <!--客戶端訪問網站服務器-->
[root@centos03 ~]# tail -f /var/log/httpd/access_log     
                          <!--網站服務器追蹤squid代理服務器的訪問日誌文件-->
                                                    <!--請注意,所有跟蹤都是在訪問之前先做好準備的-->
192.168.100.20 - - [18/Nov/2019:04:38:40 +0800] "GET / HTTP/1.1" 200 13 "-" "ELinks/0.12pre6 (textmode; Linux; 80x18-2)"

7、Windows客戶機使用代理服務器

1)網卡更換成同一塊網卡

Centos 7安裝Squid代理服務及構建傳統代理

2)配置同網段IP地址

Centos 7安裝Squid代理服務及構建傳統代理

3)配置代理服務器IP地址和端口號

Centos 7安裝Squid代理服務及構建傳統代理
Centos 7安裝Squid代理服務及構建傳統代理

4)訪問192.168.100.30測試是否成功

Centos 7安裝Squid代理服務及構建傳統代理

5)網站服務器追蹤squid代理服務器的訪問日誌文件

[root@centos03 ~]# tail -f /var/log/httpd/access_log       
                                        <!--請注意,所有跟蹤都是在訪問之前先做好準備的-->
192.168.100.20 - - [18/Nov/2019:04:38:40 +0800] "GET / HTTP/1.1" 200 13 "-" "ELinks/0.12pre6 (textmode; Linux; 80x18-2)"

192.168.100.20 - - [18/Nov/2019:05:18:03 +0800] "GET /favicon.ico HTTP/1.1" 404 209 "-" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"

透明代理將在下一篇博文詳細配置,盡情期待!!!

—————— 本文至此結束,感謝閱讀 ——————

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章