1. 程式人生 > >Centos7 下 squid安裝 以及 傳統代理和透明代理的部署

Centos7 下 squid安裝 以及 傳統代理和透明代理的部署

文件大小 cmd 過程 running useradd ply chm nologin 命令

Centos7 下 squid代理服務安裝

代理服務的工作機制

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

當客戶機通過代理來請求Web頁面時,指定的代理服務器會先檢查自己的緩存,
如果緩存中已經有客戶機需要訪問的頁面,則直接將緩存中的頁面內容反饋給客戶機
如果緩存中沒有客戶機需要訪問的頁面,則由代理服務器向 Internet發送訪問請求,
當獲得返回的Web頁面以後,將網頁數據保存到緩存中並發送給客戶機。

由於客戶機的Web訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶的真實IP地址,起到一定的保護作用。另一方面,代理服務器擔任著類似‘經紀人’的角色,所以有機會針對要訪問的目標,客戶機的地址、訪問的時間段等進行過濾控制

Squid 安裝過程

tar xzvf squid-3.4.6.tar.gz
cd 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正則表達式

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/   ##更改屬主屬組

vim /etc/squid.conf
## 添加下面兩行
cache_effective_user squid   ##指定squid的程序用戶,用來設置初始化,運行時緩存的賬號

cache_effective_group squid   ##squid指定賬號的基本組

squid -k parse     ##檢查配置文件的語法是否正確

squid -z    ##初始化緩存目錄

squid    ##啟動squid服務

通過netstat -ntap |grep squid
發現3128端口的進程    squid服務開啟成功

接下來制作squid服務腳本
方便對squid服務的操作

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 squid

chkconfig --add squid
chkconfig --level 35 squid on

這樣就可以通過squid腳本來啟動停止重載服務了

代理的基本類型

根據實現的方式不同,代理服務可分為傳統代理和透明代理兩種常見的代理服務。

傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ聊天
工具、下載軟件等程序中手動設置代理服務器的地址和端口,然後才能使用
代理服務來訪問網絡。對於網頁瀏覽器,訪問網站時的域名解析請求也會發
送給指定的代理服務器。

透明代理:提供與傳統代理相同的功能和服務,其區別在於客戶機不需要指定
代理服務器的地址和端口,而是通過默認路由、防火墻策略將Web訪問重定向,
實際上仍然交給代理服務器來處理。重定向的過程對客戶機來說是“透明”的,
用戶甚至並不知道自己在使用代理服務,所以稱為“透明代理”。使用透明代
理時,網頁瀏覽器訪問網站時的域名解析請求將優先發給DNS服務器

傳統代理

vim /etc/squid.conf

http_access allow all  ##allow 在deny上面
http_access deny all
http_port 3128  
cache_mem 64 MB    ##指定緩存功能所使用的內存空間大小,便於保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4
reply_body_max_size 10 MB    ##允許用戶下載的最大文件大小,以字節為單位。默認設置0表示不進行限制
maximum_object_size 4096 KB     ##允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶

iptables -F     ##清除防火墻策略
iptables -I INPUT -p tcp --dport 3218 -j ACCEPT    ##添加允許策略

service squid reload
squid -k reconfigure    ##這兩條命令可以重載服務

在WINDOWS客戶機配置代理服務器

在IE 瀏覽器中
選擇 工具  -  internet選項 - 連接 - 局域網設置

配置相應的 代理服務器設置   ,端口為 3128

在LINUX 客戶機中配置代理服務器

vim /etc/profile
   HTTP_PROXY=http://192.168.x.x:3128  ##為使用HTTP協議指定代理
   HTTPS_PROXY=http://192.168.x.x:3128   ##為使用HTTPS協議指定代理
   FTP_PROXY=http://192.168.x.x:3128    ##為使用FTP協議指定代理
   NO_PROXY=192.168.x. ##對局域網段不使用代理
   export HTTP_PROXY HTTPS_PROXY
   FTP_PROXY NO_PROXY

source /etc/profile

透明代理

在LINUX網關上
ens33網卡為內部局域網網關
ens36網卡為外部公網網關

vim /etc/squid.conf
http_port 192.168.x.x:3128 transparent    ## 在IP地址上提供透明代理服務

service squid reload 重載服務

iptables -t nat -I PREROUTING -i ens33 -s 192.168.x.0/24 -p tcp --dport 80 -j REDIRECT --to 3128

iptables -t nat -I PREROUTING -i ens33 -s 192.168.x.0/24 -p tcp --dport 443 -j REDIRECT --to 3128

iptables -I INPUT -p tcp --dport 3218 -j ACCEPT
## 防火墻做重定向操作,將訪問本機80 443端口的請求重定向到3128端口

Centos7 下 squid安裝 以及 傳統代理和透明代理的部署