溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

使用Squid部署代理緩存服務(wù)

發(fā)布時(shí)間:2020-07-23 08:58:28 來(lái)源:網(wǎng)絡(luò) 閱讀:563 作者:Joshua1013 欄目:系統(tǒng)運(yùn)維

1,工作原理及作用:
Squid 是 Linux 系統(tǒng)中最為流行的一款高性能代理服務(wù)軟件,通常用作 Web 網(wǎng)站的前置緩存服務(wù),能夠代替用戶向網(wǎng)站服務(wù)器請(qǐng)求頁(yè)面數(shù)據(jù)并進(jìn)行緩存。
簡(jiǎn)單來(lái)說(shuō),Squid 服務(wù)程序會(huì)按照收到的用戶請(qǐng)求向網(wǎng)站源服務(wù)器請(qǐng)求頁(yè)面、圖片等所需的數(shù)據(jù),并將服務(wù)器返回的數(shù)據(jù)存儲(chǔ)在運(yùn)行 Squid 服務(wù)程序的服務(wù)器上。
當(dāng)有用戶再請(qǐng)求相同的數(shù)據(jù)時(shí),則可以直接將存儲(chǔ)服務(wù)器本地的數(shù)據(jù)交付給用戶,這樣不僅減少了用戶的等待時(shí)間,還緩解了網(wǎng)站服務(wù)器的負(fù)載壓力。
Squid 服務(wù)程序具有配置簡(jiǎn)單、效率高、功能豐富等特點(diǎn),它能支持 HTTP、FTP、SSL等多種協(xié)議的數(shù)據(jù)緩存,
可以基于訪問(wèn)控制列表(ACL)和訪問(wèn)權(quán)限列表(ARL)執(zhí)行內(nèi)容過(guò)濾與權(quán)限管理功能,還可以基于多種條件禁止用戶訪問(wèn)存在威脅或不適宜的網(wǎng)站資源,
因此可以保護(hù)企業(yè)內(nèi)網(wǎng)的安全,提升用戶的網(wǎng)絡(luò)體驗(yàn),幫助節(jié)省網(wǎng)絡(luò)帶寬.
由于緩存代理服務(wù)不但會(huì)消耗服務(wù)器較多的 CPU 計(jì)算性能、內(nèi)存以及硬盤(pán)等硬件資源,同時(shí)還需要較大的網(wǎng)絡(luò)帶寬來(lái)保障數(shù)據(jù)的傳輸效率,由此會(huì)造成較大的網(wǎng)絡(luò)帶寬開(kāi)銷(xiāo)。
因此國(guó)內(nèi)很多 IDC 或 CDN 服務(wù)提供商會(huì)將緩存代理節(jié)點(diǎn)服務(wù)器放置在二三線城市以降低運(yùn)營(yíng)成本.
工作模式:
Squid 服務(wù)程序?yàn)橛脩籼峁┚彺娲矸?wù)時(shí),具有正向代理模式和反向代理模式之分。
正向代理模式,是指用戶通過(guò)Squid 服務(wù)程序獲取網(wǎng)站頁(yè)面等資源,以及基于訪問(wèn)控制列表(ACL)功能對(duì)用戶訪問(wèn)網(wǎng)站行為進(jìn)行限制;在具體的服務(wù)方式上又分為標(biāo)準(zhǔn)代理模式和透明代理模式.
標(biāo)準(zhǔn)正向代理模式是把網(wǎng)站數(shù)據(jù)緩存到服務(wù)器本地,提高數(shù)據(jù)資源再次訪問(wèn)時(shí)的效率,但是用戶在上網(wǎng)時(shí)必須在瀏覽器等軟件中填寫(xiě)代理服務(wù)器的IP地址與端口號(hào)等信息,否則默認(rèn)不使用代理服務(wù)器;
透明正向代理模式的作用和標(biāo)準(zhǔn)正向代理模式基本相同,區(qū)別是用戶不需要手動(dòng)代理服務(wù)的IP地址和端口號(hào),所以這種代理服務(wù)對(duì)于用戶是相對(duì)透明的.
反向代理模式是指讓多臺(tái)節(jié)點(diǎn)主機(jī)反向緩存網(wǎng)站數(shù)據(jù),從而加快用戶訪問(wèn)速度。因?yàn)橐话銇?lái)講,網(wǎng)站中會(huì)普遍加載大量的文字、圖片等靜態(tài)資源,
而且它們相對(duì)來(lái)說(shuō)都是比較穩(wěn)定的數(shù)據(jù)信息,當(dāng)用戶發(fā)起網(wǎng)站頁(yè)面中這些靜態(tài)資源的訪問(wèn)請(qǐng)求時(shí),我們可以使用 Squid 服務(wù)程序提供的反向代理模式來(lái)進(jìn)行響應(yīng)。
而且,如果反向代理服務(wù)器中恰巧已經(jīng)有了用戶要訪問(wèn)的靜態(tài)資源,則直接將緩存的這些靜態(tài)資源發(fā)送給用戶,這不僅可以加快用戶的網(wǎng)站訪問(wèn)速度,還在一定程度上降低了網(wǎng)站服務(wù)器的負(fù)載壓力.
總結(jié)來(lái)說(shuō),正向代理模式一般用于企業(yè)局域網(wǎng)之中,讓企業(yè)用戶統(tǒng)一地通過(guò) Squid 服務(wù)訪問(wèn)互聯(lián)網(wǎng)資源,這樣不僅可以在一定程度上減少公網(wǎng)帶寬的開(kāi)銷(xiāo),而且還能對(duì)用戶訪問(wèn)的網(wǎng)站內(nèi)容進(jìn)行監(jiān)管限制,一旦內(nèi)網(wǎng)用戶訪問(wèn)的網(wǎng)站內(nèi)容與禁止規(guī)則相匹配,就會(huì)自動(dòng)屏蔽網(wǎng)站。
反向代理模式一般是為大中型網(wǎng)站提供緩存服務(wù)的,它把網(wǎng)站中的靜態(tài)資源保存在國(guó)內(nèi)多個(gè)節(jié)點(diǎn)機(jī)房中,當(dāng)有用戶發(fā)起靜態(tài)資源的訪問(wèn)請(qǐng)求時(shí),可以就近為用戶分配節(jié)點(diǎn)并傳輸資源,因此在大中型網(wǎng)站中得到了普遍應(yīng)用。
2,配置Squid服務(wù)程序
2-1,準(zhǔn)備兩臺(tái)虛擬機(jī),一臺(tái)作為Squid服務(wù)器,另一臺(tái)作用Squid客戶端(windows和linux都可用),兩臺(tái)虛擬機(jī)的網(wǎng)絡(luò)必須設(shè)置成僅主機(jī)模式(Hostonly),然后關(guān)閉Squid服務(wù)器,添加新網(wǎng)卡設(shè)置成橋接模式,用于訪問(wèn)外網(wǎng).
如果沒(méi)有物理網(wǎng)絡(luò)則使用NAT模式,共享主機(jī)上的WiFi,在本地WLAN中打開(kāi)屬性,連接旁邊有個(gè)共享,勾選Internet連接共享,單擊家庭網(wǎng)絡(luò)連接,選擇你想通過(guò)那個(gè)虛擬網(wǎng)卡上網(wǎng),點(diǎn)擊即可.
我們需要把Squid 服務(wù)程序部署在這臺(tái)虛擬機(jī)上,然后讓另外一臺(tái)原本只能訪問(wèn)內(nèi)網(wǎng)的虛擬機(jī)(即Squid 客戶端)通過(guò) Squid 服務(wù)器進(jìn)行代理上網(wǎng),從而使得 Squid 客戶端也能訪問(wèn)外部網(wǎng)站。
2-2,網(wǎng)絡(luò)模式配置好后,檢測(cè)是否可以訪問(wèn)外網(wǎng)
ping www.baidu.com ping 百度的IP地址,出現(xiàn)反饋包即網(wǎng)絡(luò)暢通
2-3,yum -y install squid 安裝Squid服務(wù)程序包
出現(xiàn)Complete! 字樣安裝成功.
systemctl restart squid 重啟服務(wù)
systemctl enable squid 設(shè)置為開(kāi)機(jī)啟動(dòng)
2-4,Squid服務(wù)程序的配置文件也是放在/etc目錄下一個(gè)以服務(wù)名稱(chēng)命名的目錄中.
常用的 Squid 服務(wù)程序配置參數(shù)以及作用
http_port 3128 監(jiān)聽(tīng)的端口號(hào)
cache_mem 64MB 內(nèi)存緩沖區(qū)的大小
cache_dir ufs /var/spool/squid 2000 16 256 硬盤(pán)緩沖區(qū)的大小
cache_effective_user squid 設(shè)置緩存的有效用戶
cache_effective_group squid 設(shè)置緩存的有效用戶組
dns_nameservers [IP 地址] 一般不設(shè)置,而是用服務(wù)器默認(rèn)的DNS 地址
cache_access_log /var/log/squid/access.log 訪問(wèn)日志文件的保存路徑
cache_log /var/log/squid/cache.log 緩存日志文件的保存路徑
visible_hostname RHEL7 設(shè)置 Squid 服務(wù)器的名稱(chēng)
3,正向代理
3-1,標(biāo)準(zhǔn)正向代理
Squid 服務(wù)程序軟件包在正確安裝并啟動(dòng)后,默認(rèn)就已經(jīng)可以為用戶提供標(biāo)準(zhǔn)正向代理模式服務(wù)了,不需要單獨(dú)修改配置文件或者進(jìn)行其他操作。
打開(kāi)Windows10上的任意瀏覽器,找到工具,然后單擊"Internet 選項(xiàng)",找到"連接"選項(xiàng)卡,單擊"局域網(wǎng)設(shè)置",勾選自動(dòng)減則配置,填寫(xiě)代理服務(wù)起的IP地址和端口號(hào).
設(shè)置完成后單擊確認(rèn),重新打開(kāi)新網(wǎng)頁(yè),成功訪問(wèn)www.baidu.com.
如果訪問(wèn)失敗,查看syslinux安全子系統(tǒng),是否有監(jiān)聽(tīng)的端口號(hào).
semanage port -l | grep squid_port_t 查看squid程序的端口號(hào)
3-2,ACL訪問(wèn)控制
Squid 服務(wù)程序的 ACL 是由多個(gè)策略規(guī)則組成的,它可以根據(jù)指定的策略規(guī)則來(lái)允許或限制訪問(wèn)請(qǐng)求,而且策略規(guī)則的匹配順序與防火墻策略規(guī)則一樣都是由上至下;在一旦形成匹配之后,則立即執(zhí)行相應(yīng)操作并結(jié)束匹配過(guò)程。
為了避免 ACL 將所有流量全部禁止或全部放行,起不到預(yù)期的訪問(wèn)控制效果,運(yùn)維人員通常會(huì)在 ACL 的最下面寫(xiě)上 deny all 或者 allow all 語(yǔ)句,以避免安全隱患.
實(shí)驗(yàn)1,只允許192.168.13.129的客戶端使用服務(wù)器上的Squid代理服務(wù)程序提供的代理服務(wù),禁止其余所有的主機(jī)代理請(qǐng)求.
下面修改其主配置文件
vim /etc/squid/squid.conf
acl client src 192.168.13.129 在25行左右新起一行添加內(nèi)容
http_access allow client 只允許client訪問(wèn)
http_access deny all 禁止所有
修改客戶端的IP為192.168.13.130(只要不是129即可,我們需要作出錯(cuò)誤的提示,即為實(shí)驗(yàn)成功),可以看到網(wǎng)頁(yè)訪問(wèn)失敗即為成功.
實(shí)驗(yàn)2,禁止所有客戶端訪問(wèn)網(wǎng)址中包含linux關(guān)鍵字的網(wǎng)站
vim /etc/squid/squid.conf
acl deny_keyword url_regex -i linux 在30行左右添加內(nèi)容
http_access deny deny_keyword 拒絕訪問(wèn)含有關(guān)鍵字
訪問(wèn)www.linuxprobe.com 類(lèi)似帶有l(wèi)inux的網(wǎng)站,含有關(guān)鍵字被拒絕訪問(wèn)
實(shí)驗(yàn)3,禁止所有客戶端訪問(wèn)某個(gè)特定的網(wǎng)站
acl deny_url url_regex http://www.linuxcool.com 在33行左右添加內(nèi)容
http_access deny deny_url 拒絕網(wǎng)站
訪問(wèn)http://www.linuxcool.com 查看是否可以出現(xiàn)內(nèi)容,報(bào)錯(cuò)即為成功.
實(shí)驗(yàn)4,禁止員工在企業(yè)網(wǎng)內(nèi)下載帶有特定后綴的文件.
acl badfile urlpath_regex -i .rar$ .avi$ 在35行添加內(nèi)容
http_access deny badfile 拒絕訪問(wèn)
隨機(jī)找一個(gè)地址下載一個(gè)帶有rar后綴的文件,看是否可以下載,無(wú)法下載即為成功.
4,透明正向代理
透明代理模式中,用戶無(wú)須在瀏覽器或其他軟件中配置代理服務(wù)器地址、端口號(hào)等信息,而是由 DHCP 服務(wù)器將網(wǎng)絡(luò)配置信息分配給客戶端主機(jī),這樣只要用戶打開(kāi)瀏覽器便會(huì)自動(dòng)使用代理服務(wù)了.
“透明”二字指的是讓用戶在沒(méi)有感知的情況下使用代理服務(wù),這樣的好處是一方面不需要用戶手動(dòng)配置代理服務(wù)器的信息,進(jìn)而降低了代理服務(wù)的使用門(mén)檻;另一方面也可以更隱秘地監(jiān)督員工的上網(wǎng)行為。
既然要讓用戶在無(wú)需過(guò)多配置系統(tǒng)的情況下就能使用代理服務(wù),作為運(yùn)維人員就必須提前將網(wǎng)絡(luò)配置信息與數(shù)據(jù)轉(zhuǎn)發(fā)功能配置好。
前面已經(jīng)配置好的網(wǎng)絡(luò)參數(shù),使用SNAT 技術(shù)完成數(shù)據(jù)的轉(zhuǎn)發(fā),讓客戶端主機(jī)將數(shù)據(jù)交給 Squid 代理服務(wù)器,再由后者轉(zhuǎn)發(fā)到外網(wǎng)中。
簡(jiǎn)單來(lái)說(shuō),就是讓 Squid 服務(wù)器作為一個(gè)中間人,實(shí)現(xiàn)內(nèi)網(wǎng)客戶端主機(jī)與外部網(wǎng)絡(luò)之間的數(shù)據(jù)傳輸。
當(dāng)前主機(jī)沒(méi)有配置SNAT功能,不能訪問(wèn)外網(wǎng).
要想讓內(nèi)網(wǎng)中的客戶端主機(jī)能夠訪問(wèn)外網(wǎng),客戶端主機(jī)首先要能獲取到 DNS 地址解析服務(wù)的數(shù)據(jù),這樣才能在互聯(lián)網(wǎng)中找到對(duì)應(yīng)網(wǎng)站的 IP 地址。
下面通過(guò) iptables 命令實(shí)現(xiàn) DNS 地址解析服務(wù) 53 端口的數(shù)據(jù)轉(zhuǎn)發(fā)功能,并且允許 Squid 服務(wù)器轉(zhuǎn)發(fā) IPv4 數(shù)據(jù)包。
sysctl -p 命令的作用是讓轉(zhuǎn)發(fā)參數(shù)立即生效:
iptables -F 清空當(dāng)前防火墻策略表
iptables -t nat -A POSTROUTING -p udp --dport 53 -o eno33554952 -j MASQUERADE
vim /usr/lib/sysctl.d/00-system.conf 修改端口轉(zhuǎn)發(fā)配置文件
net.ipv4.ip_forward = 1 另起一行添加內(nèi)容
sysctl -p 使配置文件生效
現(xiàn)在回到客戶端主機(jī),再次 ping 某個(gè)外網(wǎng)地址。此時(shí)可以發(fā)現(xiàn),雖然不能連通網(wǎng)站,但是此時(shí)已經(jīng)能夠獲取到外網(wǎng) DNS 服務(wù)的域名解析數(shù)據(jù)。
與配置 DNS 和 SNAT 技術(shù)轉(zhuǎn)發(fā)相比,Squid 服務(wù)程序透明代理模式的配置過(guò)程就十分簡(jiǎn)單了,只需要在主配置文件中服務(wù)器端口號(hào)后面追加上 transparent 單詞(意思為“透明的”)
然后把第 62 行的井號(hào)(#)注釋符刪除,設(shè)置緩存的保存路徑就可以了。保存主配置文件并退出后再使用 squid -k parse 命令檢查主配置文件是否有錯(cuò)誤
以及使用 squid -z 命令對(duì) Squid服務(wù)程序的透明代理技術(shù)進(jìn)行初始化
vim /etc/squid/squid.conf
httpport 3128 transparent
cache
dir ufs /var/spool/squid 100 16 256
squid -k parse 檢查主配置文件是否有錯(cuò)誤
squid -z 初始化透明代理技術(shù)
下面就可以完成 SNAT數(shù)據(jù)轉(zhuǎn)發(fā)功能了。原理很簡(jiǎn)單,使用 iptables 防火墻管理命令把所有客戶端主機(jī)對(duì)網(wǎng)站 80 端口的請(qǐng)求轉(zhuǎn)發(fā)至 Squid 服務(wù)器本地的 3128 端口上。
SNAT 數(shù)據(jù)轉(zhuǎn)發(fā)功能的具體配置參數(shù)如下。
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3218
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 –o eno33554952 -j SNAT --to 您的橋接網(wǎng)卡 IP 地址
service iptables save 保存防火墻策略
使用客戶端刷新瀏覽器,就可以訪問(wèn)了
5,反向代理
網(wǎng)站頁(yè)面是由靜態(tài)資源和動(dòng)態(tài)資源一起組成的,其中靜態(tài)資源包括網(wǎng)站架構(gòu) CSS 文件、大量的圖片、視頻等數(shù)據(jù),這些數(shù)據(jù)相對(duì)于動(dòng)態(tài)資源來(lái)說(shuō)更加穩(wěn)定,一般不會(huì)經(jīng)常發(fā)生改變。
但是,隨著建站技術(shù)的更新?lián)Q代,外加人們不斷提升的審美能力,這些靜態(tài)資源占據(jù)的網(wǎng)站空間越來(lái)越多。
如果能夠把這些靜態(tài)資源從網(wǎng)站頁(yè)面中抽離出去,然后在全國(guó)各地部署靜態(tài)資源的緩存節(jié)點(diǎn),這樣不僅可以提升用戶訪問(wèn)網(wǎng)站的速度,而且網(wǎng)站源服務(wù)器也會(huì)因?yàn)檫@些緩存節(jié)點(diǎn)的存在而降低負(fù)載。
反向代理是 Squid 服務(wù)程序的一種重要模式,其原理是把一部分原本向網(wǎng)站源服務(wù)器發(fā)起的用戶請(qǐng)求交給 Squid 服務(wù)器緩存節(jié)點(diǎn)來(lái)處理。
但是這種技術(shù)的弊端也很明顯,如果有心懷不軌之徒將自己的域名和服務(wù)器反向代理到某個(gè)知名的網(wǎng)站上面,從理論上來(lái)講,當(dāng)用戶訪問(wèn)到這個(gè)域名時(shí),也會(huì)看到與那個(gè)知名網(wǎng)站一樣的內(nèi)容(有些詐騙網(wǎng)站就是這樣騙取用戶信任的)。
因此,當(dāng)前許多網(wǎng)站都默認(rèn)禁止了反向代理功能。開(kāi)啟了 CDN(內(nèi)容分發(fā)網(wǎng)絡(luò))服務(wù)的網(wǎng)站也可以避免這種竊取行為。
如果開(kāi)啟了防護(hù)功能的網(wǎng)站,就會(huì)出現(xiàn)網(wǎng)頁(yè)報(bào)錯(cuò)(Internal Server Error).
使用 Squid 服務(wù)程序來(lái)配置反向代理服務(wù)非常簡(jiǎn)單。首先找到一個(gè)網(wǎng)站源服務(wù)器的 IP 地址,然后編輯 Squid 服務(wù)程序的主配置文件,把端口號(hào) 3128 修改為網(wǎng)站源服務(wù)器的地址和端口號(hào),此時(shí)正向解析服務(wù)會(huì)被暫停(它不能與反向代理服務(wù)同時(shí)使用)。
然后按照下面的參數(shù)形式寫(xiě)入需要反向代理的網(wǎng)站源服務(wù)器的 IP 地址信息,保存退出后重啟 Squid 服務(wù)程序。
vim/etc/squid/squid.conf
http
port 你的橋接網(wǎng)卡IP地址:80 vhost
cache
_peer 你的橋接網(wǎng)卡IP地址 IP parent 80 0 originserver
systemctl restart squid
systemctl enable squid
訪問(wèn)網(wǎng)頁(yè)成功.

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI