代理
正向代理
正向代理(forward proxy), 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理比如对浏览器配置代理。典型的案例就是访问谷歌,通过访问代理服务器最后访问国外谷歌服务器。
反向代理
反向代理(Reverse Proxy),以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求的客户端,此时代理服务器对外表现为一个反向代理服务器。而在用户看来,他只是访问了Proxy服务器而已,典型案例是负载均衡。
示例图
正向代理和反向代理的区别
位置不同
- 正向代理,架设在客户机和目标主机之间
- 反向代理,架设在服务器端
代理对象不同
- 正向代理,代理客户端,服务端不知道实际发起请求的客户端
- 反向代理,代理服务端,客户端不知道实际提供服务的服务端
用途不同
- 正向代理,为在防火墙内的局域网客户端提供访问Internet的途径
- 反向代理,将防火墙后面的服务器提供给Internet访问
安全性不同
- 正向代理允许客户端通过它访问任意网站并且隐藏客户端自身,因此必须采取安全措施以确保仅为授权的客户端提供服务
- 反向代理都对外都是透明的,访问者并不知道自己访问的是哪一个代理
正向代理的应用:
- 访问原来无法访问的资源
- 用作缓存,加速访问速度
- 对客户端访问授权,上网进行认证
- 代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
反向代理的应用:
- 保护内网安全
- 负载均衡
- 缓存,减少服务器的压力
看问题的角度不一样正向代理是从客户端的角度出发,服务于特定用户(比如说一个局域网内的客户)以访问非特定的服务;反向代理正好与此相反,从服务端的角度出发,服务于非特定用户(通常是所有用户),已访问特定的服务。
HTTP代理
HTTP 代理存在两种形式:
第一种是 RFC 7230 - HTTP/1.1: Message Syntax and Routing
第二种是 Tunneling TCP based protocols through Web proxy servers(通过 Web 代理服务器用隧道方式传输基于 TCP 的协议)
不使用CONNECT的隧道,代理服务器可以单服务端,接收浏览器数据包进行重组和转发,发给目标服务器,然后把目标服务器的数据包重组发给客户端。
网络配置
可以使用双网卡
- 两个网卡不同网段
- route -f //删除0.0.0.0路由默认路由
- 设置内网路由,内网网卡
route add 192.168.1.0 mask 255.255.1.0 192.168.1.2 -p - 设置外网路由,外网网卡接联通外网的路由,网关为外网路由IP地址
route add 目的网络号 mask 目的网络的子网掩码 本地网关 metric 20 if 网卡标识符
忽略 if 参数时,接口由网关地址确定
route add 0.0.0.0 mask 0.0.0.0 172.30.0.1 -p route print
打印路由表- 安装代理软件 CCProxy、Nginx、SSH跳板机
直接通过路由器上外网
- NAT 把众多的局域网IP地址映射为一个InternetIP地址
台式机软路由
代理、路由、NAT的区别
路由模式下,不做NAT转换,直接根据路由表进行转发。
NAT模式下,先进行NAT(如地址转换、端口转换等),再根据路由表进行转发
你中午想吃饭,喜欢吃的那家餐馆太远,于是你找了个电动车(路由器),自己骑车去餐馆吃饭
由于餐馆太远,你到不了,只能托外卖小哥去给你取餐送餐(代理服务器)
NAT
路由器会有两个网络接口,IP 转换(透过修改封包来源或目的ip),原理就相当于多网卡的电脑
静态转换
动态转换
端口多路复用PAT:
端口多路复用是指改变外出数据包的源端口并进行端口转换,即端口地址转换(PAT,Port Address Translation).采用端口多路复用方式
- 当内网主机需要与Internet建立连接时,首先将请求发送到端口NAT服务器。NAT服务器接收到请求后,根据接收到的数据包,检查端口NAT映射表;如果还没有为该内网主机建立地址转换映射项,则NAT服务器会创建一个会话,并给该会话分配一个端口。之后将源地址及端口改为企业公网IP地址及相应的端口,发送数据包到Internet主机上;
- Internet主机接收到信息后,将应答信息返回给端口NAT服务器;
- 当端口NAT服务器接收到应答信息后,检查端口NAT映射表。如果端口NAT表存在匹配的映射项,则将目标地址及端口转换为对应的内网IP及端口,将数据包转发给内网主机。如果不存在匹配映射项,就将数据包丢弃;
代理
客户端首先与代理服务器创建连接,接着根据代理服务器所使用的代理协议,请求对目标服务器创建连接、或者获得目标服务器的指定资源