Proxy(代理)伺服器
阿新 • • 發佈:2019-02-05
代理伺服器:---代理伺服器必須有DNS地址。如果開啟轉發需要在客戶端設定DNS地址
NAT:是直接與目標伺服器通訊的。也就是直接訪問的baidu伺服器,目標地址是baidu伺服器的地址,所以必須要有DNS來解析主機名。
如果是通過代理客戶端是沒有設定DNS的,這是因為客戶端會將資料包先發給代理伺服器,然後再由代理伺服器將資料包轉發出去的。也就是產生了2個不同的資料包。
當用戶訪問伺服器的時候,會先請求代理伺服器,代理伺服器會檢視自己的快取是否有請求的網頁,如果有直接返回給使用者,如果沒有,則向伺服器傳送請求,伺服器響應給代理伺服器,當代理伺服器收到請求後,會將請求被分到自己的快取中,然後再拷貝一份發給使用者。如果再有使用者訪問這個網頁,代理伺服器檢查到自己的快取中有使用者想要的網頁,則會直接返回給使用者。這樣就很大的節省了伺服器的頻寬。
啟用代理伺服器的轉發功能:在做完NAT後需要轉發功能:
echo 1 > /proc/sys/net/ipv4/ip_forward
# 臨時修改
vim /etc/sysctl.conf
# 修改配置檔案中 :net.ipv4.ip_forward = 1
sysctl -p
# 修改後立即生效。
開啟轉發後需要設定客戶端的 DNS
防火牆規則:
iptables -I INPUT -p tcp --dport 8080 -j ACCEPT
iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE
#開啟NAT,轉發 需要注意的是:在開啟轉發的時候需要設定客戶端--DSN
iptables -t nat -I PREROUTING 1 -s 192.168.10.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 8080
#將10 網段的所有請求80埠的,重定向到 8080埠(8080是代理服務的埠),需要在代理服務的配置檔案中 開啟轉發:http_port 8080 transparent
出現錯誤:
WARNING: Could not determine this machines public hostname. Please configure one or set 'visible_hostname'.
visible_hostname 自己的主機名(#vim /etc/squid/squid.conf新增即可)
squid服務啟動日誌:
/var/log/squid/squid.out
安裝軟體包:
yum -y install squid
主目錄: /etc/squid/ 需要最關心的配置檔案;squid.conf
配置檔案: 1、acl 給網段定義一個別名。 需要注意的是:如果是具體的IP地址的話子網掩碼應該寫 32 192.168.10.123/32 否則會報錯 acl baidu dstdomain .baidu.com #目標地址 acl test url_regex ^http://www.kun.cc/test/.*\.txt # 以定義正則,定義不允許訪問型別的檔案。
2、http_access:允許哪些網段可以使用代理伺服器。後面跟的是定義好的別名。 需要注意的是:http_access 的順序很重要。是從上至下匹配的,如果上一條匹配成功就不會再往下匹配了。
3、http_port 3128:客戶端與代理伺服器建立連線訪問的埠號。 3128用的不多,用的比較多的是8080
不允許訪問baidu,其他網站是允許的
這裡有個細節需要注意: fanli baidu 2行的順序,因為fanli是指的是當前的網段是允許的,而訪問baidu是拒絕的,在匹配的時首先匹配允許了網段是可以訪問的,所以就不會匹配拒絕baidu這行。所以當再訪問baidu的時候也是可以正常訪問的。如果調換位置就會拒絕baidu了。
拒絕訪問指定型別的字尾的網頁:
字尾為:.txt的網站不可以訪問:
根據上面的test別名: cache deny test #凡是 .txt 結尾的網站都不做快取。 allowe 則是:做快取
配置檔案中:cache_dir ufs /var/spool/squid 100 16 256 代理伺服器快取網頁的存放目錄。 :100 #代理伺服器會在這個目錄裡面建立一個100M的告訴快取,硬碟當中建立 :16 #這個目錄下有16個子目錄 :256 #這個16個子目錄下又有256個子目錄
其中:cache_mem 10 MB:是從記憶體中劃分10MB來做儲存,這是個預設選項。儲存:訪問比較頻繁的網頁
重新指定squid的快取目錄位置:---用於存放快取的伺服器可以做邏輯卷,在邏輯捲上進行擴充。
當快取無限增加的時候,設定快取的限制: cache_swap_low 90 cache_swap_high 95 #當磁碟使用率達到95%的時候,刪除舊的快取,直至使用率為:90%
系統快取時間:
其中: 1440:為最小快取時間:單位分鐘 10080:最大快取時間:單位分鐘 20%:當快取的檔案時間大於 10080 的20%時候,系統就會標記為舊的資料。 防火牆做NAT:這裡做的是SNAT: 因為有的人會避開瀏覽騎上的代理,從而可以直接使用NAT,上網。所以這裡做了 SNAT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE 需要將FORWARD中的過濾去掉 iptables -nL # 不反向解析,檢視防火牆列表 iptables -nL --line-numbers # 檢視時標記行號
squid監控:---基於apache的,所以需要安裝apache
安裝完後直接輸入命令: sarg
進入到字型檔案所在目錄位置:
建立目錄:報錯的目錄是預設是不存在的,所以需要手動建立
將字型檔案拷貝到建立的目錄下
在圖形介面的網頁中輸入: localhost/sarg 可以檢視客戶端訪問的記錄
主目錄: /etc/squid/ 需要最關心的配置檔案;squid.conf
配置檔案: 1、acl 給網段定義一個別名。 需要注意的是:如果是具體的IP地址的話子網掩碼應該寫 32 192.168.10.123/32 否則會報錯 acl baidu dstdomain .baidu.com #目標地址 acl test url_regex ^http://www.kun.cc/test/.*\.txt # 以定義正則,定義不允許訪問型別的檔案。
2、http_access:允許哪些網段可以使用代理伺服器。後面跟的是定義好的別名。 需要注意的是:http_access 的順序很重要。是從上至下匹配的,如果上一條匹配成功就不會再往下匹配了。
3、http_port 3128:客戶端與代理伺服器建立連線訪問的埠號。 3128用的不多,用的比較多的是8080
不允許訪問baidu,其他網站是允許的
這裡有個細節需要注意: fanli baidu 2行的順序,因為fanli是指的是當前的網段是允許的,而訪問baidu是拒絕的,在匹配的時首先匹配允許了網段是可以訪問的,所以就不會匹配拒絕baidu這行。所以當再訪問baidu的時候也是可以正常訪問的。如果調換位置就會拒絕baidu了。
拒絕訪問指定型別的字尾的網頁:
字尾為:.txt的網站不可以訪問:
根據上面的test別名: cache deny test #凡是 .txt 結尾的網站都不做快取。 allowe 則是:做快取
配置檔案中:cache_dir ufs /var/spool/squid 100 16 256 代理伺服器快取網頁的存放目錄。 :100 #代理伺服器會在這個目錄裡面建立一個100M的告訴快取,硬碟當中建立 :16 #這個目錄下有16個子目錄 :256 #這個16個子目錄下又有256個子目錄
其中:cache_mem 10 MB:是從記憶體中劃分10MB來做儲存,這是個預設選項。儲存:訪問比較頻繁的網頁
重新指定squid的快取目錄位置:---用於存放快取的伺服器可以做邏輯卷,在邏輯捲上進行擴充。
當快取無限增加的時候,設定快取的限制: cache_swap_low 90 cache_swap_high 95 #當磁碟使用率達到95%的時候,刪除舊的快取,直至使用率為:90%
系統快取時間:
其中: 1440:為最小快取時間:單位分鐘 10080:最大快取時間:單位分鐘 20%:當快取的檔案時間大於 10080 的20%時候,系統就會標記為舊的資料。 防火牆做NAT:這裡做的是SNAT: 因為有的人會避開瀏覽騎上的代理,從而可以直接使用NAT,上網。所以這裡做了 SNAT iptables -t nat -A POSTROUTING -s 192.168.10.0/24 -j MASQUERADE 需要將FORWARD中的過濾去掉 iptables -nL # 不反向解析,檢視防火牆列表 iptables -nL --line-numbers # 檢視時標記行號
squid監控:---基於apache的,所以需要安裝apache
安裝完後直接輸入命令: sarg
進入到字型檔案所在目錄位置:
建立目錄:報錯的目錄是預設是不存在的,所以需要手動建立
將字型檔案拷貝到建立的目錄下
在圖形介面的網頁中輸入: localhost/sarg 可以檢視客戶端訪問的記錄