目录
案例实验环境
通过代理服务器访问Internet上的Web服务器
在10.0.0.200上运行wget客户端程序,在10.0.0.199上运行squid代理服务器程序。客户端通过代理服务器的中转,获取Internet上的主机www.baidu.com的首页index.html。
因此,由上图可见,wget客户端程序和代理服务器之间,以及代理服务器与web服务器之间都是使用HTTP协议通信的。HTTP协议是一种应用层协议,它默认使用的是传输层协议是TCP协议。
为了将10.0.0.199设置为10.0.0.200的HTTP代理服务器,我们需要在10.0.0.199上设置环境变量如下:
其中3128是squid服务器默认使用的端口号,可以使用lsof命令查看服务器程序监听的端口号)。设置好环境变量之后,10.0.0.200访问任何Internet上的Web服务器时,其HTTP请求都将首先发送至10.0.0.199的3128端口。
squid代理服务器接受到wget客户端的HTTP请求之后,将简单地修改这个请求,然后把它发送给最终的目标Web服务器。既然代理服务器访问的是Internet上的机器,可以预见它发送的IP数据报都将经过路由器的中转。
部署代理服务器
在HTTP通信链上,客户端和目标服务器之间通常存在某些中转代理服务器,他们提供对目标资源的中转访问。一个HTTP请求可被多个代理服务器转发,后面的服务器称为前面服务器的上有服务器。代理服务器按照其使用方式和作用,分为:
正向代理服务器反向代理服务器透明代理服务器正向代理要求客户端自己设置代理服务器的地址。客户端的每次请求都将直接发送到该代理服务器,并由代理服务器来请求目标资源。比如处于防火墙内的局域网机器要访问Internet,或者要访问一下被屏蔽掉的国外网站,就需要使用正向代理服务器。
反向代理则被设置在服务器端,因而客户端无需进行任何设置。反向代理是指代理服务器接收Internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从内部服务器上得到的结果返回给客户端。这种情况下,代理服务器对外就表现为一个真实的服务器。各大网站通常分区域设置了多个代理服务器,所以在不同的地方ping同一个域名可能得到不同的IP地址,因为这些IP地址实际上是代理服务器的IP地址。
透明代理只能设置在网关上,用户访问Internert的数据报必然都经过网关,如果在网关上设置代理,则该代理对用户来说显然是透明的。透明代理可以看作正向代理的一种特殊情况。
HTTP通信链上的代理服务器
下面是在10.0.0.199上部署squid代理服务器的过程:
sudo apt update
sudo apt install squid
sudo vim /etc/squid/squid.conf
搜索 acl CONNECT ..., 然后如图修改
然后搜索 http_access allow,如图修改:
sudo service squid restart
可以看到,我们显示连接了代理服务器,然后下载的到了index.html。