Blogs
    163 posts
NPS 代理实现:HTTPS 代理与 SNI 证书管理
引言 在 NPS 系列文章中,我们已经探讨了 NPS 的整体架构、服务端核心以及多种代理模式。本篇文章将深入 NPS 的 HTTPS 代理实现。我们将通过分析 nps/server/proxy/https.go 文件,揭示 NPS 如何处理加密的 HTTPS 流量,特别是其对 SNI(Server Name Indication)的支持和多证书管理机制。 HTTPS 代理的需求与挑战 HTTPS 代理比普通的 HTTP 代理更为复杂,因为它涉及到 SSL/TLS 加密。主要挑战包括: SSL/TLS 握手:代理服务器需要参与 SSL/TLS 握手过程,解密客户端请求,然后加密转发给目标服务器,或者直接将加密流量转发给目标服务器。 SNI 支持:为了在同一个 IP 地址上托管多个 HTTPS 网站,客户端在 SSL/TLS 握手时会通过 SNI 扩展告知服务器其要访问的域名。代理服务器需要根据 SNI 信息选择正确的证书。 证书管理:代理服务器需要能够管理和加载多个域名的 SSL/TLS 证书。 https.go:HTTPS 代理的实现 https.go 文件定义了 HttpsServer 结构体,它是 NPS 实现 HTTPS 代理的核心。 ......
NPS 代理实现:WebSocket 代理与 HTTP 反向代理
引言 在 NPS 系列文章的前几篇中,我们已经探讨了 NPS 的整体架构、服务端核心以及多种代理模式(TCP 隧道、HTTP 代理、SOCKS5 代理、P2P 代理和 UDP 代理)。本篇文章将深入 NPS 的 WebSocket 代理和 HTTP 反向代理实现。我们将通过分析 nps/server/proxy/websocket.go 文件,揭示 NPS 如何处理这两种特殊的 HTTP 流量,实现更灵活的网络穿透。 WebSocket 与 HTTP 反向代理的需求 WebSocket:提供客户端和服务器之间的全双工通信通道,常用于实时应用,如聊天、在线游戏、股票行情等。传统的 HTTP 代理无法直接处理 WebSocket 协议的升级和持续连接。 HTTP 反向代理:将客户端的 HTTP 请求转发到后端服务器,并返回后端服务器的响应。它通常用于负载均衡、SSL 卸载、缓存和安全防护等。 websocket.go:WebSocket 与 HTTP 反向代理的实现 websocket.go 文件主要定义了 HttpReverseProxy 和 ReverseProxy 两个结构体,它们共同协作来处理 HTTP 反向代理和 WebSocket 连接。 ......
NPS 代理实现:UDP 代理与数据转发
引言 在 NPS 系列文章中,我们已经探讨了 NPS 的整体架构、服务端核心以及多种 TCP 相关的代理模式(TCP 隧道、HTTP 代理、SOCKS5 代理)和 P2P 代理。本篇文章将聚焦于 NPS 的 UDP 代理实现。我们将通过分析 nps/server/proxy/udp.go 文件,揭示 NPS 如何处理 UDP 流量,实现内网 UDP 服务的穿透。 UDP 代理的需求与挑战 UDP(User Datagram Protocol)是一种无连接的传输协议,常用于对实时性要求较高、允许少量丢包的应用,如 DNS 查询、在线游戏、音视频通话等。由于 UDP 的无连接特性,其代理实现与 TCP 代理有所不同,主要挑战在于: ......