重慶分公司,新征程啟航
為企業提供網站建設、域名注冊、服務器等服務
為企業提供網站建設、域名注冊、服務器等服務
內容要點:
創新互聯公司主要從事網站設計制作、成都網站制作、網頁設計、企業做網站、公司建網站等業務。立足成都服務樟樹,10年網站建設經驗,價格優惠、服務專業,歡迎來電咨詢建站服務:18982081108
一、Squid介紹
二、緩存代理
三、手工編譯安裝、優化 Squid
四、搭建傳統代理
五、設置透明代理
一、Squid介紹
(1)Squid是一個高性能的代理緩存服務器,Squid支持FTP、gopher、HTTPS和HTTP協議。和一般的代理緩存軟件不同,Squid用一個單獨的、非模塊化的、I/O驅動的進程來處理所有的客戶端請求。
(2)Squid運行在什么系統上?
Squid可運行在大多數Unix和OS/2版本的系統之上,已知的可工作的有:Windows,AIX,Digital Unix,FreeBSD,HP-UX,Irix,Linux,NetBSD,Nextstep,SCO,Solaris
(3)Squid的下載和獲取:
squid在諸多unix like系統上都有軟件庫的提供,比如在ubuntu可以使用apt install squid進行安裝,也可以到squid的官網直接下載二進制的編譯好的軟件包。
二、緩存代理
web 代理的工作機制:緩存網頁對象,減少重復請求。
1、當我們客戶機通過squid代理去訪問web頁面時,指定的代理服務器會先檢查自己的緩存,若是緩存中有我們客戶機需要的頁面,那么squid服務器將直接把緩存中的頁面內容返回給客戶機,如果緩存中沒有客戶端請求的頁面,那么squid代理服務器就會向internet發送訪問請求,獲得返回的web頁面后,將網頁的數據保存到緩存中并發送給客戶機。
2、由于客戶機的web訪問請求實際上是squid代理服務器來代替完成的,所以隱藏了用戶的真實IP地址,從而起到一定的保護作用。
另一方面,squid也可以針對要訪問的目標、客戶機的地址、訪問的時間段進行過濾控制。
(1)代理的基本類型:
1、傳統代理:也就是普通的代理服務,需要我們客戶端在瀏覽器、聊天工具等一些程序中設置代理服務器的地址和端口,然后才能使用代理來訪問網絡,這種方式相比較而言比較麻煩,因為客戶機還需手動指定代理服務器,所以一般用于Internet環境。
2、透明代理:與傳統代理實現的功能是一樣的,區別在于客戶機不需要手動指定代理服務器的地址和端口,而是通過默認路由、防火墻策略將web訪問重定向,實際上仍然交給代理服務器來處理,重定向的過程完全是由squid服務器進行的,所以對于客戶機來說,甚至不知道自己使用了squid代理服務,因此呢,我們稱之為透明模式。
透明代理多用于局域網環境,如在Linux網關中啟用透明代理后,局域網主機無須進行額外設置就能享受更好的上網速度。
(2)使用代理的好處:
1、提高web訪問速度;
2、隱藏客戶機的真實 IP地址
三、手工編譯安裝、優化 Squid
(1)解壓縮包:
tar?zxvf?squid-3.4.6.tar.gz?-C?/opt/
(2)安裝編譯工具:
yum?install?gcc?gcc-c++?make?-y
(3)編譯:
./configure?--prefix=/usr/local/squid?\ --sysconfdir=/etc?\ --enable-arp-acl?\ --enable-linux-netfilter?\ --enable-linux-tproxy?\ --enable-async-io=100?\ --enable-err-language="Simplify_Chinese"?\ --enable-underscore?\ --enable-poll?\ --enable-gnuregex
(4)安裝
install?&&?make?install
(5)方便管理,可以創建軟連接
ln?-s?/usr/local/squid/sbin/*?/usr/local/sbin/
(6)創建用戶 squid,配置權限
useradd?-M?-s?/sbin/nologin?squid
chown?-R?squid.squid?/usr/local/squid/var/ //授權
(7)修改配置文件
vim?/etc/squid.conf 添加以下代碼: http_access?allow?all cache_effective_user?squid???????//添加?指定程序用戶 cache_effective_group?squid??????//添加?指定賬戶基本組
(8)檢查
squid?-k?parse????//檢查配置文件語法 squid?-z??????????//初始化緩存目錄 squid?????????????//啟動服務
檢查端口查看服務是否正常開啟:
(9)編寫啟動腳本:
1、編寫腳本 目錄:/etc/init.d/
vim?squid #!/bin/bash #chkconfig:?2345?90?25 PID="/usr/local/squid/var/run/squid.pid" CONF="/etc/squid.conf" CMD="/usr/local/squid/sbin/squid" case?"$1"?in start) ??????netstat?-natp?|?grep?squid?&>?/dev/null ??????if?[?$??-eq?0?] ????????then ????????echo?"squid?is?running" ????????else ????????echo?"正在啟動?squid...." ????????$CMD ????????fi ????????;; stop) ????????$CMD?-k?kill?&>?/dev/null ????????rm?-rf?$PID?&>?/dev/null ????????;; status) ?????????[?-f?$PID?]?&>?/dev/null ???????????if?[?$??-eq?0?] ?????????????then ??????????????netstat?-natp?|?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?"用法:$0{start|stop|status|reload|check|restart}" ????????;; esac
2、添加執行權限
chmod?+x?squid????//添加執行權限 chkconfig?--add?squid?????//便于service識別 chkconfig?--level?35?squid?on???//設置開機自啟動
3、關閉、開啟服務
service?squid?stop? service?squid?start
四、搭建傳統代理
角色 | IP地址 |
Web服務器 | 192.168.220.136 |
代理服務器 | 192.168.220.131 |
客戶機 | 192.168.220.129 |
第一步:編輯配置文件 /etc/squid.conf
cache_mem?64?MB???????//指定緩存功能所使用的內存空間大小 reply_body_max_size?10?MB????//允許用戶下載的最大文件大小 maximum_object_size?4096?KB????//允許保存到緩存空間的最大對象大小
第二步:制定防火墻規則
iptables?-F????//清除所有規則來暫時停止防火墻 setenforce?0 iptables?-I?INPUT?-p?tcp?--dport?3128?-j?ACCEPT????//允許目標端口3128做轉發
第三步:客戶機瀏覽器設置代理服務
(1)打開瀏覽器 → 工具 → Internet 選項 → 連接 → 局域網設置
(2)瀏覽器訪問 web服務器的IP地址,多刷新幾次,由于我們設置了代理服務,其實訪問網站這個請求,是代理服務器幫我們完成的,為了驗證,可以查看 web服務器的日志文件,就能知道訪問的 ip地址是客戶機還是代理服務器的。
查看?/etc/httpd/logs?中的日志文件,access_log?,以下是部分截圖:
可以看出都是由 代理服務器過來訪問網頁的,而非客戶機,這也起到了隱藏客戶機真實 IP地址的目的。
五、設置透明代理
角色 | IP地址 |
squid 代理服務器 | 內網:192.168.100.1;外網:12.0.0.1 |
web服務器 | 12.0.0.12 |
客戶機 | 192.168.100.50 |
第一步:用戶機瀏覽器取消局域網設置
第二步:配置代理服務器 squid
(1)開啟路由轉發功能:
?echo?"1"?>?/proc/sys/net/ipv4/ip_forward
(2)編輯配置文件 /etc/squid.conf
修改監聽地址:
http_port?192.168.100.1:3128?transparent
(3)添加防火墻策略:
iptables?-F iptables?-t?nat?-F????//重新設置防火墻 iptables?-t?nat?-I?PREROUTING?-i?ens33?-s?192.168.100.0/24?-p?tcp?--dport?80?-j?REDIRECT?--to?3128 //端口重定向到3128 iptables?-t?nat?-I?PREROUTING?-i?ens33?-s?192.168.100.0/24?-p?tcp?--dport?443?-j?REDIRECT?--to?3128 iptables?-I?INPUT?-p?tcp?--dport?3128?-j?ACCEPT???//開發3128端口
(4)重啟服務:
service?squid?restart
第三步:驗證
1、在客戶機瀏覽器上訪問 web 服務器網站
2、在 web 服務器的日志文件,查看是哪個IP地址來訪的:
vim?/etc/httpd/logs/access_log
可以看出是 squid代理服務器的外網卡的ip地址。
透明代理設置成功。