自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何在CentOS或RHEL上搭建Squid透明Web代理系統(tǒng)?

譯文
系統(tǒng) Linux
使用透明代理有幾個好處。首先,對最終用戶來說,透明代理可以改善上網(wǎng)瀏覽體驗,因為緩存了經(jīng)常訪問的網(wǎng)站內(nèi)容,同時給他們帶來的配置開銷最小。對管理員來說,透明代理可用于執(zhí)行各種管理政策,比如內(nèi)容/URL/IP過濾和速率限制等。

【51CTO精選譯文】我們在前一篇教程中介紹了使用用戶空間實現(xiàn)的應(yīng)用程序iptables搭建網(wǎng)關(guān)的方法,詳見http://xmodulo.com/2014/06/internet-connection-sharing-iptables-linux.html。本教程將重點(diǎn)介紹將網(wǎng)關(guān)變成透明代理服務(wù)器。如果客戶端沒有意識到其請求是通過代理處理的,該代理就被稱為“透明”代理。

使用透明代理有幾個好處。首先,對最終用戶來說,透明代理可以改善上網(wǎng)瀏覽體驗,因為緩存了經(jīng)常訪問的網(wǎng)站內(nèi)容,同時給他們帶來的配置開銷最小。對管理員來說,透明代理可用于執(zhí)行各種管理政策,比如內(nèi)容/URL/IP過濾和速率限制等。

代理服務(wù)器充當(dāng)客戶端和目的地服務(wù)器之間的中介??蛻舳藢⒄埱蟀l(fā)送到代理服務(wù)器,隨后代理服務(wù)器評估請求,并采取必要的動作。在本教程中,我們將使用Squid搭建一個Web代理服務(wù)器,而Squid是一種健壯的、可定制的、穩(wěn)定的代理服務(wù)器。就個人而言,大概一年來我管理著一臺拖有400多個客戶端工作站的Squid服務(wù)器。雖然平均而言我大概一個月就要重啟一次服務(wù),但處理器和存儲使用率、吞吐量以及客戶端響應(yīng)時間都表現(xiàn)不錯。

我們將配置Squid以獲得下列拓?fù)浣Y(jié)構(gòu)。CentOS/RHEL設(shè)備有一塊網(wǎng)卡(eth0)連接到專有局域網(wǎng),另一塊網(wǎng)卡(eth1)則連接到互聯(lián)網(wǎng)。

 

Squid的安裝

想使用Squid搭建透明代理系統(tǒng),我們首先要添加必要的iptables規(guī)則。這些規(guī)則應(yīng)該會幫助你開始上手,不過務(wù)必要確保它們與任何的現(xiàn)有配置沒有沖突。

  1. # iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE  
  2. # iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128 

***條規(guī)則將引起來自eth1(廣域網(wǎng)接口)的所有出站數(shù)據(jù)包都有eth1的源IP地址(也就是啟用NAT)。第二條規(guī)則將把來自eth0(局域網(wǎng)接口)的所有入站HTTP數(shù)據(jù)包(發(fā)往TCP 80)重定向至Squid偵聽端口(TCP 3128),而不是直接將其轉(zhuǎn)發(fā)到廣域網(wǎng)接口。

我們使用yum,開始安裝Squid。

  1. # yum install squid 

現(xiàn)在,我們將改動Squid配置,將其變成透明代理系統(tǒng)。我們將局域網(wǎng)子網(wǎng)(比如10.10.10.0/24)定義為有效的客戶端網(wǎng)絡(luò)。不是來自該局域網(wǎng)子網(wǎng)的任何流量將被拒絕訪問。

  1. # vim /etc/squid/squid.conf  
  2. visible_hostname proxy.example.tst  
  3. http_port 3128 transparent  
  4. ## 定義我們的網(wǎng)絡(luò)## acl our_network src 10.10.10.0/24  
  5. ## 確保我們的網(wǎng)絡(luò)允許訪問## http_access allow our_network  
  6. ## ***拒絕其他的所有流量## http_access deny all 

現(xiàn)在我們開啟Squid服務(wù),確保它已被添加到啟動項。

  1. # service squid start  
  2. # chkconfig squid on 

鑒于Squid已搭建并運(yùn)行起來,我們可以測試其功能了,為此只需監(jiān)測Squid日志。從連接至該局域網(wǎng)的計算機(jī)訪問任何URL,你應(yīng)該會在日志中看到類似以下的內(nèi)容。

  1. # tailf /var/log/squid/access.log  
  2. 1402987348.816 1048 10.10.10.10 TCP_MISS/302 752  
  3. GET http://www.google.com/ - DIRECT/173.194.39.178  
  4. text/html  
  5. 1402987349.416 445 10.10.10.10 TCP_MISS/302 762  
  6. GET http://www.google.com.bd/? - DIRECT/173.194.78.  
  7. 94 text/html 

據(jù)日志文件顯示,IP地址為10.10.10.10的機(jī)器試圖訪問google.com,Squid處理了這個請求。

一種最基本的Squid代理服務(wù)器現(xiàn)已準(zhǔn)備就緒。在本教程的余下部分,我們將調(diào)整Squid的一些參數(shù),以控制出站流量。請注意:這僅僅為了演示。實際的政策應(yīng)加以定制,以滿足你的具體要求。

準(zhǔn)備工作

在開始配置之前,我們先明確幾個要點(diǎn)。

Squid配置解析

在閱讀配置文件時,Squid以一種自上而下的方式來解析文件。自上而下地解析規(guī)則,直到發(fā)現(xiàn)匹配為止。一旦發(fā)現(xiàn)匹配,該規(guī)則就被執(zhí)行;其下面的其他任何規(guī)則將被忽視。所以,添加過濾規(guī)則的***實踐就是,按下列順序指定規(guī)則。

explicit allow

explicit deny

allow entire LAN

deny all

Squid重啟與Squid重新配置

一旦Squid配置經(jīng)過改動,Squid服務(wù)就需要重啟。重啟服務(wù)可能需要一段時間,有時要幾分鐘,長短取決于活動連接的數(shù)量。在這個期間,局域網(wǎng)用戶無法訪問互聯(lián)網(wǎng)。想避免這種服務(wù)中斷,我們可以使用下面這個命令,而不是使用“service squid restart”。

  1. # squid -k reconfigure 

該命令將允許Squid使用更新后的參數(shù)來運(yùn)行,而不需要重啟本身。

按照IP地址過濾局域網(wǎng)主機(jī)

在這個演示中,我們想要搭建這樣的Squid:禁止擁有IP地址10.10.10.24的主機(jī)和IP地址10.10.10.25的主機(jī)訪問互聯(lián)網(wǎng)。為此,我們創(chuàng)建了一個文本文件“denied-ip-file”,里面含有所有被拒絕訪問的主機(jī)的IP地址,然后將該文件添加到Squid配置中。

  1. # vim /etc/squid/denied-ip-file  
  2. 10.10.10.24  
  3. 10.10.10.25  
  4. # vim /etc/squid/squid.conf  
  5. ## 首先我們創(chuàng)建訪問控制列表(ACL),隔離被拒絕訪問的IP地址##acl denied-ip-list src "/etc/squid/denied-ip-file"  
  6. ##然后,我們應(yīng)用ACL ## http_access deny denied-ip-list ## 明確拒絕## http_access allow our_network  
  7. ## 允許局域網(wǎng)## http_access deny all ## 拒絕所有deny all ## 

現(xiàn)在我們需要重啟Squid服務(wù)。Squid將不再認(rèn)可來自這些IP地址的請求。如果我們檢查squid日志,就會發(fā)現(xiàn)來自這些主機(jī)的請求處于“TCP_DENIED”狀態(tài)。

過濾黑名單中的網(wǎng)站

這個方法將只適用于HTTP。假設(shè)我們想阻止badsite.com和denysite.com,就可以將這兩個網(wǎng)址添加到文件,并且將引用添加到squid.conf。

  1. # vim /etc/squid/badsite-file  
  2. badsite  
  3. denysite  
  4. # vim /etc/squid/squid.conf  
  5. ## ACL定義##acl badsite-list url_regex "/etc/squid/badsite-file"  
  6. ## ACL 應(yīng)用## http_access deny badsite-list  
  7. http_access deny denied-ip-list ## 之前設(shè)置,但這里不起作用## http_access allow our_network  
  8. http_access deny all 

請注意:我們使用了ACL類型“url_regex”,這將與所請求的URL中的“badsite”和“denysite”這兩個詞相匹配。也就是說,凡是在URL中含有“badsite”或“denysite”(比如badsite.org、newdenysite.com或otherbadsite.net)的請求一律被阻止。

合并多個ACL

我們將創(chuàng)建一個訪問列表,阻止IP地址為10.10.10.200的客戶端和IP地址為10.10.10.201的客戶端訪問custom-block-site.com。其他任何客戶端都能夠訪問該網(wǎng)站。為此,我們將首先創(chuàng)建一個訪問列表以隔離這兩個IP地址,然后創(chuàng)建另一個訪問列表以隔離所需的網(wǎng)站。***,我們將同時使用這兩個訪問列表,以滿足要求。

  1. # vim /etc/squid/custom-denied-list-file  
  2. 10.10.10.200  
  3. 10.10.10.201  
  4. # vim /etc/squid/custom-block-website-file  
  5. custom-block-site  
  6. # vim /etc/squid/squid.conf  
  7. acl custom-denied-list src "/etc/squid/custom-denied-list-file"  
  8. acl custom-block-site url_regex "/etc/squid/custom-block-website-file"  
  9. ## ACL應(yīng)用 ## http_access deny custom-denied-list custom-block-site  
  10. http_access deny badsite-list ## 之前設(shè)置,但這里不起作用## http_access deny denied-ip-list ## 之前設(shè)置,但這里不起作用## http_access allow our_network  
  11. http_access deny all  
  12. # squid -k reconfigure 

被阻止的主機(jī)現(xiàn)在應(yīng)該無法訪問上述網(wǎng)站了。日志文件/var/log/squid/access.log應(yīng)該含有相應(yīng)請求的“TCP_DENIED”。

設(shè)定***下載文件大小

Squid可以用來控制***的可下載文件大小。我們想把IP地址為10.10.10.200的主機(jī)和IP地址為10.10.10.201的主機(jī)的***下載大小限制在50MB。我們之前已經(jīng)創(chuàng)建了ACL“custom-denied-list”,以隔離來自這些源地址的流量?,F(xiàn)在,我們將使用同一個訪問列表來限制下載文件大小。

  1. # vim /etc/squid/squid.conf  
  2. reply_body_max_size 50 MB custom-denied-list  
  3. # squid -k reconfigure 

建立Squid緩存層次體系

Squid支持緩存的方式是,將經(jīng)常訪問的文件存儲在本地存儲系統(tǒng)中。設(shè)想一下:你的局域網(wǎng)上有100個用戶在訪問google.com。要是沒有緩存功能,就要為每一個請求單獨(dú)獲取Google標(biāo)識或涂鴉。Squid可以將標(biāo)識或涂鴉存儲在緩存中,以便從緩存來提供。這不僅改善了用戶感覺得到的性能,還減少了帶寬使用量。這可以說是一舉兩得。

想啟用緩存功能,我們可以改動配置文件squid.conf。

  1. # vim /etc/squid/squid.conf  
  2. cache_dir ufs /var/spool/squid 100 16 256 

數(shù)字100、16和256 有下列含義。

•為Squid緩存分配100 MB存儲空間。如果你愿意,也可以加大所分配的空間。

•16個目錄(每個目錄里面含有256個子目錄)將用于存儲緩存文件。這個參數(shù)不應(yīng)該改動。

我們可以通過日志文件/var/log/squid/access.log來證實Squid緩存是否被啟用。如果緩存成功命中,我們應(yīng)該會看到標(biāo)有“TCP_HIT”的項。

總而言之,Squid是一種功能強(qiáng)大的、基于行業(yè)標(biāo)準(zhǔn)的Web代理服務(wù)器,被全球各地的系統(tǒng)管理員們廣泛使用。Squid提供了簡易的訪問控制功能,可用于管理來自局域網(wǎng)的流量。它既可以部署到大企業(yè)網(wǎng)絡(luò)中,也可以部署到小公司網(wǎng)絡(luò)中。本教程只介紹了Squid所有功能的一小部分。想了解完整的功能,請參閱其官方說明文檔(http://wiki.squid-cache.org/Features)。

但愿本文對各位有所幫助。

英文原文:http://xmodulo.com/2014/06/squid-transparent-web-proxy-centos-rhel.html

責(zé)任編輯:林師授 來源: 51CTO
相關(guān)推薦

2019-06-05 10:20:09

安全更新命令Linux

2016-12-07 18:12:05

CentOSRHEL安全補(bǔ)丁

2011-03-16 11:20:26

2020-03-02 14:06:54

CentOS 8FFmpegLinux

2017-04-24 18:10:27

DrupalCentOSFedora

2019-12-02 11:50:09

CentOS 8VirtualBoxLinux

2015-12-21 13:19:23

CentosRHEL 6.XWetty

2014-10-11 11:30:43

CentOSDocker

2016-01-25 13:03:21

2017-04-11 13:20:06

CentOSRHELFedora

2019-10-12 10:24:06

CentOSRHELCockpit

2019-11-14 09:20:15

CentOS 8RHEL 8Nagios Core

2014-08-05 14:23:33

linuxcentosBugzilla

2023-03-16 08:55:51

RHEL 8MiniKube開源

2014-09-04 09:18:15

2022-11-17 09:52:12

RHEL 9Node.js

2014-05-20 09:59:27

Mnitrix輕型監(jiān)控系統(tǒng)系統(tǒng)管理員

2012-04-02 14:25:12

squid緩存

2010-03-30 13:24:41

2019-11-05 11:20:36

CentOS 8RHEL 8Linux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號