Squid正向代理

Squid簡(jiǎn)介:

代理服務(wù)器是目前網(wǎng)絡(luò)中常見(jiàn)的服務(wù)器之一痴鳄,它可以提供文件
緩存、復(fù)制和地址過(guò)濾等服務(wù)缸夹,充分利用有限的出口帶寬痪寻,加快
內(nèi)部主機(jī)的訪問(wèn)速度螺句,也可以解決多用戶需要同時(shí)訪問(wèn)外網(wǎng)但公
有IP地址不足的問(wèn)題。同時(shí)可以作為一個(gè)防火墻橡类,隔離內(nèi)網(wǎng)與外
網(wǎng)蛇尚,并且能提供監(jiān)控網(wǎng)絡(luò)和記錄傳輸信息的功能,加強(qiáng)局域網(wǎng)的
安全性等顾画。它的主要作用有以下幾點(diǎn)取劫。
1.共享網(wǎng)絡(luò)
2.加快訪問(wèn)速度,節(jié)約通信帶寬
3.防止內(nèi)部主機(jī)受到攻擊
4.限制用戶訪問(wèn)研侣,完善網(wǎng)絡(luò)管理

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ù)載壓力。

2.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ò)帶寬居凶。

3.由于緩存代理服務(wù)不但會(huì)消耗服務(wù)器較多的CPU計(jì)算性能、內(nèi)存以及硬盤等硬件資源藤抡,同時(shí)還需要較大的網(wǎng)絡(luò)帶寬來(lái)保障數(shù)據(jù)的傳輸效率侠碧,由此會(huì)造成較大的網(wǎng)絡(luò)帶寬開(kāi)銷。因此國(guó)內(nèi)很多IDC或CDN服務(wù)提供商會(huì)將緩存代理節(jié)點(diǎn)服務(wù)器放置在二三線城市以降低運(yùn)營(yíng)成本缠黍。

Squid正向代理的工作流程圖.png

Squid的原理:

① 客戶端A向代理服務(wù)器提出訪問(wèn)Internet的請(qǐng)求弄兜。
② 代理服務(wù)器接受到請(qǐng)求后,首先與訪問(wèn)控制列表中的訪問(wèn)規(guī)則相對(duì)照,如果滿足規(guī)則挨队,則在緩存中查找是否存在需要的信息谷暮。
③ 如果緩存中存在客戶端A需要的信息,則將信息傳送給客戶端盛垦。如果不存在湿弦,代理服務(wù)器就代替客戶端向Internet上的主機(jī)請(qǐng)求指定的信息。
④ Internet上的主機(jī)將代理服務(wù)器的請(qǐng)求信息發(fā)送到代理服務(wù)器中腾夯,同時(shí)代理服務(wù)器會(huì)將信息存入緩存中颊埃。
⑤ 代理服務(wù)器將Internet上主機(jī)的回應(yīng)信息傳送給客戶端A。
⑥ 客戶端B向代理服務(wù)器提出相同的請(qǐng)求蝶俱。
⑦ 代理服務(wù)器也首先與訪問(wèn)控制列表中的訪問(wèn)規(guī)則相對(duì)照班利。
⑧ 如果滿足規(guī)則,則將緩存中的信息傳送給客戶端B榨呆。

CentOS環(huán)境下使用部署正向代理

步驟:

搭建環(huán)境:兩臺(tái)虛擬機(jī)罗标,一臺(tái)作為Squid服務(wù)器(CentOS7),一臺(tái)作為Squid客戶端(win XP)积蜻。Squid服務(wù)器端需要兩塊網(wǎng)卡闯割,一塊為橋接模式ip=10.100.81.34,用于連接外網(wǎng)竿拆,另外一塊為主機(jī)模式ip=192.168.25.129宙拉,用于連接內(nèi)部局域網(wǎng);另外一臺(tái)客戶端需要一塊網(wǎng)卡丙笋, 主機(jī)模式即可ip=192.168.25.130谢澈,和服務(wù)器端處在一個(gè)局域網(wǎng)內(nèi)。

  • 主要文件
    服務(wù)名:squid
    主程序:/usr/sbin/squid
    配置目錄:/etc/squid
    主配置文件:/etc/squid/squid.conf
    監(jiān)聽(tīng)tcp端口號(hào):3128
    默認(rèn)訪問(wèn)日志文件:/var/log/squid/access.log

1御板、檢查是否安裝squid
rpm -qa | grep squid
2锥忿、假如沒(méi)有squid,安裝squid軟件包
yum install squid
3、若需要添加acl訪問(wèn)控制就編輯squid的配置文件稳吮,
vi /etc/squid/squid.conf
4缎谷、檢查配置文件是否有語(yǔ)法錯(cuò)誤
squid -k check
5、初始化緩存目錄
squid -z
6灶似、關(guān)閉防火墻,或者在防火墻中添加3128端口(注意CentOS7沒(méi)有iptables,已經(jīng)改成firewall)
systemctl stop firewalld //關(guān)閉防火墻
firewall-cmd --zone=public --add-port=3128/tcp --permanent//在防火墻中添加3128端口瑞你,success則添加成功
7酪惭、重啟squid
systemctl restart squid

8、在虛擬機(jī)winxp中的瀏覽器上Internet選項(xiàng)設(shè)置代理服務(wù)器IP和端口者甲,正向代理服務(wù)器搭建完畢春感。

Internet選項(xiàng).png

9、測(cè)試
處于主機(jī)模式下的Win XP能夠訪問(wèn)外網(wǎng)www.baidu.com即成功;否則失敗鲫懒。
www.baidu.com.png

10嫩实、查看日志文件
tail -f /var/log/squid/access.log

注意:

在公司內(nèi)部,都會(huì)限制員工網(wǎng)絡(luò)的訪問(wèn)窥岩,比如上班時(shí)間不能打游戲逛淘寶等等甲献。接下來(lái)的實(shí)驗(yàn)就是來(lái)實(shí)現(xiàn)這些功能。
*在/etc/squid/squid.conf中添加 acl訪問(wèn)控制實(shí)例


acl.png

配置文件/etc/squid/squid.conf的說(shuō)明

cache_mem 64 MB     //額外提供給squid使用的內(nèi)存颂翼,squid的內(nèi)存總占用為 X * 10+15+“cache_mem”晃洒,其中X為squid的cache占用的容量(以GB為單位),
               //比如下面的cache大小是100M朦乏,即0.1GB球及,則內(nèi)存總占用為0.1*10+15+64=80M,推薦大小為物理內(nèi)存的1/3-1/2或更多呻疹。
maximum_object_size 4 MB   //設(shè)置squid磁盤緩存最大文件吃引,超過(guò)4M的文件不保存到硬盤
minimum_object_size 0 KB  //設(shè)置squid磁盤緩存最小文件

maximum_object_size_in_memory 4096 KB   //設(shè)置squid內(nèi)存緩存最大文件,超過(guò)4M的文件不保存到內(nèi)存

cache_dir ufs /var/spool/squid 100 16 256   //定義squid的cache存放路徑 刽锤、cache目錄容量(單位M)际歼、一級(jí)緩存目錄數(shù)量、二級(jí)緩存目錄數(shù)量

logformat combined %&gt;a %ui %un [%tl] "%rm %ru HTTP/%rv" %Hs %<st "%{Referer}>h" "%{User-Agent}&gt;h" %Ss:%Sh //log文件日志格式

access_log /var/log/squid/access.log combined  //log文件存放路徑和日志格式

cache_log /var/log/squid/cache.log  //設(shè)置緩存日志

logfile_rotate 60   //log輪循 60天

cache_swap_high 95  //cache目錄使用量大于95%時(shí)姑蓝,開(kāi)始清理舊的cache

cache_swap_low 90   //cache目錄清理到90%時(shí)停止鹅心。

acl localnet src 192.168.1.0/24  //定義本地網(wǎng)段

http_access allow localnet  //允許本地網(wǎng)段使用

visible_hostname squid.david.dev  //主機(jī)名

cache_mgr mchina_tang@qq.com  //管理員郵箱

coredump_dir /var/spool/squid //squid掛掉后,臨終遺言要放到哪里

ACL的應(yīng)用

ACL訪問(wèn)控制的步驟:
1纺荧、acl定義控制列表
2旭愧、http_access定義控制訪問(wèn)

格式:acl 列表名 列表類型 列表內(nèi)容 ...
格式:http_access allow或deny 列表名1 列表名2......
注意:列表名1與列表名2之間空格分隔,為“與”的關(guān)系

常用的列表類型

列表類型 格式
src 源IP地址宙暇,客戶端的IP地址 acl name src ip/netmask
dst 目的IP地址输枯,訪問(wèn)的IP地址 acl name src ip/netmask
arp 客戶端MAC地址 acl name arp mac-addr
srcdomain 源域名 acl name srcdomain .domain.com
dstdomain 目標(biāo)域名 acl name dstdomain .domain.com
port 端口 acl name port num |num1 - num2
proto 協(xié)議 acl name proto HTTP FTP ......
method 請(qǐng)求類型 acl name method GET POST ......
maxconn 單一IP地址最大連接數(shù) acl name maxconn num
url_regex URL匹配 acl name url_regex [-i] ^http://......
time 時(shí)間段 acl name time [day] [h1:m1-h2:m2]

ACL的實(shí)際應(yīng)用

  • squid按照順序讀取訪問(wèn)控制列表的,在獲得匹配的訪問(wèn)控制語(yǔ)句后占贫,不在繼續(xù)向下查詢
  • 如存在多條訪問(wèn)控制語(yǔ)句桃熄,必須注意它們的順序

1、禁止任何客戶機(jī)訪問(wèn)代理服務(wù)器
acl all src 0.0.0.0/0.0.0.0
http_access deny all

2型奥、允許指定的客戶機(jī)在指定的時(shí)間上網(wǎng)

acl kehuji src 192.168.1.0/24 192.168.4.0/24
acl worktime time MTWHF 08:30-17:30 (其中MTWHF是周一到周五的英文首字母)
http_access allow kehuji worktime

[root@localhost~]#
3瞳收、創(chuàng)建黑名單

  • 不允許被用戶訪問(wèn)的網(wǎng)站IP
    [root@localhost~]#vi /etc/squid/deny_ip //創(chuàng)建黑名單
    220.170.91.114 //nslooup查詢到的www.taobao.com的ip
    183.3.226.35 //nslookup查詢到的www.qq.com的ip
    [root@localhost~]#vi /etc/squid/squid.conf
    acl deny_ip dst "/etc/squid/deny_ip"
    http_access deny deny_ip
  • 不允許被用戶訪問(wèn)的域
    [root@localhost~]#vi /etc/squid/deny_domain
    .qq.com
    .bai.com
    [root@localhost~]#vi /etc/squid/squid.conf
    acl deny_domain dst "/etc/squid/deny_domain"
    http_access deny deny_domain

4、創(chuàng)建白名單

  • 被允許訪問(wèn)網(wǎng)站的客戶端
    [root@localhost~]#vi /etc/squid/guest //創(chuàng)建白名單
    192.168.25.130
    192.168.25.131
    192.168.25.0/24
    [root@localhost~]#vi /etc/squid/squid.conf
    acl guest dst "/etc/squid/guest"
    http_access allow guest

配置大概在/etc/squid.conf的26行的位置


acl.png

squid涉及到防火墻

1.firewalld的基本使用
啟動(dòng): systemctl start firewalld
查看狀態(tài): systemctl status firewalld
停止: systemctl disable firewalld
禁用: systemctl stop firewalld

2.systemctl是CentOS7的服務(wù)管理工具中主要的工具厢汹,它融合之前service和chkconfig的功能于一體螟深。
在開(kāi)機(jī)時(shí)啟用一個(gè)服務(wù):systemctl enable firewalld.service
在開(kāi)機(jī)時(shí)禁用一個(gè)服務(wù):systemctl disable firewalld.service
查看服務(wù)是否開(kāi)機(jī)啟動(dòng):systemctl is-enabled firewalld.service
查看已啟動(dòng)的服務(wù)列表:systemctl list-unit-files|grep enabled
查看啟動(dòng)失敗的服務(wù)列表:systemctl --failed

3.配置firewalld-cmd
查看所有打開(kāi)的端口: firewall-cmd --zone=public --list-ports
那怎么開(kāi)啟一個(gè)端口呢:firewall-cmd --zone=public --add-port=80/tcp --permanent
那怎么關(guān)閉一個(gè)端口呢:firewall-cmd --zone= public --remove-port=80/tcp --permanent

注意:該命令方式開(kāi)啟的端口,可在/etc/firewalld/zones/public.xml中的對(duì)應(yīng)配置文件中得到體現(xiàn)
說(shuō)明:
firewall-cmd:Linux中提供的操作firewall的工具烫葬。
–zone:指定作用域界弧。
–add-port=80/tcp:添加的端口凡蜻,格式為:端口/通訊協(xié)議。
–permanent:表示永久生效垢箕,沒(méi)有此參數(shù)重啟后會(huì)失效划栓。

更新防火墻規(guī)則: firewall-cmd --reload

查看
firewall-cmd --zone= public --query-port=3128/tcp

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市条获,隨后出現(xiàn)的幾起案子忠荞,更是在濱河造成了極大的恐慌,老刑警劉巖月匣,帶你破解...
    沈念sama閱讀 219,427評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件钻洒,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡锄开,警方通過(guò)查閱死者的電腦和手機(jī)素标,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,551評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)萍悴,“玉大人头遭,你說(shuō)我怎么就攤上這事⊙⒂眨” “怎么了计维?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,747評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)撕予。 經(jīng)常有香客問(wèn)我鲫惶,道長(zhǎng),這世上最難降的妖魔是什么实抡? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,939評(píng)論 1 295
  • 正文 為了忘掉前任欠母,我火速辦了婚禮,結(jié)果婚禮上吆寨,老公的妹妹穿的比我還像新娘赏淌。我一直安慰自己,他們只是感情好啄清,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,955評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布六水。 她就那樣靜靜地躺著,像睡著了一般辣卒。 火紅的嫁衣襯著肌膚如雪掷贾。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,737評(píng)論 1 305
  • 那天添寺,我揣著相機(jī)與錄音胯盯,去河邊找鬼。 笑死计露,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播票罐,決...
    沈念sama閱讀 40,448評(píng)論 3 420
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼叉趣,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了该押?” 一聲冷哼從身側(cè)響起疗杉,我...
    開(kāi)封第一講書(shū)人閱讀 39,352評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎蚕礼,沒(méi)想到半個(gè)月后烟具,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,834評(píng)論 1 317
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡奠蹬,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,992評(píng)論 3 338
  • 正文 我和宋清朗相戀三年朝聋,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片囤躁。...
    茶點(diǎn)故事閱讀 40,133評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡冀痕,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出狸演,到底是詐尸還是另有隱情言蛇,我是刑警寧澤,帶...
    沈念sama閱讀 35,815評(píng)論 5 346
  • 正文 年R本政府宣布宵距,位于F島的核電站腊尚,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏满哪。R本人自食惡果不足惜婿斥,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,477評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望翩瓜。 院中可真熱鬧受扳,春花似錦、人聲如沸兔跌。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,022評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)坟桅。三九已至华望,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間仅乓,已是汗流浹背赖舟。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,147評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留夸楣,地道東北人宾抓。 一個(gè)月前我還...
    沈念sama閱讀 48,398評(píng)論 3 373
  • 正文 我出身青樓子漩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親石洗。 傳聞我的和親對(duì)象是個(gè)殘疾皇子幢泼,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,077評(píng)論 2 355