1. 程式人生 > >Squid正向代理服務器

Squid正向代理服務器

Squid正向代理服務器

Squid代理服務器
一、緩存代理概述
應用層的代理服務軟件,Squid主要提供緩存加速、應用層過濾控制的功能

1、代理的工作機制
第一種情況:Squid服務器中有緩存當客戶機通過代理來請求Web頁面時,指定的代理服務器會先檢查自己的緩存,如果緩存中已經有客戶機需要的頁面,則直接將緩存中的頁面內容反饋給客戶機;
第二種情況:Squid服務器中沒有緩存如果緩存中沒有客戶機要訪問的頁面,則由代理服務器向Internet發送訪問請求,當獲得返回的Web頁面以後,將網頁數據保存到緩存中並發送給客戶機
技術分享圖片
HTTP代理的緩存加速對象主要是文字、圖像等靜態Web元素。使用緩存機制後,當客戶機在不同的時候訪問同一Web元素,或者不同的客戶機訪問相同的Web元素時,可以直接從代理服務器的緩存中獲得結果。這樣就大大減少了向Internet提交重復的Web請求的過程,提高了客戶機的Web訪問響應速度由於客戶機的Web訪問請求實際上是由代理服務器來代替完成的,從而可以隱藏用戶的真實IP地址,起到一定的保護作用。另一方面,代理服務器擔任著類似“經紀人”的角色,所以有機會針對要訪問的目標、客戶機的地址、訪問的時間段等進行過濾控制。

2、代理的基本類型
根據實現方式不同,代理服務可分為傳統代理和透明代理兩種常見的代理服務:
a.傳統代理:也就是普通的代理服務,首先必須在客戶機的瀏覽器、QQ聊天工具、下載軟件等程序中手動設置代理服務器的地址和端口,然後才能使用代理來訪問網絡。對於網頁瀏覽器,訪問網站時的域名解析請求也會發給指定的代理服務器
b.透明代理:提供與傳統代理相同的功能和服務,其區別在於客戶機不需要指定代理服務器的地址和端口,而是通過默認路由、防火墻策略將Web訪問重定向,實際仍然交給代理服務器來處理。重定向的過程對客戶機來說是“透明”的,用戶甚至都不知道自己在使用代理服務,所以稱為“透明代理”。使用透明代理時,網頁瀏覽器訪問網站時的域名解析請求將優先轉發給DNS服務器實際應用中,傳統代理多見於Internet環境,如為QQ程序使用代理可以隱藏本機真實IP地址,為下載工具使用多個代理可以規避服務器的並發連接限制。而透明代理多見於局域網環境,如在Linux網關中啟用透明代理後,局域網主機無需進行額外設置就可以享受更好的上網速度

二、安裝及運行控制(實驗操作)
實驗環境:準備三臺centos6.5x64的服務器,yum源和IP根據自己需求配置,切記關閉防火墻和selinux(用不到防火墻的服務器),具體環境如下圖
技術分享圖片

網關服務器配置

1、配置網關內網ip
vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.1.10
NETMASK=255.255.255.0
DNS1=114.114.114.114
2、配置網關外網橋接ip

vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth1
DEVICE=eth1
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=dhcp
3、重啟服務器 reboot
4、開啟路由轉發 vim /etc/sysctl.conf
技術分享圖片
//測試路由轉發 sysctl –p
技術分享圖片
5、配置防火墻規則並保存 iptables -t nat -I POSTROUTING -s 192.168.1.0/24 -j SNAT --to-source 192.168.152.87
技術分享圖片

                      Squid服務器配置

1、配置IP vim /et c/vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
DEFROUTE=yes
IPADDR=192.168.1.20
NETMASK=255.255.255.0
GATEWAY=192.168.1.10
DNS1=114.114.114.114
2、重啟網卡 service network restart
技術分享圖片
3、上傳squid-3.4.6.tar壓縮包
技術分享圖片
4、解壓squid-3.4.6.tar包 tar zxvf squid-3.4.6.tar.gz -C /usr/src/
5、進入解壓目錄 cd /usr/src/squid-3.4.6/
技術分享圖片
6、 配置Squid的編譯選項時,將安裝目錄設為/usr/local/squid,其他具體選項根據實際需求來定,配置前可參考“./configure --help”給出的說明
1)編譯squid
./configure --prefix=/usr/local/squid --sysconfdir=/etc/ --enable-linux-netfilter --enable-arp-acl --enable-linux-tproxy --enable-async-io=100 --enable-err-language="Simplify_Chinese" --enable-underscore --enable-poll --enable-gnuregex
技術分享圖片
選項解讀:
--prefix=/usr/local/squid \安裝目錄
--sysconfdir=/etc/ \單獨將配置文件修改到其他目錄
--enable-arp-acl \可以在規則中設置直接通過客戶端MAC進行管理,防止客戶端使用IP欺騙
--enable-linux-netfilter \使用內核過濾
--enable-linux-tproxy \支持透明模式
--enable-async-io=值 \異步I/O,提升存儲性能
--enable-err-language="Simplify_Chinese" \錯誤信息的顯示語言
--enable-underscore \允許URL中有下劃線
--enable-poll \使用Poll()模式,提升性能
--enable-gnuregex \使用GNU正則表達式
2)安裝squid make && make install
技術分享圖片![](
7、添加環境變量
1)echo"PATH=$PATH:/usr/local/squid/sbin" >>/etc/profile
技術分享圖片
技術分享圖片
2)執行環境變量 source /etc/profile
技術分享圖片
3)測試變量是否能全局使用(如下圖則為成功) squid
技術分享圖片
8、創建squid用戶和組
useradd -M -s /sbin/nologin squid
技術分享圖片
chown -R squid:squid /usr/local/squid/var/
技術分享圖片
9、squid服務的配置文件位於/etc/squid.conf,充分了解配置行的作用將有助於管理員根據實際情況靈活配置代理服務,更詳細的配置項請參考/etc/squid.conf.documented文件
1)修改squid配置文件 vim /etc/squid.conf
技術分享圖片
重點註釋:
1)http_port 3128 \用來指定代理服務監聽的地址和端口(默認的端口號為3128)
2)cache_effective_user squid \指定squid的程序用戶,用來設置初始化、運行時緩存的賬號
3)cache_effective_group squid \默認為cache_effective_user指定賬號的基本組
10、Squid的運行控制
1)檢查squid配置語法是否正確 squid -k parse
技術分享圖片
註釋:沒有出現error報錯為正常
2)啟動、停止squid
第一次啟動Squid服務時,會自動初始化緩存目錄。在沒有可用的Squid服務腳本的情況下,也可以直接調用Squid程序來啟動服務,這時需要先進行初始化。
//初始化目錄 squid -z
//啟動squid服務 squid
3)查看squid監聽狀態(當前正常) netstat -utpln | grep "squid"
技術分享圖片
4)使用Squid服務腳本
為了使Squid服務的啟動、停止、重載等操作更加方便,可以編寫Shell服務腳本,並使用chkconfig和service工具來進行管理。
#!/bin/bash
# chkconfig: 2345 90 25
# config: /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 -utpln | grep squid &>/dev/null
if [ $? -eq 0 ]
then
echo "Squid is running"
else
$CMD
fi
;;
stop)
$CMD -k kill &>/dev/null
rm -rf $PID &>/dev/null
;;
status)
[ -f $PID ] &>/dev/null
if [ $? -eq 0 ]
then
netstat -utpln | 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 "用法:{ start | stop | restart | reload | check | status}"
;;
esac
5)添加腳本到本地 vim /etc/init.d/squid
6)給腳本執行權限 chmod +x /etc/init.d/squid
技術分享圖片
7)將腳本註冊為系統服務 chkconfig --add squid
技術分享圖片

8)將腳本設置為2345級別開機自啟 chkconfig squid on
技術分享圖片
9)測試腳本 /etc/init.d/squid restart
技術分享圖片

10、關閉防火墻 /etc/init.d/iptables stop
技術分享圖片
11、關閉selinux vim /etc/sysconfig/selinux
技術分享圖片

12、監查日誌 tail -f /usr/local/squid/var/logs/access.log
技術分享圖片
註釋:如上圖則表示沒有問題

配置客戶端
1、設置ip(windows客戶端)
技術分享圖片
2、手動關閉防火墻
3、設置瀏覽器代理
技術分享圖片
4、確定並關閉瀏覽器,打開命令行ping www.baidu.com (同時查看代理)

Squid正向代理服務器