squid proxy server簡單應用

一、簡介

Squid Cache(簡稱爲Squid)是HTTP代理服務器軟件。Squid用途廣泛的,可以作爲緩存服務器,可以過濾流量幫助網絡安全,也可以作爲代理服務器鏈中的一環,向上級代理轉發數據或直接連接互聯網。


二、功能

1. 正向代理

  (1)傳統代理

  (2)透明代理

2. 反向代理


正向代理是指:一個位於客戶端和目標服務器(比如:百度)之間的服務器,爲了從目標服務器取得內容,客戶端向代理髮送一個請求並指定目標(目標服務器),然後代理向目標服務器轉交請求並將獲得的內容返回給客戶端。

反向代理是指:以代理服務器來接受internet上的連接請求,然後將請求轉發給內部網絡上的服務器,並將從服務器上得到的結果返回給internet上請求連接的客戶端,此時代理服務器對外就表現爲一個服務器。


三、簡單部署

1. 傳統代理

在傳統代理模式下,客戶端必須要一些配置纔可以上網。

環境:

client:[root@oracle ~]  IP:192.168.111.2(橋接VMnet1)

proxy:[root@mysql ~]  IP:192.168.111.3(橋接VMnet1)    192.168.1.105(橋接宿主機網卡)

proxy server:

[root@mysql ~]# yum install squid -y
[root@mysql ~]# vim /etc/sysctl.conf
net.ipv4.ip_forward = 1     #開啓IP轉發
[root@mysql ~]# sysctl -p   #立即生效
[root@mysql ~]# setenforce 0   #關閉selinux,不然會阻止服務啓動
[root@mysql ~]# vim /etc/squid/squid.conf
http_port 192.168.111.3:3128
visible_hostname proxy    #其實還有一些其他參數,現在先不改,ACL默認是將本地地址所在的網段放行的
[root@mysql ~]# squid –k parse
[root@mysql ~]# service squid start
[root@mysql ~]# vim /etc/sysconfig/iptables
-A INPUT -m state --state NEW -m tcp -p tcp --dport 3128 -j ACCEPT
[root@mysql ~]# service iptables restart   #在iptables上放行3128端口

client:

wKiom1MS-MTSWqKMAAFJmK22CUQ786.jpg

wKiom1MS-MfihVGtAAFJHtPH7p0213.jpg

一些常用選項:

http_port x.x.x.x:3128    指定監聽的IP地址和端口號

visible_hostname          只有不知道主機的主機名時,才需要設置,如下報錯

minimum_object_size 0 KB     指定緩存對象的最小大小
maximum_object_size 4096 KB   指定緩存對象的最大大小,如:只有大小在0-4M的對象纔會被緩存
cache_mem 64 MB           指定緩存的大小
cache_swap_low 90        
cache_swap_high 95         緩存到達總容量的95%就開始清理緩存,清理到90%爲止
cache_dir ufs /var/spool/squid 100 16 256  utf爲緩存數據的格式

                                          100爲緩存目錄分配的磁盤空間(MB)

                                          16爲緩存空間一級子目錄的個數

                                          256爲緩存空間二級子目錄的個數

ACL功能:

定義acl列表             acl列表名稱 列表類型 列表內容 …

針對acl列表進行限制     http_access allow或deny列表名 …

常用指令:    squid -k parse  檢查語法

              squid -z       初始化squid緩存目錄


2. 透明代理

顧名思義,透明代理對客戶端來說是透明的,客戶端無需任何設置。

環境:

client:[root@oracle ~]  IP:192.168.111.2(橋接VMnet1)

proxy:[root@mysql ~]  IP:192.168.111.3(橋接VMnet1)    192.168.1.105(橋接宿主機網卡)

[root@mysql squid]# vim /etc/squid/squid.conf
http_port 192.168.111.3:3128 transparent   #transparent關鍵字
[root@mysql squid]# iptables -t nat -I PREROUTING -i eth0 -s 192.168.111.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128
#將從eth0口進來的192.168.111.0/24網段的目標端口爲80的重定向3128端口

我們都知道,需要上網還需要DNS,DNS是TCP和UDP的53端口,我們這裏的DNS請求發到了公網DNS服務器上(如8.8.8.8),因爲我實驗的實驗的機器是兩臺內網機器,所以回來的包給了我們的外網防火牆,防火牆根本不知道192.168.111.0網段在哪裏,因爲192.168.111.0網段是我的兩臺實驗PC私有的,這裏就有DNS的問題,解決的辦法有3種:

1. 外網防火牆指一條靜態路由到192.168.111.0網段的發給192.168.1.105

2. 內網架設一臺可以上網的DNS服務器,也可將代理服務器配置爲DNS服務器

3. 代理服務器上做NAT,我們這裏就是使用第三種方法

[root@mysql ~]# iptables -t nat -A POSTROUTING -s 192.168.111.0/24 -o eth1 -j SNAT --to-source 192.168.1.105


3. 反向代理

環境:

http server:[root@web ~]#    IP:192.168.3.91(VMnet1)

squid server:[root@node2 ~]#   IP:192.168.3.96(VMnet1)   192.168.2.97

Client:192.168.2.88

squid server:

[root@node2 ~]# vim /etc/squid/squid.conf
http_port 192.168.2.97:80 vhost vport
cache_peer 192.168.3.91 parent 80 0 originserver weight=1 max-conn=30
visible_hostname node2
#cache_peer Web服務器地址 服務器類型 http端口 icp端口 [可選項]

監聽端口改爲80是爲了對應於標準web端口,便於用戶使用cache_peer配置項可以用於指定真正的Web服務器的位置。其中,服務器類型對應到目標主機的緩存級別,上游Web主機一般使用“parent”(父服務器);icp端口用於連接相鄰的ICP(Internet Cache Protocol)緩存服務器(通常爲另一臺Squid主機),如果沒有,則使用0;可選項是提供緩存時的一些附件參數,例如“originserver”表示該服務器作爲提供Web服務的原始主機,“weight=n”指定服務器的優先權重,n爲整數,數字越大優先級越高(缺省爲1);“max-conn=n”指定反向代理主機到該web服務器的最大連接數。


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章