天天看點

Squid在企業中的應用

     Squid在企業中的應用

   Squid是一個很好的代理軟體,與NAT是不同的技術,具有很強的控制力度,是應用層的,能基于應用層參數【協定】、網絡層參數【位址】、傳輸層參數【協定 端口号等】進行控制,唯一的缺點是支援的應用少。而NAT支援的應用比較多。如ipsec、AH等。

Windows上的代理有:wingate sygate winroute proxy等等

Linux上的代理有:squid 等。

代理伺服器的原理、作用及緩存加速機制這裡就不提了,不懂的可以百度一下,代理一般走的端口号是8080或者是3128,squid的就是3128,下面是具體配置

CDN 内容分發網絡

1、Squid的安裝與簡單配置

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220207465.png"></a>

                         (圖一)

以上是我的區域網路拓撲圖 要求pc1通過squid代理伺服器通路到外網

(1)、首先配置eth0和eth1網卡及dns指向確定squid代理伺服器能與外網通信

(2)、 安裝squid伺服器

   yum -y install squid  yum 安裝

   Rpm -ivh   squid-2.6.STABLE21-3.el5.i386.rpm  rpm安裝

配置目錄 /etc/squid/

預設通路日志檔案 /lvar/log/squid/access.log

監聽端口 http_port 3128

cache_mem 64M  用多少記憶體來進行緩存預設為64M

maxinum_object_size 4086KB 最大緩存對象4M

reply_body_max_size 10240000 allow all 最大通路的對象10M

visible_hostname  proxy.test.com 這個地方一定要配置一下,可以任意寫一些内容,不配置squid伺服器啟動不起來,主要是在用戶端通路出錯時要顯示的字元

cache_dir ufs /var/spool/squid 100 16 256 

Ufs  是緩存資料的存儲格式

/var/spool/squid/  存放緩存存放的磁盤目錄 (在第一次啟動squid是初始化)

100 為緩存目錄配置設定的磁盤空間(預設100M) 

16 緩存空間的一級子目錄 (16個)

256 緩存空間的二級子目錄 (265個)

由于squid.conf配置檔案很大,有4千多行,可以先用如下指令看一下沒用注釋的行,即要配置的内容。

grep -v "^#" squid.conf |grep -v "^$" 

acl all src 0.0.0.0/0.0.0.0            用acl定義某些元素名稱,即政策元素 

acl manager proto cache_object

acl localhost src 127.0.0.1/255.255.255.255

acl to_localhost dst 127.0.0.0/8

acl SSL_ports port 443

acl Safe_ports port 80 # http

acl Safe_ports port 21 # ftp

acl Safe_ports port 443 # https

acl Safe_ports port 70 # gopher

acl Safe_ports port 210 # wais

acl Safe_ports port 1025-65535 # unregistered ports

acl Safe_ports port 280 # http-mgmt

acl Safe_ports port 488 # gss-http

acl Safe_ports port 591 # filemaker

acl Safe_ports port 777 # multiling http

acl CONNECT method CONNECT

http_access allow manager localhost   用http_access來定義政策

http_access deny manager

http_access deny !Safe_ports

http_access deny CONNECT !SSL_ports

http_access allow localhost

http_access deny all  預設拒絕全部

icp_access allow all   

http_port 3128    監聽的端口,為了安全期間3128前面最好加一個位址,即eth1的位址,這樣隻允許内網的使用者使用squid伺服器。

hierarchy_stoplist cgi-bin ?

access_log /var/log/squid/access.log squid

acl QUERY urlpath_regex cgi-bin \?

cache deny QUERY

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

refresh_pattern . 0 20% 4320

acl apache rep_header Server ^Apache

broken_vary_encoding allow apache

coredump_dir /var/spool/squid

(3)、編輯squid.conf配置檔案(/et/c/squid/squid.conf)

 添加如下二行

visible_hostname 192.168.2.100

http_port 192.168.2.100:3128

(4)、啟動squid伺服器

重新開機之前先檢查一下文法 squid -k parse

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220236392.png"></a>

上面提到的16X256個目錄在/var/spool/squid/下已建立  

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220246113.png"></a>

Squid已經啟動了

(5)、在pc1上使用代理測試一下

在pc1上設定代理為,依次單擊IE浏覽器上的"工具"&gt;"Internet選項"&gt;"連接配接"&gt;選擇"區域網路設定"》如圖:

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220311323.png"></a>

通路一下百度看看

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220327411.png"></a>

用上面的出錯資訊可以看到,别拒絕了,因為預設是拒絕所有的http_access deny all ,是以為了我們測試在squid.conf配置檔案http_access deny all 前面再加上一句 http_access allow all    重新開機squid服務

(6)、再次測試并檢視squid日志

打開了百度網頁 ,好了可以上網了

其中日志中帶有的 TCP_HIT 表示緩存命中,可以提高通路速度,對應TCP_MISS表示緩存丢失

下面是執行個體

2、Squid實作正向代理

拓撲圖同圖一

1、禁止ip為192.168.2.2的内網通路外網

在squid中寫入下政策(在上述的基礎上)

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220340839.png"></a>

重新開機squid服務并測試和檢視日志

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220356372.png"></a>

2、禁止ip在192.168.2.2---2.10的内網通路外網

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220410259.png"></a>

重新開機squid服務并測試和檢視日志如下:(時刻要觀察日志)

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220425169.png"></a>

3、隻允許192.168.2.10的内網通路192.168.1.1進行路由管理

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220438861.png"></a>

4、綜合,禁止在上班時間08:00--18:00内通路網址中帶有"qq"的網址,禁止通路域名是.sina.com.cn的所有站點,禁止浏覽網站中的.jpg圖檔

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220544129.png"></a>

 好了,1、2、3、4後都有http_access allow all 這一項,測試我就不截圖了,是沒問題的。

3、squid的透明代理

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220639712.png"></a>

本實驗的内網網段為192.168.2.0/24 代理伺服器的eth0網卡的ip位址為192.168.2.20 用于模拟連接配接内網   eht1的網卡ip位址為192.168.3.1用于模拟連接配接外網,内網使用者不需要配置使用代理的設定,就可以通過squid代理通路外網,即透明代理,,

内網的測試機的ip位址為192.168.2.10,外網web伺服器及DNS伺服器的ip位址都為192.168.3.100 

按照以上拓撲圖,要求pc1通外網的DNS解析通路外網的web頁面

試驗配置如下:

(1)首先你必須先確定能啟動squid,如何啟動請看上面的配置

(2)打開資料包轉發功能

vim /etc/sysctl.conf 

net.ipv4.ip_forward = 1  1為開啟 0 為關閉

sysctl -p  加載系統

(3)實作DNS解析通過

如果是靜态IP用下條指令

iptables -t nat -A POSTROUTING -s 192.168.2.0/24 -p udp --dport 53 -j SNAT --to 192.168.3.1

如果是動态的IP用下面的指令

iptables -t nat -R POSTROUTING 1 -s 192.168.2.0/24 -p udp --dport 53 -j MASQUERADE

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220701576.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220709620.png"></a>

  (4)設定端口重定向

iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3128

  (5)編輯squid.conf

 http_port 192.168.2.20:3128 transparent   

 http_access allow all 

5、測試結果及squid日志

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220723711.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220733534.png"></a>

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220746233.png"></a>

4、squid之反向代理

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220756500.png"></a>

上述拓撲圖,某公司内網用一台web伺服器,要求internet的使用者通過通路本公司的合法ip即192.168.3.100的80端口即可通路内網的web伺服器。

我們用squid緩存伺服器的反向代理來實作

配置如下:

(2)修改squid.conf配置檔案 如下:

http_port 192.168.3.100:80 vhost 

cache_peer  192.168.2.10         parent     80    0    originserver

http_access allow all 

上面的一句話的意思是指明web伺服器的位址,在squid沒用查到使用者請求的資料後,會向自己的父級即内網web伺服器,去幫客戶去查詢。。

 (3)重新開機squid ,在pc上通路192.168.3.100測試

<a target="_blank" href="http://blog.51cto.com/attachment/201211/220812917.png"></a>

可以了,不懂的可以留言

本文轉自 abc16810 51CTO部落格,原文連結:http://blog.51cto.com/abc16810/1052097

上一篇: MSTP的配置

繼續閱讀