如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!

1、緩存代理概述:

作為應用層的代理服務軟件,Squid主要提供緩存加速和應用層過濾控制的功能

2、代理的工作機制:

(1)當客戶機通過代理來請求web頁面時,指定的代理服務器會先檢查自己的緩存,若緩存中已有需訪問頁面,則直接將緩存中的頁面內容反饋給客戶機

(2)若緩存中沒有所需頁面,則代理服務器向Internet發送訪問請求,當獲得返回的web頁面后,將網頁數據保存到緩存中并發送給客戶機

3、代理的基本類型:

(1)傳統代理:需手動設置代理服務器的地址和端口,多見于Internet環境(2)透明代理:不需要手動指定代理服務器的地址和端口,多見于局域網環境注:代理服務器一定有預備的緩存空間,用于存儲服務器反饋的數據

一、Squid代理服務器的安裝及運行控制

(1)掛載并解壓squid軟件包
[root@localhost ~]# mount.cifs //192.168.100.1/zdh /abc
Password for root@//192.168.100.1/zdh:  
[root@localhost ~]# cd /abc
[root@localhost abc]# ls
squid-3.5.28.tar.gz
[root@localhost abc]# tar zxvf squid-3.5.28.tar.gz -C /opt
(2)到squid文件路徑下執行配置文件
[root@localhost abc]# cd /opt
[root@localhost opt]# ls
rh  squid-3.5.28
[root@localhost opt]# cd squid-3.5.28/
[root@localhost squid-3.5.28]# ls
acinclude     configure     doc      lib          README             tools
aclocal.m4    configure.ac  errors   libltdl      RELEASENOTES.html
bootstrap.sh  contrib       helpers  Makefile.am  scripts
cfgaux        CONTRIBUTORS  icons    Makefile.in  SPONSORS
ChangeLog     COPYING       include  po4a.conf    src
compat        CREDITS       INSTALL  QUICKSTART   test-suite
(3)配置文件項
[root@localhost squid-3.5.28]# ./configure >--prefix=/usr/local/squid \     安裝目錄
> --sysconfdir=/etc \            單獨將配置文件修改到其它目錄
> --enable-arp-acl \             用mac地址進行管理,防止ip欺騙
> --enable-linux-netfilter \     使用內核過濾
> --enable-linux-tproxy \        支持透明模式
> --enable-async-io=100 \        異步I/O,提升儲存性能
> --enable-err-language="Simplify_Chinese" \ 錯誤信息的顯示語言
> --enable-underscore \          允許URL中有下劃線
> --enable-poll \                使用poll()模式,提升性能
> --enable-gnuregex              使用GUN正則表達式
[root@localhost squid-3.5.28]# systemctl stop firewalld.service 
[root@localhost squid-3.5.28]# setenforce 0
[root@localhost squid-3.5.28]# yum install gcc gcc-c++ make -y               安裝編譯軟件包
[root@localhost squid-3.5.28]#make && make install
(4)創建用戶并賦予權限
[root@localhost squid-3.5.28]#ln -s /usr/local/squid/sbin/* /usr/local/sbin/  建立軟連接
[root@localhost squid-3.5.28]#useradd -M -s /sbin/nologin squid  創建用戶,不創建用戶家目錄,不使用本地環境登錄
[root@localhost squid-3.5.28]#chown -R squid.squid /usr/local/squid/var/  賦予屬主屬組權限
(5)修改squid的配置文件
[root@localhost squid-3.5.28]#vim /etc/squid.conf
cache_effective_user squid        #添加   指定程序用戶
cache_effective_group squid       #添加   指定賬號基本組
coredump_dir /usr/local/squid/var/cache/squid  //在此行上面你添加以上兩條語句
(6)Squid的運行控制
[root@localhost squid-3.5.28]#squid -k parse   //檢查配置文件語法[root@localhost squid-3.5.28]# squid -z   //初始化緩存目錄[root@localhost squid-3.5.28]# squid    //啟動服務
(7)使用Squid腳本服務
[root@localhost squid-3.5.28]#cd /etc/init.d
[root@localhost 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" instart)netstat -natp | grep squid &> /dev/nullif [ $? -eq 0 ]thenecho "squid is running"elseecho "正在啟動 squid..."$CMDfi;;stop)$CMD -k kill &> /dev/nullrm -rf $PID &> /dev/null;;status)[ -f $PID ] &> /dev/nullif [ $? -eq 0 ]thennetstat -natp | grep squidelseecho "squid is not running"fi;;restart)$0 stop &> /dev/nullecho "正在關閉 squid..."$0 start &> /dev/nullecho "正在啟動 squid...";;reload)$CMD -k reconfigure;;check)$CMD -k parse;;*)echo "用法:$0{start|stop|status|reload|check|restart}";;
esac[root@localhost init.d]#chmod +x squid  賦予執行權限
[root@localhost init.d]# chkconfig --add squid
[root@localhost init.d]# chkconfig --level 35 squid on                            添加開機自啟

這樣一來我們就可以通過Squid腳本來啟動、停止、重載Squid服務器了,在執行時天機相應的start、stop、reload、restart參數。

二、構建代理服務器

接下來我從兩個方面來講解Squid的配置和使用,分別是傳統代理,透明代理。

1、傳統代理:

準備條件:一臺squid服務器:192.168.100.129一臺web服務器:192.168.100.130一臺windows客戶機:192.168.100.133
(1)squid代理服務器的配置

1、修改squid.conf的配置文件

[root@localhost ~]# vim /etc/squid.conf
cache_mem 64 MB                   #指定緩存功能所使用的內存空間大小,便于保持訪問較頻繁的WEB對象,容量最好為4的倍數,單位為MB,建議設為物理內存的1/4
reply_body_max_size 10 MB         #允許用戶下載的最大文件大小,以字節為單位。默認設置0表示不進行限制
maximum_object_size 4096 KB       #允許保存到緩存空間的最大對象大小,以KB為單位,超過大小限制的文件將不被緩存,而是直接轉發給用戶

2、在防火墻添加允許策略,這里不要關閉防火墻

[root@localhost ~]# iptables -F   清空防火墻列表
[root@localhost ~]# setenforce 0   關閉網絡增強性安全功能
[root@localhost ~]# iptables -I INPUT -p tcp --dport 3218 -j ACCEPT

3、重載squid服務,使配置文件生效

[root@localhost ~]# service squid reload
(2)web服務器的代理配置
[root@localhost ~]# yum install httpd -y
[root@localhost ~]# systemctl start httpd
[root@localhost ~]# netstat -antp |grep 80 
tcp6       0      0 :::80                   :::*                    LISTEN      87297/httpd

開啟后客戶機就可以訪問了,但注意,在這里客戶機并不是通過代理服務器訪問,而是直接訪問的web網站,請看!

[root@localhost squid-3.5.28]# cd /etc/httpd/
[root@localhost httpd]# cd logs/
[root@localhost logs]# vim access_log 
192.168.100.133 - - [23/Jul/2018:14:33:45 +0800] "GET /noindex/css/fonts/Light/OpenSans-Light.eot? HTTP/1.1" 404 240 "http://192.168.100.130/" "Mozilla/4.0 (compatible; MSIE 8.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0)"
"access_log" 30L, 9002C

可以看出是客戶機直接訪問的web服務器,并沒有通過代理服務器,下面我們通過代理服務器登錄

(3)客戶機的代理配置
在IE瀏覽器中--選擇‘工具’--‘intnet選項’--‘intnet選項對話框’--‘連接’--‘局域網(lan)設置’--單擊‘局域網設置’按鈕--彈出‘局域網設置’對話框

如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!
如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!

下面我們清空瀏覽器記錄,重新訪問幾次,在web服務器查看訪問日志
如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!

如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!

2、透明代理

透明代理提供的服務功能和傳統代理是一致的,但其透明的實現是依賴于默認路由和防護墻的重定向策略。因此,更適用于局域網主機服務,而不適合為Internet中的客戶機提供服務

準備條件:一臺squid代理服務器,配置雙網卡:內網ens33 192.168.100.1 外網:ens36 12.0.0.1一臺web服務器:12.0.0.12一臺windows客戶機:192.168.100.133

如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!
作為別人的網關需要幫別人轉發數據包

[root@localhost ~]# echo "1" > /proc/sys/net/ipv4/ip_forward

重啟虛擬機后需要重新執行防火墻策略

[root@localhost ~]#iptables -F
[root@localhost ~]#iptables -t nat -F
[root@localhost ~]#setenforce 0
(1)配置squid支持透明代理
[root@localhost ~]# vim /etc/squid.conf
http_port 192.168.100.1:3128 transparent
[root@localhost ~]#service squid reload

如何使用Squid服務來構建=》傳統和透明代理服務器,通俗易懂!

(2)設置iptables的重定向策略

[root@localhost ~]#iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 80 -j REDIRECT --to 3128           (redirect 重定向)
[root@localhost ~]#iptables -t nat -I PREROUTING -i ens33 -s 192.168.100.0/24 -p tcp --dport 443 -j REDIRECT --to 3128   (443 安全性的超文本傳輸協議)
[root@localhost ~]#iptables -I INPUT -p tcp --dport 3218 -j ACCEPT最后再次訪問12.0.0.12即可發現是通過網關12.0.0.1訪問,這里不再展示。

轉載于:https://blog.51cto.com/13687553/2149123

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/277591.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/277591.shtml
英文地址,請注明出處:http://en.pswp.cn/news/277591.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

排序算法-C++實現

#include <iostream>using namespace std;void show(int M[], int n) {for(int i0; i<n; i)cout<<M[i]<<" ";cout<<endl; }//快速排序 void quick_sort(int M[], int left, int right) {if(left < right){int i,j,x;i left;j right;…

Bootstrap開發框架視頻整理

最近到客戶處進行實地培訓&#xff0c;整理了很多培訓的材料&#xff0c;現將它們錄制相關主題的視頻&#xff0c;作為我的Bootstrap開發框架的知識補充&#xff0c;希望給感興趣的朋友進行了解。培訓內容主要包括基礎框架部分、MVC框架部分、Bootstrap框架部分、Bootstrap重要…

安卓隨機通話記錄_Android 通話記錄

查詢通話記錄private static final String[] CALLLOGS_PROJECTION new String[]{CallLog.Calls._ID,CallLog.Calls.CACHED_NAME, CallLog.Calls.NUMBER, CallLog.Calls.TYPE, CallLog.Calls.DATE,CallLog.Calls.DURATION};/*** * 概述&#xff1a;獲取最近10條通話記錄 */publ…

【c基礎】入門語法

%d:占位符 表示要輸出一個整形數。 %f:為float 浮點數 %lf:為double型 雙精度浮點數 \n:換行 const:定義一個常量,一旦被初始化就不能修改&#xff0c;只讀的變量&#xff08;read-only variable&#xff09;。 整數運算 的結果是整數 如果有小數就拋棄沒有考慮四舍五入。 一&a…

vue的移動app項目中,自定義拖拽指令的問題

使用vue的都知道vue有一個自定義指令&#xff0c;我比較喜歡的就是拖拽的自定義指令&#xff0c;感覺挺方便的&#xff01; //組件內的拖拽指令 directives: {//組建內自定義指令drag: {// 指令的定義bind: function(el, value) {let oDiv el; //當前元素let self this; //上…

彈窗php整人_[整人小程序] 超級信息框(無限彈窗++)

該樓層疑似違規已被系統折疊 隱藏此樓查看此樓貌似剛才縮進空格被吞了&#xff0c;再發一次Set FSO  createobject("scripting.filesystemobject")Set ws  Createobject("Wscript.shell")Set SA  CreateObject("Shell.Application")If …

day22 Java學習 IO流(序列流)

IO流&#xff08;序列流&#xff09; 序列流&#xff1a; * 可以把多個字節輸入流整合成一個&#xff0c;從序列流中讀取數據時&#xff0c;將從被整合的第一個流開始讀&#xff0c;讀完一個之后繼續讀第二個。 整合方式&#xff1a; * Seq uenceInputStream ( InputStream &am…

網站建設-簡單動態網站搭建

通過前面Clouder課程的學習&#xff0c;或許你已經掌握了在云服務器上發布和部署靜態網頁的方法&#xff0c;那么如何搭建一個可以隨時更新內容的動態網站&#xff1f;通過本課程的學習&#xff0c;你將掌握如何在云端搭建全世界使用最多的WordPress網站的方法&#xff0c;并學…

mysql的concat函數_MySQL中concat函數(連接字符串)

MySQL中concat函數使用方法&#xff1a;CONCAT(str1,str2,…)返回結果為連接參數產生的字符串。如有任何一個參數為NULL &#xff0c;則返回值為 NULL。注意&#xff1a;如果所有參數均為非二進制字符串&#xff0c;則結果為非二進制字符串。如果自變量中含有任一二進制字符串&…

利用airTest的圖像實別技術測試Web應用

airTest的第三方類庫中有圖像實別功能&#xff0c;根據官網的介紹&#xff0c;這個功能是能夠在Windows上用來定位元素&#xff0c;進行操作的。嘗試過以下腳本&#xff0c;發現真的可以。 from selenium.webdriver.chrome.options import Options from selenium import webdri…

MySQL主從復制故障解決

叢庫復制停止&#xff0c;進叢庫查看&#xff0c;報錯1007&#xff0c;數據庫已存在&#xff0c;不能創建數據庫 mysql> show slave status\G; Slave_IO_Running: Yes Slave_SQL_Running: No Last_Errno: 1007 Last_Error: Error Cant create database test; database exis…

Unraveling the JPEG file

(文章還剩實踐部分沒寫&#xff0c;答辯過后補上...) JPEG文件在當下數字化生活中是無處不在的&#xff0c;但是在熟悉的JPEG面紗背后&#xff0c;隱藏著一些算法&#xff0c;它們去除了人類眼中無法察覺到的細節。這產生了最高的視覺質量與最小的文件大小。讓我們來看看這一算…

mysql interval 3 day_Mysql之INTERVAL與DATE_SUB與EXTRACT函數的使用

1. INTERVALINTERVAL代表的是時間間隔MySQL中的時間間隔類型有如下幾種:1.1 利用INTERVAL做時間的加減法示例&#xff1a;加法:SQL>SELECT DATE 2018-11-01 INTERVAL 10 11 DAY_HOUR;結果:2018-11-11 11:00:00減法&#xff1a;SQL> select date 2018-11-11 11:00:00 -INT…

(二十四)面向對象

class Car {int num;String name;String color;public static void run() {System.out.println("行駛中");} } //再類中定義的變量&#xff1a;成員變量 //在類中定義的函數&#xff1a;成員函數 class Demo1 {public static void main(String[] args) {//創建一個ca…

mysql 三主_MySQL主主復制3

一、創建并授權用戶在每一臺(主)服務器上創建一個用戶&#xff0c;并為之授權&#xff0c;使它們可以互相訪問彼此的數據庫在Server-1上&#xff1a;創建一個充許Server-2來訪問的用戶server2,密碼為&#xff1a;server2mysql> GRANT REPLICATION SLAVE ON *.*> TO ‘ser…

0727日志

為什么80%的碼農都做不了架構師&#xff1f;>>> c端線上地址 http://x.diandanme.com/fe/?d183#/ 什么時候來需求&#xff0c;我做好準備了嗎&#xff1f; eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC94LmRpYW5kYW5tZS5jb21cL2FwaVwvd2VjaGF0XC…

Python基礎學習總結__Day3

一、集合 1&#xff0e;特性&#xff1a;無序且天生去重&#xff0c;格式為{} 2&#xff0e;作用&#xff1a; &#xff08;1&#xff09;去重 &#xff08;2&#xff09;關系測試 3&#xff0e;可調用函數&#xff08;常見對列表操作&#xff09; &#xff08;1&#xff09;取…

day8網絡編程,面向對象1

一.只是回顧 1.導入模塊的順序,首先從當前目錄下找,再從環境變量里面找,使用"sys.path.insert(0,需要導入的環境變量)"加入需要導入文件的環境變量; 2.如果不同項目中有相同的文件,需要導入文件,需要將非當前項目中右鍵添加的環境變量取消,將當前的環境變量添加上去;…

mysql練手數據_MySQL新手練習

操作插入數據 的語法 :INSERT INTO 表名稱 VALUES(值1&#xff0c;值2&#xff0c;......);修改數據 的語法&#xff1a;UPDATE 表名稱 SET 字段名1 值1, 字段名2值2,...... 【WHERE 條件】;刪除數據 的語法&#xff1a;delete from 表名 【[where 條件】;delete 表1&#xff…

spring security config

spring secuirty 相關的配置解析 permitAll()與web.ignoring() ingore是完全繞過了spring security的所有filter&#xff0c;相當于不走spring securitypermitall沒有繞過spring security&#xff0c;其中包含了登錄的以及匿名的。轉載于:https://www.cnblogs.com/MND1024/p/10…