Squid在企业中的应用
? ???Squid在企業中的應用
???Squid是一個很好的代理軟件,與NAT是不同的技術,具有很強的控制力度,是應用層的,能基于應用層參數【協議】、網絡層參數【地址】、傳輸層參數【協議?端口號等】進行控制,唯一的缺點是支持的應用少。而NAT支持的應用比較多。如ipsec、AH等。
Windows上的代理有:wingate?sygate?winroute?proxy等等
Linux上的代理有:squid?等。
代理服務器的原理、作用及緩存加速機制這里就不提了,不懂的可以百度一下,代理一般走的端口號是8080或者是3128,squid的就是3128,下面是具體配置
CDN?內容分發網絡
1、Squid的安裝與簡單配置
?????????????????????????(圖一)
以上是我的局域網拓撲圖?要求pc1通過squid代理服務器訪問到外網
(1)、首先配置eth0和eth1網卡及dns指向確保squid代理服務器能與外網通信
(2)、?安裝squid服務器
???yum?-y?install?squid??yum?安裝
???Rpm?-ivh???squid-2.6.STABLE21-3.el5.i386.rpm??rpm安裝
配置目錄?/etc/squid/
默認訪問日志文件?/lvar/log/squid/access.log
監聽端口?http_port?3128
cache_mem?64M??用多少內存來進行緩存默認為64M
maxinum_object_size?4086KB?最大緩存對象4M
reply_body_max_size?10240000?allow?all?最大訪問的對象10M
visible_hostname??proxy.test.com?這個地方一定要配置一下,可以任意寫一些內容,不配置squid服務器啟動不起來,主要是在客戶端訪問出錯時要顯示的字符
cache_dir?ufs?/var/spool/squid?100?16?256?
Ufs??是緩存數據的存儲格式
/var/spool/squid/??存放緩存存放的磁盤目錄?(在第一次啟動squid是初始化)
100?為緩存目錄分配的磁盤空間(默認100M)?
16?緩存空間的一級子目錄?(16個)
256?緩存空間的二級子目錄?(265個)
由于squid.conf配置文件很大,有4千多行,可以先用如下命令看一下沒用注釋的行,即要配置的內容。
grep?-v?"^#"?squid.conf?|grep?-v?"^$"?
acl?all?src?0.0.0.0/0.0.0.0????????????用acl定義某些元素名稱,即策略元素?
acl?manager?proto?cache_object
acl?localhost?src?127.0.0.1/255.255.255.255
acl?to_localhost?dst?127.0.0.0/8
acl?SSL_ports?port?443
acl?Safe_ports?port?80?#?http
acl?Safe_ports?port?21?#?ftp
acl?Safe_ports?port?443?#?https
acl?Safe_ports?port?70?#?gopher
acl?Safe_ports?port?210?#?wais
acl?Safe_ports?port?1025-65535?#?unregistered?ports
acl?Safe_ports?port?280?#?http-mgmt
acl?Safe_ports?port?488?#?gss-http
acl?Safe_ports?port?591?#?filemaker
acl?Safe_ports?port?777?#?multiling?http
acl?CONNECT?method?CONNECT
http_access?allow?manager?localhost???用http_access來定義策略
http_access?deny?manager
http_access?deny?!Safe_ports
http_access?deny?CONNECT?!SSL_ports
http_access?allow?localhost
http_access?deny?all??默認拒絕全部
icp_access?allow?all???
http_port?3128????監聽的端口,為了安全期間3128前面最好加一個地址,即eth1的地址,這樣只允許內網的用戶使用squid服務器。
hierarchy_stoplist?cgi-bin??
access_log?/var/log/squid/access.log?squid
acl?QUERY?urlpath_regex?cgi-bin?\?
cache?deny?QUERY
refresh_pattern?^ftp:?1440?20%?10080
refresh_pattern?^gopher:?1440?0%?1440
refresh_pattern?.?0?20%?4320
acl?apache?rep_header?Server?^Apache
broken_vary_encoding?allow?apache
coredump_dir?/var/spool/squid
(3)、編輯squid.conf配置文件(/et/c/squid/squid.conf)
?添加如下二行
visible_hostname?192.168.2.100
http_port?192.168.2.100:3128
(4)、啟動squid服務器
重啟之前先檢查一下語法?squid?-k?parse
上面提到的16X256個目錄在/var/spool/squid/下已建立??
Squid已經啟動了
(5)、在pc1上使用代理測試一下
在pc1上設置代理為,依次單擊IE瀏覽器上的"工具">"Internet選項">"連接">選擇"局域網設置"》如圖:
訪問一下百度看看
?
用上面的出錯信息可以看到,別拒絕了,因為默認是拒絕所有的http_access?deny?all?,所以為了我們測試在squid.conf配置文件http_access?deny?all?前面再加上一句?http_access?allow?all????重啟squid服務
(6)、再次測試并查看squid日志
打開了百度網頁?,好了可以上網了
其中日志中帶有的?TCP_HIT?表示緩存命中,可以提高訪問速度,對應TCP_MISS表示緩存丟失
下面是實例
2、Squid實現正向代理
拓撲圖同圖一
1、禁止ip為192.168.2.2的內網訪問外網
在squid中寫入下策略(在上述的基礎上)
重啟squid服務并測試和查看日志
2、禁止ip在192.168.2.2---2.10的內網訪問外網
重啟squid服務并測試和查看日志如下:(時刻要觀察日志)
3、只允許192.168.2.10的內網訪問192.168.1.1進行路由管理
4、綜合,禁止在上班時間08:00--18:00內訪問網址中帶有"qq"的網址,禁止訪問域名是.sina.com.cn的所有站點,禁止瀏覽網站中的.jpg圖片
?好了,1、2、3、4后都有http_access?allow?all?這一項,測試我就不截圖了,是沒問題的。
3、squid的透明代理
本實驗的內網網段為192.168.2.0/24?代理服務器的eth0網卡的ip地址為192.168.2.20?用于模擬連接內網???eht1的網卡ip地址為192.168.3.1用于模擬連接外網,內網用戶不需要配置使用代理的設置,就可以通過squid代理訪問外網,即透明代理,,
內網的測試機的ip地址為192.168.2.10,外網web服務器及DNS服務器的ip地址都為192.168.3.100?
按照以上拓撲圖,要求pc1通外網的DNS解析訪問外網的web頁面
試驗配置如下:
(1)首先你必須先確保能啟動squid,如何啟動請看上面的配置
(2)打開數據包轉發功能
vim?/etc/sysctl.conf?
net.ipv4.ip_forward?=?1??1為開啟?0?為關閉
sysctl?-p??加載系統
(3)實現DNS解析通過
如果是靜態IP用下條命令
iptables?-t?nat?-A?POSTROUTING?-s?192.168.2.0/24?-p?udp?--dport?53?-j?SNAT?--to?192.168.3.1
如果是動態的IP用下面的命令
iptables?-t?nat?-R?POSTROUTING?1?-s?192.168.2.0/24?-p?udp?--dport?53?-j?MASQUERADE
??(4)設置端口重定向
iptables?-t?nat?-A?PREROUTING?-p?tcp?--dport?80?-j?REDIRECT?--to-port?3128
??(5)編輯squid.conf
?http_port?192.168.2.20:3128?transparent???
?http_access?allow?all?
5、測試結果及squid日志
?
4、squid之反向代理
上述拓撲圖,某公司內網用一臺web服務器,要求internet的用戶通過訪問本公司的合法ip即192.168.3.100的80端口即可訪問內網的web服務器。
我們用squid緩存服務器的反向代理來實現
配置如下:
(1)首先你必須先確保能啟動squid,如何啟動請看上面的配置
(2)修改squid.conf配置文件?如下:
http_port?192.168.3.100:80?vhost?
cache_peer??192.168.2.10?????????parent?????80????0????originserver
http_access?allow?all?
上面的一句話的意思是指明web服務器的地址,在squid沒用查到用戶請求的數據后,會向自己的父級即內網web服務器,去幫客戶去查詢。。
?(3)重啟squid?,在pc上訪問192.168.3.100測試
可以了,不懂的可以留言
本文轉自 abc16810 51CTO博客,原文鏈接:http://blog.51cto.com/abc16810/1052097
總結
以上是生活随笔為你收集整理的Squid在企业中的应用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 用CORS 解决vue.js djang
- 下一篇: pg 10 wal 归档同步配置