1:squid 是什麼?
Squid cache(簡稱爲Squid)是一個流行的自由軟件(GNU通用公共許可證)的代理服務器和Web緩存服務器。Squid有廣泛的用途,從作爲網頁服務器的前置cache服務器緩存相關請求來提高Web服務器的速度,到爲一組人共享網絡資源而緩存萬維網,域名系統和其他網絡搜索,到通過過濾流量幫助網絡安全,到局域網通過代理上網。Squid主要設計用於在Unix一類系統運行。
Squid的發展歷史相當悠久,功能也相當完善。除了HTTP外,對於FTP與HTTPS的支援也相當好,在3.0 測試版中也支援了IPv6。
2:作用
1:通過緩存爲用戶提供web頁面的加速
2:通過web訪問進行過濾控制
3:分類
正向代理
a. 標準的代理緩衝服務器
一個標準的代理緩衝服務被用於緩存靜態的網頁(例如:html文件和圖片文件等)到本地網絡上的一臺主機上(即代理服務器)。當被緩存的頁面被第二次訪問的時候,瀏覽器將直接從本地代理服務器那裏獲取請求數據而不再向原web站點請求數據。這樣就節省了寶貴的網絡帶寬,而且提高了訪問速度。但是,要想實現這種方式,必須在每一個內部主機的瀏覽器上明確指明代理服務器的IP地址和端口號。客戶端上網時,每次都把請求送給代理服務器處理,代理服務器根據請求確定是否連接到遠程web服務器獲取數據。如果在本地緩衝區有目標文件,則直接將文件傳給用戶即可。如果沒有的話則先取回文件,先在本地保存一份緩衝,然後將文件發給客戶端瀏覽器。
b. 透明代理緩衝服務器
透明代理緩衝服務和標準代理服務器的功能完全相同。但是,代理操作對客戶端的瀏覽器是透明的(即不需指明代理服務器的IP和端口)。透明代理服務器阻斷網絡通信,並且過濾出訪問外部的HTTP(80端口)流量。如果客戶端的請求在本地有緩衝則將緩衝的數據直接發給用戶,如果在本地沒有緩衝則向遠程web服務器發出請求,其餘操作和標準的代理服務器完全相同。對於Linux操作系統來說,透明代理使用Iptables或者Ipchains實現。因爲不需要對瀏覽器作任何設置,所以,透明代理對於ISP(Internet服務器提供商)特別有用。
反向代理:
a. 反向代理緩衝服務器
反向代理是和前兩種代理完全不同的一種代理服務。使用它可以降低原始WEB服務器的負載。反向代理服務器承擔了對原始WEB服務器的靜態頁面的請求,防止原始服務器過載。它位於本地WEB服務器和Internet之間,處理所有對WEB服務器的請求,組織了WEB服務器和Internet的直接通信。如果互聯網用戶請求的頁面在代理服務器上有緩衝的話,代理服務器直接將緩衝內容發送給用戶。如果沒有緩衝則先向WEB服務器發出請求,取回數據,本地緩存後再發送給用戶。這種方式通過降低了向WEB服務器的請求數從而降低了WEB服務器的負載。
四:配置介紹
服務名:squid
主程序:/usr/sbin/squid
配置目錄:/etc/squid
主配文件:/etc/squid/squid.conf
監聽tcp端口號:3128
默認訪問日誌文件:/var/log/squid/access.log
http_port 3128 (還可以監聽一個一個ip http_port 172.25.254.1:3128)
cache_mem 64MB #緩存佔內存大小
maximum_object_size 4096KB #最大緩存塊
reply_body_max_size 1024000 allow all #限定下載文件大小
visible_hostname proxy.test.xom #可見的主機名
cache_dir ufs /var/spool/squid 100 16 256
usf:緩存數據的存儲格式
/var/spool/squid 緩存目錄
100 : 緩存目錄佔磁盤空間大小(M)
16 :緩存空間一級子目錄個數
256 :緩存空間二級子目錄個數
cache_mgr webmaster@test.com #定義管理員郵箱
http_access deny all #訪問控制
五:正向代理的配置
5.1環境
centos7
服務器:ip1:172.25.254.120
ip2:172.25.20.2
客戶端:ip:172.25.20.1
centos7
服務器:ip1:172.25.254.120
ip2:172.25.20.2
客戶端:ip:172.25.20.1
5.2目的
在服務器端配置squid,使得客戶端可以訪問到172.25.254.0/24網段的內容
5.3服務端
[root@mailzpy ~]# ifconfig
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.254.120 netmask 255.255.255.0 broadcast 172.25.254.255
inet6 fe80::5054:ff:fe00:140a prefixlen 64 scopeid 0x20<link>
ether 52:54:00:00:14:0a txqueuelen 1000 (Ethernet)
RX packets 50215 bytes 25839964 (24.6 MiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 46678 bytes 105106263 (100.2 MiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
eth1: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.25.20.2 netmask 255.255.255.0 broadcast 172.25.20.255
inet6 fe80::5054:ff:fe0a:190f prefixlen 64 scopeid 0x20<link>
ether 52:54:00:0a:19:0f txqueuelen 1000 (Ethernet)
RX packets 6905 bytes 744616 (727.1 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 77 bytes 11440 (11.1 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
[root@mailzpy ~]# yum install -y squid
[root@mailzpy ~]# vim /etc/squid/squid.conf
# And finally deny all other access to this proxy
http_access allow all
# Squid normally listens to port 3128
http_port 3128 vhost vport
# Uncomment and adjust the following to add a disk cache directory.
cache_dir ufs /var/spool/squid 100 16 256
cache_peer 172.25.254.120 parent 80 0 proxy-only
# Leave coredumps in the first cache dir
coredump_dir /var/spool/squid
[root@mailzpy ~]# systemctl restart squid
[root@mailzpy ~]# systemctl stop firewalld
5.4 客戶端
設置訪問172.25.254.120:3180
5.5測試
使用客戶端訪問172.25.254.107