正向代理是一個位於客戶端和原始服務器(origin server)之間的服務器,爲了從原始服務器取得內容,客戶端向代理髮送一個請求並指定目標(原始服務器),而後代理向原始服務器轉交請求並將得到的內容返回給客戶端,客戶端才能使用正向代理。vim
正向代理的典型用途是爲在防火牆內的局域網客戶端提供訪問Internet的途徑。正向代理還可使用緩衝特性(由mod_cache提供)減小網絡使用率。正向代理容許客戶端經過它訪問任意網站而且隱藏客戶端自身,所以你必須採起安全措施以確保僅爲通過受權的客戶端提供服務。和反向代理不一樣之處在於,典型的正向代理是一種最終用戶知道並主動使用的代理方式。 瀏覽器
借用知乎兩張圖來解釋正向代理:https://www.zhihu.com/question/24723688
緩存
做用安全
訪問原來沒法訪問的資源,如google服務器
作緩存,加速訪問資源微信
對客戶端訪問受權,上網進行認證網絡
代理能夠記錄用戶訪問記錄(上網行爲管理),對外隱藏用戶信息app
普通代理dom
普通代理:代替局域網內的全部主機訪問公網的網站服務,局域網內的主機須要在本身的瀏覽器中指定代理服務器的ip地址和監聽的端口號
安裝軟件包squidtcp
[root@ECS58979490c134 ~]# yum -y install squid
[root@ECS58979490c134 ~]# vim /etc/squid/squid.conf
http_port 3128 //squid默認監聽的端口號
cache_mem 8MB //默認緩存容量8MB
cache_dir ufs /var/spool/squid 100 16 256 //設置緩存目錄的大小,緩存文件的格式,大小100M,一級子目錄16個,每一個一級子目錄下有256個二級子目錄
access_log /var/log/squid/access.log squid //訪問日誌文件,默認開啓
visible_hostname proxy.eflycloud.com //默認用環回口的主機名做爲代理服務器的主機名。手動指定主機名時必須與物理接口綁定
maximum_object_size //容許緩存數據的最大值。不設置時,不限制
reply_body_max_size //容許經過代理服務器訪問的最大目標對象
http_access allow all //默認拒絕全部主機
[root@ECS58979490c134 ~]# cat /etc/hosts127.0.0.1 localhost.localdomain localhost::1 localhost6.localdomain6 localhost6192.168.1.254 proxy.eflycloud.com proxy //物理接口綁定主機名
啓動服務
[root@ECS58979490c134 ~]# service squid start
init_cache_dir /var/spool/squid... Starting squid: .[ OK ]
[root@ECS58979490c134 ~]# netstat -anptu | grep :3128
Tcp 0 0 0.0.0.0:3128 0.0.0.0:* LISTEN 10439/(squid)
客戶端瀏覽器中設置代理服務器
透明代理
透明代理:客戶端不須要在本機的瀏覽器裏指定代理服務器的IP地址和監聽的端口號,給客戶端的感受是直接與公網通信的。不過客戶端須要指定或者添加透明代理服務器爲網關。
[root@ECS58979490c134 ~]# vim /etc/squid/squid.conf
http_port 3128 transparent //透明傳輸
[root@ECS58979490c134 ~]#service squid restart
寫防火牆規則,把訪問目標端口是80的請求轉到3128端口。若是不指定端口則是所有請求都會轉到3128端口
[root@ECS58979490c134 ~]# service iptables start //開啓防火牆服務
[root@ECS58979490c134 ~]#setup[root@ECS58979490c134 ~]# iptables -t filter -F //清空表filter防火牆規則
[root@ECS58979490c134 ~]# iptables -t nat -F //清空表nat防火牆規則
[root@ECS58979490c134 ~]# iptables -t nat -A PREROUTING -i eth0 -s 192.168.1.0/24 -p tcp --dport 80 -j REDIRECT --to-ports 3128 //PREROUTING 在路由以前,-i 數據包從哪一個口進來,-s 源IP地址, –p 協議, –dport 目標端口, --to-ports 轉到哪一個端口
[root@ECS58979490c134 ~]# service iptables save //永久生效
客戶端將網關指向代理服務器的內網接口的ip地址
[root@ECS58979490c164 ~]# route add default gw 192.168.1.254