-------------------------------
客戶主機: 192.168.4.100 eth0
-------------------------------
代理主機: 192.168.4.5 eth0
192.168.2.5 eth1
--------------------------------
Web主機: 192.168.2.100 eth1
--------------------------------
#clone-vm 軟件[google]
#配置yum
----------------------------------------------------------------------------------
squid代理轉發 基於硬盤代理轉發 /var/spool/squid
正向代理你上不了網我幫你訪問web[我帶表你]
反向代理你訪問我就等同於訪問web【我帶表web】
正向轉發
1
代理主機
#yum -y install squid 紅帽的包yum 源
#vim /etc/squid/squid.conf
59:http_access allow all 訪問控制允許用代理
61:visible_hostname abc 主機名隨便
62:http_port 3128 端口號記住
66:cache_dir ufs /var/spool/squid 100 16 256
緩存,緩存目錄爲/var/spool/squid
緩存大小爲100M 工作上很定小了
一級目錄爲16個二級目錄256個
#service squid start
#ls /var/spool/squid squid 是存緩存的地方
2
Web主機
#yum -y install httpd
#echo "test" > /var/www/html/index.html
#service httpd start
3
客戶端驗證
#curl http://192.168.2.100 失敗
#curl --proxy1.0 192.168.4.5:3128 http://192.168.2.100/ 測試成功--proxy1.0先走代理
但是生活中一般不用這命令測試用瀏覽器設置代理。設置完後從此以後
不管在地址欄中輸入什麼google,baidu都是交給代理處理再轉發回來.
在圖形界面設置代理轉發 實現翻強技術
firefox-->alt鍵---編輯--首選項---高級---網絡--設置--》代理IP和端口
IE瀏覽器----internet選項---連接---局域網設置---IP 端口
代理翻強
免費 找代理ip 端口
收費
下代理軟件自動找
-------------------------------------------------------------------------------------------
在代理服務器上查看日誌
#tailf /var/log/squid/access.log
按enter到最後......
在web服務器上查看日誌
#tailf /var/log/httpd/access_log
到最後.......
查看緩存目錄一般從前往後用。
cd /var/spool/squid/
[root@proxe ~]# cd /var/spool/squid/
[root@proxe squid]# ls
00 01 02 03 04 05 06 07 08 09 0A 0B 0C 0D 0E 0F swap.state
[root@proxe squid]# cd 00
[root@proxe 00]# ls
00 0D 1A 27 34 41 4E 5B 68 75 82 8F 9C A9 B6 C3 D
...........
[root@proxe 00]# cd 00
[root@proxe 00]# ls
00000001
[root@proxe 00]# cat 00000001
foI}dv0 ,9BX9BX)BX`http://192.168.2.100/HTTP/1.1 200 OK
Date: Fri, 17 Feb 2017 18:34:33 GMT
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Fri, 17 Feb 2017 18:34:17 GMT
ETag: "1a0112-2-548be294a890b"
Accept-Ranges: bytes
Content-Length: 2
Connection: close
Content-Type: text/html; charset=UTF-8
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
squid 反向代理 公司都是運用反向代理開展業務個人使用一般都是正向代理滿足自己需要
反向代理公司都要結合DNS使用因爲客戶訪問是用域名 [網站]DNS 這裏因爲實驗關係單一實驗沒做DNS
1.代理設置:
#vim /etc/squid/squid.conf
62:http_port 80 vhost
63:cache_peer 192.168.2.100 parent
80 0 originserver
#service squid restart
squid反向代理端口號也是80起服務時需要把別的80端口關了以防衝突。
客戶端驗證
#curl http://192.168.2.100 失敗
#curl http://192.168.4.5 成功 不需要再設置代理 直接訪問4.5就帶表192.168.2.100因爲反向代理配置文件指了parent
(-I抓包 可以看到打開的頁面是HIT 還是MISS實際生活中都希望是HIT因爲是緩存速度快
[root@host ~]# curl -I http://192.168.4.5
HTTP/1.0 200 OK
Date: Fri, 17 Feb 2017 19:21:08 GMT
Server: Apache/2.2.15 (Red Hat)
Last-Modified: Fri, 17 Feb 2017 18:34:17 GMT
ETag: "1a0112-2-548be294a890b"
Accept-Ranges: bytes
Content-Length: 2
Content-Type: text/html; charset=UTF-8
Age: 319
X-Cache: HIT from abc
X-Cache-Lookup: HIT from abc:80
Via: 1.0 abc (squid/3.1.23)
Connection: keep-alive
[root@host ~]# curl -I http://192.168.4.5/1.html
HTTP/1.0 200 OK
.........................
X-Cache: MISS from abc
X-Cache-Lookup: MISS from abc:80
Via: 1.0 abc (squid/3.1.23)
Connection: keep-alive
++++++++++++++++++++++++++++++++++++++++++++++++++++++
網絡
CDN 代理+DNS
baidu google yahoo
++++++++++++++++++++++++++++++++++++++++
Squid訪問控制ACL允許誰訪問不允許誰訪問實際中公司一般做網站出來就是給客戶用一般不做拒絕使用但如果真有如人***我一般也不是用ACL用防火強因爲linux防火牆是基於內核的而ACL是應用層的防火牆直接對網卡操作處理速度快的多
7層
業務 高功能強 性能低 如軟件金山軟件的防火強7層
業務 低 功能弱 性能高如iptables對網卡操作相當物理層
windows適合裝應用層軟件防火牆 linux適合低層防火牆
Squid訪問控制ACL
先定義ACL
調用ACL
定義
acl 名稱 類型 內容
acl abc time 17:00-18:00
acl qq src 192.168.4.100
acl qq2 src 192.168.4.0/24
調用
http_access allow|deny 名稱
http_access deny abc 拒絕17-18使用代理
http_access allow qq 允許192.168.4.100使用代理這樣就生效放在下面不生效
http_access deny qq2 拒絕192.168.4.0/2417-18使用代理
#vim /etc/squid/squid.conf
acl myip src 192.168.4.254
http_access deny myip 拒絕這個ip使用代理
acl mytime time MTWHF 00:00-18:00
http_access deny mytime 拒絕所有在這個時間段使用代理
栗子
acl myip src 192.168.4.5
acl ip2 src 192.168.4.10
acl mynet src 192.168.4.0/24
acl mytime time MTWHF 09:00-18:00
http_access allow mynet mytime可以理解成該網段工作時間應許
http_access allow myip 4.5Boss所有時間都允許這條放上面和這都有效
http_access deny all其他的都不應許
acl aaa src 192.168.2.0/24 192.168.3.0/24 (l兩個寫在一起
acl work time MTWHF 09:30-18:30
acl ip src 192.168.4.5
http_access allow ip 4.5Boss所有時間都允許)
http_access allow aaa work (允許這兩個網段在這個工作時間使用代理)
http_access deny all
acl black dst "/root/file.list" (可以把數據,限制的ip提前寫在文件中使用寫這個文件就可以)
http_access deny black (拒絕這裏面的ip使用代理)
未設置任何規則時拒絕所有訪問請求
已設置規則時依次進行檢查找到匹配即停止否則採用與最後一條規則相反的權限 工作是不要出現下面這種情況
+++++++++++++++++++++++++++++++
acl abc src 1.1.1.1
http_access allow abc
1.1.1.2(拒絕)
1.1.1.3(拒絕)
+++++++++++++++++++++++++++++++
acl abc src 1.1.1.1
http_access deny abc
1.1.1.2應許
1.1.1.3允許
+++++++++++++++++++++++++++++++
一般最後一條寫了這個http_access allow/deny all否則採用與最後一條規則相反的權限這句話就無效。
++++++++++++++++++++++++++++++++
ACL 列表
src 源ip
dst 目標ip
port 目標端口
dstdomain 目標域
time 訪問時間
maxconn 最大併發連接數 (acl abc maxconn 30 http_access aalow abc)允許同時最大30個人併發使用代理第三十一使用需要排隊
url_regex 目標URL地址
urlpath_regex 整個目標URL路徑
--------
http://www.baidu.cm/sex
http://www.baidu.com/mp4
acl abc url_regex .*\.(mp4|flv|mov|avi) 讓員工不使用代理看電影等這幾種格式包含劉大概95%的電影
http_accss allow 192.168.4.5 (允許boss4.5看
http_access deny abc 拒絕任何人看
---------------------------------------------------------------------------------------
(ping 走的是tcp icmp)
+++++++++++++++++++++++++++++++
Varnish[只做反向代理,緩存基於內存]
它要在官網上下載 源碼包安裝 squid光盤中就有
varish和squid相比 一個只做反向一個正反都做一個基於內存一個基於硬盤一個效率快一個效率慢各有優缺點。
+++++++++++++++++++++++++++++++++++++++++++++++++++++++++
varish 源碼包安裝
1.安裝
在官網下載軟件包保存在本地。(裝varish源碼包需要先裝依賴包readlin-devel和pcre-devel光盤中一般有。具體的裝源碼包可以參考官網看./configure附近的內容就可以。)
yum -y install readline-devel pcre-devel
useradd -s /sbin/nologin varnish (創建一個普通用戶目的是用普通用戶啓動不用root好處是萬一有人把你攻破了它也只有這個普通用戶的varnish服務這個權限對於保護系統更安全。這步可以根據情況來 再操作)
tar -xzf varnish-3.0.6.tar.gz
cd varnish-3.0.6
./configure --prefix=/usr/local/varnish (指定保存的位置這是默認地址)
make
make install
【【varnish有兩個配置文件
1.定義前端port,進程用戶
2.定義後端誰是你的後臺服務器
/usr/local/varnish 下載的主程序保存位置
etc bin sbin
...etc/varnish/default.vcl 後臺配置文件
....bin/ 程序和日誌文件
....sbin/varnishd 管理員主程序起服務起它】】
2起服務前複製需要的文件
cp redhat/varnish.initrc /etc/init.d/varnishd (當前varnish-3.0.6) 拷貝啓動腳本這個腳本目的是用它啓動關閉/usr/local/varnish/sbin/varnishd這個服務的程序這個腳本本來就有不需要自己寫。
cp redhat/varnish.sysconfig /etc/sysconfig/varnish定義全端配置文件
cp redhat/varnish_reload_vcl /usr/bin
mkdir /etc/varnish
cp /usr/local/varnish/etc/varnish/default.vcl /etc/varnish/default.vcl(後臺配置文件的路徑放在這因爲前前臺配置文件中有指需要一致)
ln -s /usr/local/varnish/sbin/varnishd/ /usr/sbin/ 服務啓動程序
ln -s /usr/local/varnish/bin/* /usr/bin (日誌文件做哥鏈接方便後面使用)
3.改配置文件然後重起服務就行
+++++++++++++++++++++++++++++++++++++++++++++++++++++++
QQ程序
雙擊QQ打開的是一個進程
QQ和多人聊天是多個線程
shell 腳本中只有多進程沒有多線程
for i in {1..100}
do
ping $i &
done
++++++++++++++++++++++++++++++++++++++++++++++++++++
課上實驗教簡單已經寫好安裝腳本
#tar -xf lnmp_soft-2016-8-9.tar.gz
#cd lnmp_soft
#install_lnmp.sh 選擇7
/usr/local/varnish 主程序
/etc/init.d/varnish 腳本
/etc/sysconfig/varnish 配置文件
配置文件
主配置文件(定義前端配置)
#vim /etc/sysconfig/varnish
60:VARNISH_VCL_CONF=/etc/varnish/default.vcl
66:ARNISH_LISTEN_PORT=80 端口號
69 VARNISH_ADMIN_LISTEN_ADDRESS=127.0.0.1 ()
70 VARNISH_ADMIN_LISTEN_PORT=6082(這個端口號記住就行不需要改動root用戶刷新頁面使用)
76:VARNISH_MIN_THREADS=50最小線程數
79:VARNISH_MAX_THREADS=1000 最大 工作中很定小但開多也吃資源要有一個合適的線程
89:VARNISH_STORAGE_SIZE=64M 緩存大小實際根情況來定
92:VARNISH_STORAGE="malloc,${VARNISH_STORAGE_SIZE}"
使用內存緩存頁面內存大小爲64M
主配置文件(定義後臺服務器)
#vim /etc/varnish/default.vcl
backend default {
.host = "192.168.2.100";
.port = "80";
}
密碼文件
#uuidgen > /etc/varnish/secret
(開啓服務使用80端口)
#service squid stop
#service varnish start
1.修改web頁面
#echo "ccc" > /var/www/html/b.html
2.客戶端訪問代理(獲取舊的頁面內容)
[root@host ~]# curl http://192.168.4.5/b.html
ccc
_____________________________________
web端:
[root@web ~]# echo "hello" >/var/www/html/b.html
host端:
[root@host ~]# curl http://192.168.4.5/b.html
hello
web端:
[root@web ~]# echo "cccc" >/var/www/html/b.html
host端:
[root@host ~]# curl http://192.168.4.5/b.html
hhhh
主要原因是有緩存一般系統會隔幾分鐘自動刷新下對於一般業務沒什麼影響如果有特殊需求需要立即顯示可在代理服務端打一個命令立即刷新
代理服務端
[root@proxe bin]# varnishadm -T 127.0.0.1:6082 -S /etc/varnish/secret ban.url b.html
host端:
[root@host ~]# curl http://192.168.4.5/b.html
cccc
++++++++++++++++++++++++++++++++++++++++++++++++++++
查看varnish日誌:
在/usr/local/varnish/bin下 varnishlog 和varnishncsa都是這個服務器的日誌。
先做鏈接ln -s /usr/local/varnish/bin/* /usr/bin/
[root@proxe bin]# ln -s /usr/local/varnish/bin/* /usr/bin
[root@proxe bin]# varnishlog
0 CLI - Rd ping
0 CLI - Wr 200 19 PONG 1487379369 1.0
[root@proxe bin]# varnishncsa 也可保存在文件中看
[root@proxe bin]# varnishlog -w file.sh 加-w參數 把這個日誌內容保存在文件中再帶開看
[root@proxe bin]# ls
file.sh varnishhist varnishncsa varnishsizes varnishtest
varnishadm varnishlog varnishreplay varnishstat varnishtop
[root@proxe bin]# cat file.sh
Rd pingWr 200 19 PONG 1487379405 1.0Rd pingWr 200 19 PONG 1487379408 1.0Rd pingWr 200 19 PONG 1487379411 1.