軟件環境:squid3.0+iptables
實現網絡的透明代理與反向代理
第一、安裝
低於3.0的包,與現在目前的有很多參數不一樣。
yum -y install squid
源碼:
1、調整內核參數(這是臨時性的,若要永久生效,可以寫在rc.local文件中)
ulimit -n 顯示
ulimit -HSn 8192 (改變用戶打開8192個文件)
vim /etc/sysctl.conf(改變端口號的範圍)
net.ipv4.ip_local_port_range=1024 61000
net.ipv4.ip_forward=1 (打開轉發功能)
sysctl -p
2、安裝源碼包
解壓到/usr/src下,進入相關目錄,進行配置編譯安裝。
/usr/local/squid/var/ <---存放日誌文件,磁盤緩存文件,需要佔用大量的磁盤空間。 --localdir=dir安裝參數
--enable-async-io <---異部比同步快很多,是採用多線程工作,一般設置爲120就可以了。緩存文件存取的機制。
--enable-delay-pools <--限制帶寬支持
--enable-useragent-log <--記錄瀏覽器的相關信息
--enable-referer-log <--引用日誌
--disable-wccp --disable-wccpv2 <---一些關於路由器信息
--enable-snmp|| --disable-snmp <---便於監控服務器
--enable-arp-acl <---可以利用MAC地址進行限制
--enable-htcp <---多臺squid服務器之間進行溝通
--enable-ssl <---支持安裝套接字的代理
--enable-basic-auth-helpers="NCSA,multi-domain-NTLM,PAM" 在上網代理的時候驗證
--enable-auth=ntlm,basic
--with-large-files <--大文件的支持,如果日誌文件超過2G,那麼可能掛掉,若啓用了這項,則不會,但不建議無限制的增大。
--enable-default-err-language="Simaplify_Chinese"
--enable-linux-tproxy <--加此參數,在正常啓動的時候不會報一個透明代理不支持的警告(不加,不影響運行)
./configure --enable-async-io=120 --enable-delay-pools --enable-useragent-log --enable-referer-log --disable-wccp --disable-wccpv2 --enable-snmp --enable-arp-acl --enable-htcp --enable-ssl --with-large-files --enable-default-err-language="Simplify_Chinese" --enable-basic-auth-helpers="NCSA,multi-domain-NTLM,PAM" --enable-auth=ntlm,basic --enable-linux-tproxy
3、正向代理
打開路由轉發
編輯配置文件(rpm):/etc/squid/squid.conf
源碼包:/usr/local/squid/etc/squid.conf
http_port 3128 || http_port 172.16.7.6:3128
cache_mem 8 MB,若專門做代理服務器,沒有其他服務,那麼可以設置成內存的一半以上,如果有其他的服務,那麼不要超過物理內存的1/3。
cache_dir ufs /usr/local/squid/var/cache 100 16 256(緩存的空間,第一個單位爲M,建議使用一個大一點的分區,來區分開。16在cache下生成16個文件夾,在其他再建立256文件夾)
cache_store_log /usr/local/squid/var/logs/store.log 記錄緩存了哪些網站
access_log /usr/local/squid/var/logs/access.log squid(3.0以前的版本參數爲cache_access_log,這個參數是指定存放記錄客戶端的訪問記錄的日誌文件路徑,squid是表示寫日誌時用什麼樣的身份進行寫入)
cache_effective_user squid,(日誌文件的所有者指定,且要爲/usr/local/squid/var/logs/指定本擁有者)
cache_effective_group squid(組身份)
dns_nameservers 172.16.7.6 10.1.1.141(指定代理服務在解析的時候,用的DNS服務器地址,如果是上公網,一定設置一個公網的IP地址)
visible_hostname station8.uplooking.com(主機名需寫到/etc/hosts和/etc/sysconfig/network中,這樣纔可以確切定位)
http_access allow all(應用規則,在582行加入,這樣比較集中)
4、第一次運行squid必須初始化緩存目錄,並確保緩存目錄的權限
/usr/local/squid/sbin/squid -zX(創建緩存初始化)
手工創建緩存目錄:mkdir /usr/local/squid/var/cache
useradd -s /sbin/nologin squid
chown -R squid:squid /usr/local/squid/var/cache(給緩存目錄和日誌目錄的權限squid用戶)
5、運行
/usr/local/squid/sbin/squid -N -d1 (-N運行在前臺,-d1把錯誤信息輸出到屏幕)
---------------------------------------------------------------------------------------------------------
透明代理
1.透明代理要設置路由轉發:echo "1" > /proc/sys/net/ipv4/ip_forward
vim /etc/sysctl.conf net.ipv4.ip_forwared = 1
iptables -t nat -A POSTROUTING -p tcp --dport 80 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
iptables -t nat -A POSTROUTING -p tcp --dport 53 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
iptables -t nat -A POSTROUTING -p tcp --dport 53 -s 172.16.7.0/24 -o eth1 -j SNAT --to-source 10.1.1.86
iptables -t nat -A POSTROUTING -p tcp -s 172.16.7.0/24 -j DROP
設定squid服務器與DNS,由於squid開放了DNS請求,因此可以指定一個外網的DNS服務器。
2.結合squid做透明代理,增加強大的過濾功能以及緩存功能。
iptables -t nat -A PRETOUTING -i eth0 -s 172.16.7.0/24 -p tcp --dport 80 -j REDIRECT --to-port 3128(將以前的80端口轉發給3128squid服務器來處理)
3.配置squid服務器
在3.0的版本上只需要更改以下設置即可:http_port 3128 transparent
在3.0版本以下的需要更改的設置:http_port 3128
httpd_accel_port 80
httpd_accel_host virtual
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
------------------------------------------------------------------------------------------------------------
訪問控制列表
1.定義acl規則:
acl rule_name
2.應用acl規則:
http_access deny|allow rule_name[ rule2 rule3]
-----------------------------------------------------------------
針對以下內容定義規則:
acl lunch_time time MTWHF 12:00-13:30
acl class_off time MTWHF 17:00-20:00
acl bad_post urlpath_regex -i \.exe$ \.rar$ \.rm$ \.rmvb$ \.avi$ \.mp3$
acl bad_site url_regex -i sex sexy movie news sport
acl weeken time SA 00:00-23:59
acl vip arp 00:1E:90:E5:78:38
acl bad_list dstdoman "/usr/local/squid/etc/bad_list"
>>>>>>>>>>>>>>>>>>
vim /usr/local/squid/etc/bad_list
.youku.com
.qq.com
.mop.com
.163.com
<<<<<<<<<<<<<<<<<<
針對以下定義的規則,合理放置:
http_access allow vip
http_access deny bad_post
http_access deny bad_site
http_access deny bad_list
http_access allow all lunch_time
http_access allow all class_off
http_access allow all weeken
http_access deny all
3.只允許在中午休息時間上網:週一至週五中午12:00-13:30分
4.只允許下午休息時間上網:週一至週五17:00-20:00
5.禁止下載附件.exe .rar .rm .rmvb .avi .mp3 .mp4
6.禁止訪問網址中包含如下關鍵字:sex sexy movie news sport
7.週末全天候開放上網時間,限制依舊。
8.VIP無限制上網(使用MAC地址過濾)
9.在黑名單的網站不允許訪問.youku.com .mop.com .qq.com
--------------------------------------------------------------------------------------------
3.0反向代理
F5調度是在IP網絡層
vim /usr/local/squid/etc/squid.conf
http_access allow all
http_port 80 vhost vport(設置偵聽的端口)
cache_peer 192.168.1.2 parent 80 0 no-query originserver name=web(局域網真實的WEB服務器,後面跟的是工作端口,0是否打開ICP-port端口,squid與squid通過ICP-port協議來進行共享緩存)
cache_peer_domain web www.upl.com(2.6不存在此參數)
-----------------------------------------------------------
3.0以前的版本配置反向代理
http_port 80 <--- squid本身監聽的端口
httpd_accel_port 80 <---原來的真實web監聽的端口
httpd_accel_host 10.1.1.20 <---原來的真實web的ip地址
httpd_accel_with_proxy on
httpd_accel_uses_host_header on
真實web服務器的需要配置網關:
route add default gw 10.1.1.21
在沒有配置DNS的情況下測試
在squid服務器上添加記錄
# vim /etc/hosts
10.1.1.20 www.upl.com
在測試的客戶端機器上也必須寫一條
# vim /etc/hosts
192.168.20.2 www.upl.com
squid -z生成
/sbin/squid -k reconfig(重新啓動)
---------------------------------------------------
Squid安裝設試命令:
1,初始化你在 squid.conf 裏配置的 cache 目錄
#/usr/local/squid/sbin/squid -z //初始化緩存空間
如果有錯誤提示,請檢查你的 cache目錄的權限。
2,對你的squid.conf 排錯,即驗證 squid.conf 的 語法和配置。
#/usr/local/squid/sbin/squid -k parse
如果squid.conf 有語法或配置錯誤,這裏會返回提示你,如果沒有返回,恭喜,可以嘗試啓動squid。
3,在前臺啓動squid,並輸出啓動過程。
#/usr/local/squid/sbin/squid -N -d1
如果有到 ready to server reques,恭喜,啓動成功。
然後 ctrl + c,停止squid,並以後臺運行的方式啓動它。
4,啓動squid在後臺運行。
#/usr/local/squid/sbin/squid -s
這時候可以 ps -A 來查看系統進程,可以看到倆個 squid 進程。
5,停止 squid
#/usr/local/squid/sbin/squid -k shutdown
這個不用解釋吧。
6,重引導修改過的 squid.conf
#/usr/local/squid/sbin/squid -k reconfigure //載入新的配置文件
這個估計用的時候比較多,當你發現你的配置有不盡你意的時候,可以隨時修改squid.conf,然後別忘記對你的 squid.conf排錯,然後再執行此指令,即可讓squid重新按照你的 squid.conf 來運行。
7./usr/local/squid/sbin/squid -k rotate 輪循日誌
8,把squid添加到系統啓動項
編輯 /etc/rc.d/rc.local
添加如下行: /usr/local/squid/sbin/squid -s
squid代理服務器的搭建
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
Linux基本操作命令
wbzjacky
2019-02-24 13:12:38
真實的模擬***綜合實驗
wbzjacky
2019-02-24 13:12:37
三層交換機的HSRP、vlan、端口聚合
wbzjacky
2019-02-24 13:12:37
HSRP和二層交換機的端口聚合、vlan
wbzjacky
2019-02-24 13:12:37
如果同事暗中傷害你,應該怎麼辦?
這個饅頭有餡
2019-02-24 13:59:08
職場中,抱怨越多的員工,越被領導瞧不起!
這個饅頭有餡
2019-02-24 13:59:08
老程序員被裁,應屆生卻能月薪 1.3 萬?這你能忍?
前端高達
2019-02-24 13:48:04
遇到到處蹭吃卻從不請客吃飯的主怎麼辦?
樑軍年
2019-02-24 13:26:35
高標準機房綜合配線安裝
wbzjacky
2019-02-24 13:12:38
IPsec ***實驗
wbzjacky
2019-02-24 13:12:37
CISCO路由AAA的Easy ***
wbzjacky
2019-02-24 13:12:37
CISCO訪問控制列表 企業網絡管理的必殺技
wbzjacky
2019-02-24 13:12:37