?一:squid簡介:
Squid是一種在Linux系統下使用的優秀的代理服務器軟件。Squid是一個緩存internet數據的一個軟件,它接收用戶的下載申請,并自動處理所下載的數據。也就是說,當一個用戶想要下載一個主頁時,它向Squid發出一個申請,要Squid替它下載,然后Squid 連接所申請網站并請求該主頁,接著把該主頁傳給用戶同時保留一個備份,當別的用戶申請同樣的頁面時,Squid把保存的備份立即傳給用戶,使用戶覺得速度相當快。
二:CDN簡介:
CDN的全稱是Content Delivery Network,即內容分發網絡。其目的是通過在現有的Internet中增加一層新的網絡架構,將網站的內容發布到最接近用戶的網絡“邊緣”,使用戶可以就近取得所需的內容,提高用戶訪問網站的響應速度。從技術上全面解決由于網絡帶寬小、用戶訪問量大、網點分布不均等問題,提高用戶訪問網站的響應速度。為更好地理解CDN,讓我們看一下CDN的工作流程。當用戶訪問已經加入CDN服務的網站時,首先通過DNS重定向技術確定最接近用戶的最佳CDN節點,同時將用戶的請求指向該節點。當用戶的請求到達指定節點時,CDN的服務器(節點上的高速緩存)負責將用戶請求的內容提供給用戶。
CDN 網絡加速器的四大優勢?:
高速:提高了企業站點(尤其含有大量圖片和靜態頁面站點)的訪問速度,并大大提 高以上性質站點的穩定性
實用:當企業站點所存放的服務器短時宕機時,用戶仍可以在很長一段時間訪問 cache 服務器,獲得該企業站點的信息;
簡易:CDN 網絡加速器對用戶完全透明,購買、使用方便,不需對其空間作任何更 改,不影響原來空間維護操作和運行內容;
超值:本公司為 CDN 提供可再擴展的所有緩存服務器以及專用 DNS 硬件以及帶寬,一次購買,可在各地電信機房自動為您"克隆"出多個站點副本,讓站點遍布 internet 各處。
三:正向代理與反向代理
正向代理是一個位于客戶端和原始服務器(origin server)之間的服務器,為了從原始服務器取得內容,客戶端向代理發送一個請求并指定目標(原始服務器),然后代理向原始服務器轉交請求并將獲得的內容返回給客戶端。客戶端必須要進行一些特別的設置才能使用正向代理。
反向代理正好相反,對于客戶端而言它就像是原始服務器,并且客戶端不需要進行任何特別的設置。客戶端向反向代理的名字空間(name-space)中的內容發送普通請求,接著反向代理將判斷向何處(原始服務器)轉交請求,并將獲得的內容返回給客戶端,就像這些內容原本就是它自己的一樣。
案例一:透明代理(正向):透明代理的意思是客戶端根本不需要知道有代理服務器的存在
設計思路:squid代理服務器處于內網當中,且有雙網卡eth1和eth0,用戶通過路由器才能正常上網。上網需要指明dns服務器,但是dns服務器處于外網當中,想要能夠正常解析出域名,內網主機需要使用nat轉換將dns解析信息發送到外網中,所以在代理服務器上配置iptables策略,將nat數據包轉發到外網。內網主機需要指明dns服務器地址和網關eth1:192.168.10.10。而squid代理服務器需要指明網關192.168.101.254和dns服務器222.88.88.88(222.85.85.85)
拓撲方案:
代理服務器的網關指向路由器接口:
[root@lyt ~]# vim /etc/resolv.conf
[root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom/
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm #安裝squid包
過濾/etc/squid/squid.conf配置文件的注釋行:[root@lyt ~]# grep -v "^#" /etc/squid/squid.conf |grep -v "^$"
[root@lyt Server]# vim /etc/squid/squid.conf #編輯squid的配置文件
[root@lyt Server]# service squid start
[root@lyt Server]# netstat -tupln |less
[root@lyt ~]# vim /etc/sysctl.conf
[root@lyt ~]# sysctl –p #使數據包轉發功能生效
[root@lyt ~]# iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -p udp --dport 53 -o eth0 -j MASQUERADE #使用nat協議,-t表示表格(table);在路由后(POSTROUTING)進行追加,-A表示追加;源地址是192.168.10.0/24網段,-s表示source;監聽目標端口udp的53;出口是eth0,-o表示出口網卡;MASQUERADE是地址偽裝,也即使用eth0網卡的ip地址作為nat轉換的源地址
[root@lyt ~]# iptables -t nat -A PREROUTING -p tcp --dport 80 -i eth1 -j REDIRECT --to-port 3128 #使用nat協議,-t表示表格(table);在路由前(PREROUTING)追加,-A表示追加;目標端口是tcp的80端口;監聽進口網卡eth1,重定向到3128端口。
[root@lyt ~]# service squid restart
測試:使用xp主機
案例二:反向代理:在代理服務器上設置雙網卡,eth0處于外網,eth1處于內網,實現外網的主機訪問內網的web服務器
1:配置web server :
?
[root@localhost ~]# mkdir /mnt/cdrom
[root@localhost ~]# mount /dev/cdrom /mnt/cdrom/
[root@localhost ~]# cd /mnt/cdrom/Server/
[root@localhost Server]# rpm -ivh httpd-2.2.3-31.el5.i386.rpm #安裝apache,使其作為一臺web服務器
[root@localhost Server]# cd /var/www/html/
[root@localhost html]# vim index.html #創建web服務器主頁
[root@localhost html]# service httpd start
2:在案例一中。只需要將代理服務器作如下修改即可:
[root@lyt ~]# vim /etc/squid/squid.conf
[root@lyt ~]# squid -k parse #測試配置文件的語法是否正確
[root@lyt ~]# service squid restart
[root@lyt ~]# netstat -tupln |less
測試:使用xp主機進行測試:
案例三:非透明代理:就是用戶必須要知道代理服務器的存在,并且進行設置才可以通過代理服務器上網。通過在非透明代理實現內網訪問外網。
拓撲方案:
配置代理服務器:
root@lyt ~]# mkdir /mnt/cdrom
[root@lyt ~]# mount /dev/cdrom /mnt/cdrom
[root@lyt ~]# cd /mnt/cdrom/Server/
[root@lyt Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
[root@lyt Server]# vim /etc/squid/squid.conf
[root@lyt Server]# service squid start #啟動squid服務
測試: