代理伺服器英文全稱是Proxy Server,功能就是它幫助我們去取得網絡資源,然後,将資訊發給我們并且自己保留一份在緩沖中,當使用者再來通路時,它将緩沖中的資訊直接發給我們。
它主要的特點:
1、突破自身IP通路限制。我們在通路外部資源時,代理伺服器首先檢視自己的緩沖區,如果有就将資料發給我們,如果沒有,它會以它的ip去通路網絡資源,然後發給我們。
2、提高通路速度:通常代理伺服器都設定一個較大的硬碟緩沖區,當有外界的資訊通過時,同時也将其儲存到緩沖區中,當其他使用者再通路相同的資訊時, 則直接由緩沖區中取出資訊,傳給使用者,以提高通路速度。
代理伺服器&nat
它們都能夠支援網絡層(ip位址的控制)、傳輸層(端口号的轉換)。
另外代理伺服器能夠支援應用層。
Nat 應用多,然而,安全性差。
代理伺服器 應用少,安全性高。
下面我們來看看三個案例:
一、正向代理
也就是說,我們通過代理伺服器通路外網。
拓撲圖:

1、開啟代理伺服器的路由功能
[root@zlj ~]# vim /etc/sysctl.conf
讓這些參數生效
[root@zlj ~]# sysctl -p
2、安裝squid
[root@zlj Server]# rpm -ivh squid-2.6.STABLE21-3.el5.i386.rpm
3、配置檔案
對于出錯頁面給予辨別
visible_hostname 192.169.1.254
設定權限
文法檢測 ,當沒有資訊時說明是正确的
[root@zlj Server]# squid -k parse
啟動
[root@zlj Server]# service squid start
4、設定本地浏覽器
點選浏覽器,右鍵屬性
點選連接配接,選擇區域網路設定
選擇為lan使用代理伺服器
位址填代理伺服器ip(如 192.168.1.254),端口填3128
5、測試
通路外網
觀察代理伺服器的日志
[root@zlj Server]# tail -f /var/log/squid/access.log
6、特殊設定
6.1 acl aclname src ip-address/netmask ... (clients IP address)
基于ip的限制
例如 :
acl badip src 192.168.1.1/255.255.255.255
http_access deny badip
不為192.168.1.1的主機代理
測試2
檢視日志
6.2 acl aclname src addr1-addr2/netmask ... (range of addresses)
控制一段位址範圍
例如:
acl badip src 192.168.1.1-192.168.1.110/255.255.255.255
測試
6.3 acl aclname dst ip-address/netmask ... (URL host's IP address)
根據目的ip控制
acl badip dst 61.130.130.1/255.255.255.255
測試:
6.4 acl aclname myip ip-address/netmask ... (local socket IP address)
控制本地ip
6.5 acl aclname arp mac-address ... (xx:xx:xx:xx:xx:xx notation)
根據arp控制
6.6 acl aclname srcdomain .foo.com ... # reverse lookup, client IP
根據原域名控制
6.7acl aclname dstdomain .foo.com ... # Destination server from URL
根據目标域名含有某些字的控制
acl badip dstdomain .abc.com
6.8 acl aclname srcdom_regex [-i] xxx ... # regex matching client name
根據目的域名控制
acl badip srcdom_regex -i .abc.com
-i忽略大小寫
6.9 acl aclname dstdom_regex [-i] xxx ... # regex matching server
根據原域名含有某些字的控制
6.10 acl aclname time [day-abbrevs] [h1:m1-h2:m2]
day-abbrevs:
S - Sunday
M - Monday
T - Tuesday
W - Wednesday
H - Thursday
F - Friday
A - Saturday
基于時間的
acl worktime time MTWHFA 08:00-22:00
http_access deny all worktime
6.11 acl aclname url_regex [-i] ^http:// ... # regex matching on whole URL
基于某些字控制
acl badweb url_regex -i sina
http_access deny all badweb
6.12 acl aclname urlpath_regex [-i] \.gif$ ... # regex matching on URL path
基于圖檔控制
acl badweb urlpath_regex -i \.jpg$
将拒絕jpg格式的圖檔
二、透明代理
透明代理就是客戶不用設定任何東西,然而,要在網關的地方做。
1、開啟端口轉換功能
[root@zlj squid]# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 80 -j REDIRECT --to-port 3128
當通路到80端口時,它會給它轉換到3128端口
2、編輯配置檔案
[root@zlj ~]# vim /etc/squid/squid.conf
http_port 3128 transparent #添加
重新開機服務
[root@zlj ~]# service squid restart
3、測試
直接通路
三、反向伺服器代理
就是讓外網通路内網時,給它加速
1、修改配置檔案
http_port 61.130.130.254:80 vhost
cache_peer 192.168.1.1:80 parent 80 0 originserver
2、測試,啟用
[root@zlj ~]# squid -k parse #檢查文法
[root@zlj ~]# service squid restart #重新開機服務
外網通路内網
提示:
ERROR
The requested URL could not be retrieved
說明我們的配置限制外網使用者了。
設定 權限
http_access allow all
http_access deny all
再次通路
如果還是不行,建議重新開機伺服器
能夠代理到内網
可以看到從61.130.130.1來的主機以get方式通路61.130.130.254,代理伺服器給網際網路上的使用者代理,給我們伺服器加速,同時,我們伺服器也得到了安全保證。