端口转发&&端口映射

端口转发和端口映射都是为了解决内网主机的端口无法在外部直接访问而衍生出来的技术,通过中间服务器进行中转,将内部的端口映射到公网IP上或者将内部端口转发到外部服务器,供用户或者自己来使用

端口转发

概念:端口转发(Port forwarding),有时被叫做隧道,是安全壳(SSH) 为网络安全通信使用的一种方法。

其他网域其他网域例子:在一个特定网域中,是没有办法直接访问其他网域的。但是我们可以通过路由器的NAT方式访问q。假如我们内网现在有100台主机,那么我们现在都是通过路由器的这一个公网IP和q通信的。那么,当互联网上的消息发送回来时,就要我们的ip地址和路由器的端口进行绑定,在路由器中就会有一个内网ip和路由器端口对应的一张表。当路由器的10000端口收到消息时,就知道把消息发送给他,而当20000端口收到消息时,就知道把消息发送给你。这就是端口转发,其转发一个端口收到的流量,给另一个主机。

比如我们拿到一台内网服务器A的权限,通过扫描发现了同内网的另一台服务器B且开了80端口,我们该如何使用浏览器访问它呢?分析如下

从上图中可以看到,我们已经与A建立了通道,我们可以在A上上传任意文件,执行任意的系统命令,我们如何能够访问B的80端口?假设A是在公网上,有公网IP,我们可以访问它的任意端口。

1、直接在A上执行curl命令访问B的80端口(但不方便测试B的80端口的漏洞和使用)

curl命令是一个利用URL规则工作的文件传输工具,支持文件的上传和下载。curl支持包括HTTP、HTTPS、ftp等众多协议,还支持POST、cookies等协议,小巧好用。

2、在A上开启一个 socks 5代理,我们使用浏览器设置好代理,将我们的浏览器代理到目标内网,然后访问B的80端口。

3、在A上执行端口转发,将B的80端口转发到A的8080,然后我们直接用浏览器访问A的8080端口即可,这个原理就是端口转发。

总结一下,端口转发就是将一个端口,这个端口可以本机的端口也可以是本机可以访问到的任意主机的端口都可以转发到任意一台可以访问到的IP上,通常这个IP是公网IP,方便我们使用。

端口映射

概念:端口映射就是将内网中的主机的一个端口映射到其他网域主机的一个端口,提供相应的服务。当用户访问其他网域IP的这个端口时,服务器自动将请求映射到对应局域网内部的机器上。

其他网域例子:我们在内网中有一台Web服务器,但是其他网域中的用户是没有办法直接访问该服务器。所以在路由器上设置一个端口映射,只要q用户访问路由器ip的80端口,那么路由器会把自动把流量转到内网Web服务器的80端口上。并且,在路由器上还存在一个Session,当内网服务器返回数据给路由器时,路由器能准确的将消息发送给外网请求用户的主机。在这过程中,路由器充当了一个反向代理的作用,他保护了内网中主机的安全。

端口映射就是映射端口,就是将一个内网端口映射到公网上的某个端口,我们来看一个实例,我自己的电脑是在内网中,没有公网IP,但是我想提供一个端口供其他人使用,怎么办呢?我们来看一个图:

A和B在不同的内网,各自有自己的内网IP,但是互相无法直接访问,这时就需要一个中间服务器,要A和B都可以访问然后作为中转服务器,实现上面的目标,这个中间服务器需要有一个公网IP,如图:

上图的C就是有公网IP的中间服务器,我们可以将A的80端口映射到C的80端口,这时,B就可以访问C的80端口,也就相当于访问A的80端口了,这里其实核心原理也是端口转发,只不过是将本机的端口转发到远程的某个端口。

有的路由器也有端口映射与端口转发功能。端口映射与端口转发实现的功能类似,但又不完全一样。端口映射是将外网域的一个端口完全映射给内网一个地址的指定端口,而端口转发是将发往外网的一个端口的通信完全转发给内网一个地址的指定端口

端口转发和端口映射区别:

端口转发:转发的重点在“转”上面。送快递的过来,把所有快递都交给门口保安,保安再根据每件快递上的收件人来分发。

端口映射:就是在大门口给每个人装个柜子,送快递的直接按收件人名字,把快递放到对应的柜子里面。(外网访问本地服务器)

代理和反向代理

概念:代理也被叫做网络代理,是一种比较特殊的网络服务,允许一个终端(通常指客户端)通过这个服务与另一个终端(通常指服务器端)进行非直接的连接。例如:一些网关、路由器等网络设备都具备网络代理的功能。代理服务有利于保障网络终端的隐私或者安全,可以在一定程度上阻止网络攻击(因为通过代理,可以隐藏真正的服务器端/客户端)

代理服务器

左边和右边的电脑在通讯时候,需要经过中间的电脑中转,而中间的那部电脑就是代理服务器。

代理请求过程

客户端首先根据代理服务器所使用的代理协议,与代理服务器创建连接,接着按照协议请求对目标服务器创建连接、或者获得目标服务器的指定资源(如:文件)。

代理协议

此处的协议指的是网络传输协议。
主要是两种:

  • Socks
  • HTTP

网络传输协议在本篇就不做过多介绍。

正向代理

通常我们说的代理,都是指的正向代理。

代理服务器可以由客户端提供,也可以由服务器端提供。当客户端主动使用代理服务器时,此时的代理叫正向代理。比如:一些网络代理工具(加速器/VPN…)

场景:我需要访问一个服务器C,但是由于某些原因我无法访问到它,可是我就是控制不住自己,这个时候,服务器B告诉我,来吧,你想要什么,我来帮你传话,于是,我把自己的请求给了B,B接收到之后,帮我转给了C,(因为B和C之间的线路是畅通的),C把返回结果给了B,B非常友好地把结果又还给了我,我觉得太好用了简直,于是我周围的小伙伴都开始将请求发给B,通过B的转发,来获取C的信息,这个时候对于服务器C,C只知道是B发了请求过来,不知道我们这群小伙伴的存在,所以这就是代理。

正向代理完整流程

正向代理时,由客户端发送对某一个目标服务器的请求,代理服务器在中间将请求转发给该目标服务器,目标服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。使用正向代理时,客户端是需要配置代理服务的地址、端口、账号密码(如有)等才可使用的。

通过上图可以看到,客户端并没有直接与服务器相连。正向代理隐藏了真实的客户端地址。可以很好地保护客户端的安全性。

正向代理的适用场景

  • 访问被禁止的资源(让客户端访问原本不能访问的服务器。可能是由于路由的原因,或者策略配置的原因,客户端不能直接访问某些服务器。为了访问这些服务器,可通过代理服务器来访问)

    • 再比如客户端IP被服务器封禁,可以绕过
    • 也可以突破网站的区域限制
  • 隐藏客户端的地址(对于被请求的服务器而言,代理服务器代表了客户端,所以在服务器或者网络拓扑上,看不到原始客户端)

  • 进行客户访问控制

    • 可以集中部署策略,控制客户端的访问行为(访问认证等)
    • 记录用户访问记录(上网行为管理)
    • 内部资源的控制(公司、教育网等)
  • 加速访问资源

    • 使用缓冲特性减少网络使用率(代理服务器设置一个较大的缓冲区,当有外界的信息通过时,同时也将其保存到缓冲区中,当其他用户再访问相同的信息时, 则直接由缓冲区中取出信息,传给用户,以提高访问速度。)
  • 过滤内容(可以通过代理服务器统一过滤一些危险的指令/统一加密一些内容、防御代理服务器两端的一些攻击性行为)

反向代理

场景:我向B发送了一个请求,B对我的请求进行分析,发现我请求的是文章详情,于是B将请求转发给处理文章详情的应用服务器C1,我又向B发了一个请求,B解析之后,发现请求的是我的声望值等个人信息,于是B将请求转发给专门处理个人信息的应用服务器C2,就这样,我不在乎我要请求的数据是在C1,C2,还是C3上,我只需要发送请求到B就可以了,B会对我的请求进行解析,决定转发请求给Cx来处理,并得到处理结果后返回给我。

概括一下就是,一个请求对于客户端是透明的,我不知道我的请求具体由谁处理,我将请求都发给B,至于B发给Cx,随便。

代理与反向代理在实际工程中应用很广泛,反向代理是许多大公司业务处理过程中的经典方式,前端由一个nignx负责根据用户的请求信息转发请求给后端相应的应用服务器(这个过程中也可以加入负载均衡)。

**反向代理:**服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知代理服务器的IP地址,而不知道在代理服务器后面的服务器集群的存在。

反向代理整个流程:由客户端发起对代理服务器的请求,代理服务器在中间将请求转发给某一个服务器,服务器将结果返回给代理服务器,代理服务器再将结果返回给客户端。

反向代理的适用场景

  • 负载均衡

    • 如果服务器集群中有负荷较高者,反向代理通过URL重写,根据连线请求从负荷较低者获取与所需相同的资源或备援。可以有效降低服务器压力,增加服务器稳定性
  • 提升服务器安全性

    • 可以对客户端隐藏服务器的IP地址
    • 也可以作为应用层防火墙,为网站提供对基于Web的攻击行为(例如DoS/DDoS)的防护,更容易排查恶意软件等
  • **加密/SSL加速:**将SSL加密工作交由配备了SSL硬件加速器的反向代理来完成

  • 提供缓存服务,加速客户端访问

    • 对于静态内容及短时间内有大量访问请求的动态内容提供缓存服务
  • 数据统一压缩

    • 节约带宽
    • 为网络带宽不好的网络提供服务
  • 统一的访问权限控制

  • 统一的访问控制

  • 突破互联网的封锁

    • 突破谷歌访问封锁

    • 也就是说,不需要客户端进行代理,我们通过谷歌代理网站(该代理服务器可以访问谷歌,而我们可以访问该公开的代理服务器),也可以突破封锁。
  • 为在私有网络下(如局域网)的服务器集群提供NAT穿透及外网发布服务

  • 上传下载减速控制

正向代理与反向代理的区别

当前面的内容理解后,对于正向代理和反向代理的区别就很好理解了。最核心的不同在于代理的对象不同。

  • 正向代理是代理客户端。
  • 反向代理是代理服务器。

而根据这核心的区别,我们也可以记住:代理哪端便可以隐藏哪端。也就是说:

  • 正向代理隐藏真实客户端
  • 反向代理隐藏真实服务端

反向代理为什么叫反向代理

从我们用户的角度来看:
代理我们发出请求的客户端被称为正向代理。
而代理我们访问的服务器,则被称为反向代理。从代理结构的角度来看(代理服务器在两种代理中的作用均为收发请求与响应):

客户端与代理服务器属于一个局域网(上图),称为正向代理。

服务器端与代理服务器属于一个局域网时(上图),称为反向代理。

最后,请记住:

  • 正向代理为客户端服务。
  • 反向代理为服务器端服务。

后记

这是很早前学习时综合网上查阅的各类文章资料最后汇总的个人笔记,因为比较久远所以难以备注参考文章链接

端口转发映射详解、代理反向代理深入认知相关推荐

  1. 学完Nginx/OpenResty详解,反向代理与负载均衡配置,能涨薪多少

    反向代理与负载均衡配置 接下来介绍Nginx的重要功能:反向代理+负载均衡.单体Nginx的性能虽然不错,但也是有瓶颈的.打个比方:用户请求发起一个请求,网站显示的图片量比较大,如果这个时候有大量用户 ...

  2. nginx反向代理模块配置详解_nginx反向代理配置详解

    反向代理配置 修改部署目录下conf子目录的nginx.conf文件(如/opt/nginx/conf/nginx.conf)内容,可调整相关配置. 将默认配置里面带#号注释内容去掉 grep -v ...

  3. nginx反向代理模块配置详解_nginx反向代理原理及配置详解

    nginx概述 nginx是一款自由的.开源的.高性能的HTTP服务器和反向代理服务器:同时也是一个IMAP.POP3.SMTP代理服务器:nginx可以作为一个HTTP服务器进行网站的发布处理,另外 ...

  4. gost端口转发使用详解

    这里写自定义目录标题 gost详解远程端口转发使用 场 景: 目标 善功先利器 原理简单说 具体流程 哆啦A梦变身代理 大雄连接水管至哆啦A梦身上,留下大雄龙头 大雄龙头安全性提高 静香接回大雄龙头 ...

  5. 内网服务器外网连接SSH远程端口转发实战详解

    问题 前段时间在外地没有在实验室,随身携带了一个笔记本电脑.但是笔记本性能不够,想用SSH远程连接实验室的电脑.问如何连接?现有以下设备 设备 IP 备注 系统 实验室电脑C1 192.168.0.2 ...

  6. linux端口转发_详解Linux网桥功能--概念、工作机制、相关命令及实例说明

    概述 在说Linux网桥之前,先介绍几个概念,有助于对网桥的功能及实现有更深的理解. 一个交换网络的逻辑图: 1. 冲突域 一个冲突域由所有能够看到同一个冲突或者被该冲突涉及到的设备组成.以太网使用C ...

  7. cglib动态代理jar包_代理模式详解:静态代理+JDK/CGLIB 动态代理实战

    1. 代理模式 代理模式是一种比较好的理解的设计模式.简单来说就是 我们使用代理对象来代替对真实对象(real object)的访问,这样就可以在不修改原目标对象的前提下,提供额外的功能操作,扩展目标 ...

  8. Nginx (一) Nginx介绍 正向代理 反向代理 及配置

    目录 介绍Nginx Nginx处理高并发 正向代理 正向代理配置 反向代理 反向代理配置 介绍Nginx Nginx是一款自由的.开源的.高性能的HTTP服务器和 反向代理 服务器:同时也是一个IM ...

  9. Nginx总结(安装,使用,正向代理,反向代理,负载均衡)

    目录 Nginx介绍与安装 一.Nginx简介 1.什么是ngnix 2.nginx应用场景 二.Nginx安装与启动 Nginx静态网站部署 一.静态⽹站的部署 二.配置虚拟主机 1.端⼝绑定 2. ...

最新文章

  1. Java封装OkHttp3工具类
  2. SQL Server中数据的修改是如何落盘的?
  3. 洛谷 P1202 模拟 - 黑色星期五 Friday the Thirteenth
  4. 资深专家深度剖析Kubernetes API Server第2章(共3章)
  5. 力登:以智能化管理提升数据中心服务能力成熟度
  6. Spring Boot笔记-logback-spring.xml获取application.properties中的变量
  7. pytorch 指定卡1_收藏 | 13则PyTorch使用的小窍门
  8. excel缩字间距_excel字体间距紧缩
  9. po 价格条件表_SAP 定价
  10. 信息科技风险管理提升方案(上)
  11. pytorch转onnx: step = 1 is currently not supported以及Exporting the operator silu to ONNX opset version
  12. 有个Linux主机能干什么,什么是Linux主机?
  13. 微信公众号迁移流程 《openid转换》
  14. 固态硬盘开盘数据恢复的方法
  15. HDU4730 We Love MOE Girls
  16. win10台式计算机调亮度,台式win10电脑屏幕亮度无法调节怎么办
  17. Django 框架图
  18. 触控面板 开发_长信科技研发内核不断升级 成触控显示一体化领军企业
  19. Android6.0运行时权限处理
  20. 区块链开发的权威指南

热门文章

  1. 杰奇小说模板为什么要做伪静态,做了伪静态的好处是什么
  2. linux it资产管理系统,开源IT资产管理软件(GIPI)
  3. 【grafana】grafana Panel plugin not found: grafana-piechart-panel
  4. 京东开普勒php接口,PHP调用京东联盟开普勒、宙斯API模板
  5. linux和windows双系统互拷文件乱码问题,linux和windows双系统互拷文件乱码问题
  6. INIT_DELAYED_WORK() 函数剖析
  7. 【小白搞机入门】名词集-卡米
  8. 关于iOS APP设置启动图片
  9. HTML5 <header> 标签、HTML5 <html> 标签
  10. springboot 实现随机 轮训 加权轮训 一致性哈希 算法