logo NodeSeekbeta

Passport认证穿透转发 - 原理科普解析

image

  • 感谢NS论坛对Passport项目的支持厚爱,自项目11月13日开源以来,截至目前共收集了143颗STAR。
  • 也是自开源以来,收到了热情坛友的各种需求和修改建议,Passport从v1.0.0的只支持tcp单线程穿透模式、仅支持tcp多线程转发,一步一个脚印发展到v1.2.1版本达成了核心功能完全体成就,包含了tcp/udp同时支持的穿透和转发,支持原生高并发的同时,兼顾了低资源消耗,更重要的一步是穿透模式实现了全过程TLS加密。
  • 为了更好的推广这个项目,同时更加集思广益,推进项目继续发展壮大,在此把程序的基本原理跟大家分享。

穿透模式

image

  • 穿透的过程可以理解为直连访问不了的资源,首先从user用户侧发起请求开始,到达server服务端之后,server会通过提前与client建立的连接,通过tls加密的信道向client发送信号,通知client需要连接target目标服务,client收到后,会建立两条连接,一条连接server互联端口并开启tls加密,另一条连通target服务,这样就可以顺利的进行client侧的数据交换,并通过与server的tls通道到达server侧,接下来就是与用户user之间的数据交换了,至此这一条单线程的穿透服务就通了,如果user这边发出了并发请求,整个穿透模式会建立多条tls加密数据连接来传输数据,从而实现了原生高并发。
  • 这里特地说明一下udp的穿透过程,udp包在server和client之间的传输同tcp一样,是通过tls加密的tcp连接来实现的,避免了打洞不成造成的延迟,同时保障了安全性。

转发模式

image

  • 转发模式相比于穿透模式流程更加简化,user用户侧发出的tcp/udp请求到达broker中转后,中转按照设定的target地址建立连接,同时接受来自target目标服务的回应,直接与user发来的连接进行数据交换。
  • 只要user侧支持多线程高并发,broker模式同样可以原封不动的进行转发。需要注意的是,整个转发的过程中没有进行tls加密处理,在使用过程中请保证target目标服务的传输安全性。

安全认证

image
认证系统采用了一种安全且动态的IP白名单机制,用于高效管理访问控制。所有验证过的IP地址都会临时存储在内存中,并在服务器重启时全部清空,从而确保不会存在过期或未经授权的IP地址,这一设计优先考虑了安全性。用户在尝试访问资源时,系统会检查其IP地址是否在白名单中。如果IP已被白名单验证,则可直接访问;如果用户的IP地址发生变化或IP未在白名单中,系统会阻止访问并引导用户进入认证URL。用户通过认证后,系统会将其IP地址临时添加到内存中的白名单,并返回当前用户的IP地址以确认认证成功。在未经认证的情况下,IP将无法通过访问控制。该机制结合了实时验证、对动态IP的适应能力以及强化的安全措施,为用户提供了可靠的访问管理方案。

请关注

  • 以上就是我想和大家分享的Passport基础数据传输流程设计,在搞清楚原理之后,再开始实践应用就方便理解了很多,希望其中的概念和讲解能对你有所帮助,更希望这个项目成为你日常应用的好帮手。
  • 接下来的一段时间我会继续和大家分享Passport的使用案例,更好的理解原理,并结合正在收集的项目需求,设计一键脚本来帮助大家实现想要的功能。
  • 具体代码变更、二进制文件下载请参考仓库:https://github.com/yosebyte/passport
  • 容器镜像拉取:https://ghcr.io/yosebyte/passport
  • 欢迎STAR支持,留下您的使用反馈,我会尽力解决技术问题。
  • 附Passport首发帖子:https://www.nodeseek.com/post-193976-1
12
12

你好啊,陌生人!

我的朋友,看起来你是新来的,如果想参与到讨论中,点击下面的按钮!

📈用户数目📈

目前论坛共有72288位seeker

🎉欢迎新用户🎉