imtoken钱包下载通道|加密代理
想做一个加密的代理服务器? - 知乎
想做一个加密的代理服务器? - 知乎首页知乎知学堂发现等你来答切换模式登录/注册程序员编程Java计算机网络C++想做一个加密的代理服务器?我是一名校园网用户,校园网会禁止学生访问论坛贴吧类的网站,无论是通过ip或者域名都无法访问,后来我想到了代理服务器,但同样是无法访问,可能是学校的监测…显示全部 关注者29被浏览26,244关注问题写回答邀请回答好问题添加评论分享4 个回答默认排序巴伐利亚啤酒馆竖琴海豹幼崽爱好者 关注另一个回答提到的SSH隧道确实是一种选择,而且曾经有很多学生都使用这种方法。但是问题在于,SSH协议本身不会消耗太大的流量,如果学校的防火墙发现学生的SSH端口产生了巨大的流量,就很容易判断学生并不是在正常的使用SSH,而是在访问网站。实际上,已经存在着很多的加密代理,比如HTTPS代理或者Socks5 over TLS,但是这些加密代理协议都有一些问题,那就是TLS协议在握手阶段并不是加密的,服务器在传回自己的证书时是明文的,这就很容易被学校的防火墙探测到。于是聪明的学生们想到了使用预分享密钥,即将密钥事先储存在本地,跳过握手阶段,直接进行通信。这种方法的效果非常好,实际上这就是现在主流的办法。学校一开始也没有找到太好的应对办法,只能试着伪装成学生向一些学校认为可疑的代理服务器发送请求,进行主动探测。一些没有严格认证用户的协议就因此中招了。但是这对于那些需要认证用户的协议仍然无能为力。然而好景不长,随着科技的进步,种种证据表明,学校的防火墙已经超越了传输层,开始试图还原应用层上的协议。这意味着现有的协议可能会在不久的将来被一一识别。虽然仍然可以依靠混淆等手段,但是想要更好的应对学校在应用层上的防火墙,就需要新一代的加密代理协议。这种协议需要在应用层和代理层上表现得都与正常的协议一样,才可以达到欺骗学校防火墙的目的。编辑于 2018-08-28 22:57赞同 249 条评论分享收藏喜欢收起小猪写程序很好玩 关注ssh隧道就是你想要的东西,不用自己做了。当然,出于学习再做一遍也不是不行。发布于 2015-07-09 21:50赞同1 条评论分享收藏喜欢收起写回答1 个回答被折叠(为什
互联网安全知识扫盲(第二十三期):详解5种翻墙代理协议:Shadowsocks,ShadowsocksR,Vmess,Vless,Trojan - 知乎
互联网安全知识扫盲(第二十三期):详解5种翻墙代理协议:Shadowsocks,ShadowsocksR,Vmess,Vless,Trojan - 知乎首发于网络安全切换模式写文章登录/注册互联网安全知识扫盲(第二十三期):详解5种翻墙代理协议:Shadowsocks,ShadowsocksR,Vmess,Vless,Trojan乏微之无知是福翻墙的原理其实很简单,几乎所有翻墙的原理都是基于“加密代理中转”来实现的为了连接不被GFW阻断,你并不直接和国外的目标服务器(比如Google的服务器)建立连接,而是先将请求发送到一个位于国外的服务器(这个服务器叫做代理服务器)上,再经由该服务器进行中转,从而将你的请求送达目标服务器,目标服务器对你的回复也是如此过程。这其中的关键之处就在于,你和代理服务器之间的连接并不会被GFW阻断。也就是说,GFW认为这个连接属于正常连接,因此予以放行而要想让GFW无法知道你最终要访问哪个网站,就要依靠加密技术。今天来讲的这些协议就是实现加密这种最主要的功能的,只要你和代理服务器之间的通信流量是加密的。这样一来,GFW就无法识别流量的具体内容,只能默认放行下面来讲五种常见的翻墙代理协议(Shadowsocks,ShadowsocksR,Vmess,Vless,Trojan,它们各自有着不同的特点和工作原理:SS Shadowsocks特点:Shadowsocks(简称SS)是一种流行的加密代理服务,旨在帮助用户绕过互联网内容的地理限制或审查,如中国的防火长城(GFW)它使用socks5代理方式,Socks5是一种网络协议,它允许客户端通过代理服务器在客户端和目标服务器之间传递网络包。Socks5支持全面的网络协议(如TCP和UDP),能够处理各种类型的网络请求,并且支持身份验证和加密,Shadowsocks利用这一点来保护数据传输与其他翻墙工具相比,Shadowsocks配置简单,占用资源少,运行效率高。它可以在几乎所有类型的设备上运行,包括Windows、MacOS、Linux、Android、iOS等Shadowsocks使用各种加密算法(如AES-256-CFB、ChaCha20等)来保护数据传输的安全。加密确保了用户数据的隐私和安全性,使得监控者难以窥探数据内容工作原理:客户端与服务器之间的加密连接:用户首先在自己的设备上安装Shadowsocks客户端,并配置要连接的Shadowsocks服务器信息(包括服务器地址、端口和加密方法)。当用户通过客户端访问互联网时,Shadowsocks客户端会将请求加密后发送给服务器数据中转:位于海外的Shadowsocks服务器接收来自客户端的加密请求,解密这些请求,然后以服务器自身的身份向目标网站发送请求。这个过程隐藏了用户的真实IP地址,使得请求看起来像是从Shadowsocks服务器所在地发出的返回数据的加密传输:目标服务器将响应发送回Shadowsocks服务器,服务器再次加密这些数据,然后发送回用户的设备。客户端接收到加密数据后进行解密,最终用户就能看到请求的内容SSR(ShadowsocksR)ShadowsocksR(简称SSR)是基于Shadowsocks(SS)的改进版本,由于SS的一些缺陷被防火长城(GFW)检测到后,SSR被开发出来以增强原有协议的隐蔽性和安全性特点协议层面的改进:SSR在SS的基础上增加了新的协议选项。这些协议用于包装数据,使得数据流更难以被识别和分析,从而增加了通过审查的概率混淆技术:SSR引入了混淆技术,它可以将数据流伪装成正常的互联网流量,如常见的HTTPS流量。这样做可以让SSR的流量在网络上更难以被区分和识别,降低了被防火长城等审查工具检测到的风险安全性提升:通过改进的加密方法和混淆技术,SSR提供了比SS更强的安全性。用户的数据传输更难被第三方监控或审查用户自定义:SSR允许用户在很大程度上自定义混淆方法和协议,这意味着用户可以根据自己的需求和网络环境调整SSR的设置,以达到最佳的翻墙效果工作原理:客户端与服务器之间的加密连接:用户在设备上配置SSR客户端,包括服务器地址、端口、密码、加密方式、协议和混淆设置。当用户尝试连接互联网时,SSR客户端会先对请求数据进行加密数据包装与混淆:加密后的数据会根据用户设置的协议和混淆方法被进一步处理。这一步骤的目的是让数据包看起来像是正常的互联网数据,例如让其看起来像是在访问常见的网站数据中转:加密和混淆后的数据被发送到位于境外的SSR服务器。服务器解密并识别出真实的请求,然后代表用户向目标网站发送请求返回数据的加密传输:目标网站的回应数据被SSR服务器接收,然后该服务器将数据加密并进行混淆处理,最后发送回用户的设备客户端解密数据:SSR客户端在用户的设备上接收到来自服务器的数据后,将其解密和去除混淆,恢复成原始的数据格式,并呈现给用户总的来说,SSR提供了一种更为隐蔽和安全的方式来帮助用户绕过GFW,通过对数据包进行加密和混淆处理,使得审查系统难以识别真实的网络请求,从而让用户能够访问在某些地区受到限制或屏蔽的内容。由于SSR可以高度定制化,它在不断变化的网络审查环境中仍然是一个有效的工具VmessVmess是一个专为V2Ray项目设计的通信协议,它非常适合用于翻墙,即绕过互联网审查。这个协议的设计注重灵活性和安全性,以下是对Vmess特点和工作原理的详细解释:特点复杂的加密和混淆机制:Vmess协议使用了多层加密技术,这些技术可以有效地隐藏用户的数据流,使其不容易被审查系统(如GFW)检测到。混淆机制进一步伪装数据流,使其看起来像正常的互联网流量,例如访问普通网站时的流量支持多种传输协议:Vmess不仅支持基本的TCP和UDP协议,还支持如WebSocket、HTTP/2、mKCP等多种传输方式。这使得Vmess可以根据网络环境的不同选择最适合的传输方式,以实现最佳的性能动态变化的连接:Vmess协议的设计允许连接参数动态变化,每次连接时都使用不同的参数,这样即使有人在监控你的网络连接,也很难从数据包特征上追踪到你工作原理客户端与服务器之间的通信:用户首先需要在自己的设备上配置Vmess客户端,包括服务器的地址和密钥。当用户尝试通过Vmess访问互联网时,客户端将根据预设的信息对数据进行加密处理动态加密:Vmess协议的核心特性之一是它的动态加密能力。客户端和服务器之间会预先分享一些信息,如加密算法和密钥。每次连接时,这些信息都会以某种方式进行更新,确保每一次的连接看起来都是全新的服务器作为中转站:客户端发送的加密数据包到达Vmess服务器后,服务器会解密这些数据,然后以服务器的身份将请求发送到目标网站。这个过程隐藏了用户的真实IP地址,使得请求看起来像是从服务器所在地发出的返回数据的处理:目标网站回应的数据发送到Vmess服务器,服务器再次对这些数据进行加密,然后发送回客户端。客户端收到数据后,进行解密并显示给用户Vmess协议的设计使得用户在互联网上的活动更难以被追踪,通过动态的加密和混淆技术,以及支持多种传输协议,Vmess成为了一个强大且灵活的工具,用于保护用户的隐私并绕过网络审查VlessVless是一个较新的通信协议,它出现的目的是为了解决Vmess协议的一些性能和延迟问题。让我们来详细解释一下Vless的特点和工作原理:特点简化的设计:Vless减少了Vmess协议中的一些复杂功能,这样做的好处是让Vless运行得更快,配置起来也更简单。这对于不是很懂技术的用户来说,是一个很大的优点更高效的性能:由于Vless更加简化,它处理数据的速度更快,对于那些需要快速访问互联网资源的用户来说,Vless能提供更好的体验。更低的延迟:延迟是指数据从一个地方传到另一个地方所需的时间。Vless由于设计上的优化,可以减少这个时间,这对于玩游戏或者进行视频通话等需要实时互动的活动特别重要。核心功能的专注:Vless去除了Vmess中的一些非必要功能,它只专注于提供最关键的服务——加密和数据传输。这种专注使得Vless在这些核心功能上做得更好工作原理强大的加密:尽管Vless设计上更简单了,但它并没有牺牲安全性。它依然使用先进的加密技术来保护用户数据,防止数据在传输过程中被别人窥视或篡改混淆能力:Vless虽然在设计上简化,但仍然具有混淆数据的能力。混淆可以将数据包装成看起来像正常流量,这样就更难被防火墙等审查系统检测到数据传输:当用户通过Vless发送请求时,请求首先会被加密。然后加密后的数据被发送到服务器。服务器接收到数据后,会解密并将请求发送到目标网站。当服务器接收到目标网站的回应后,它会再次加密这些数据,并发送回用户。用户的设备收到数据后,会解密并将信息显示给用户简而言之,Vless通过去除一些非核心功能,专注于加密和快速传输,从而为用户提供了一个更轻量级、更高效、延迟更低的网络协议。这使得Vless成为一个非常适合需要快速和安全网络连接的用户的协议TrojanTrojan是一个较新的代理协议,它的设计理念在于模拟正常的HTTPS网站流量,以此来欺骗并绕过中国的防火长城(GFW)特点模仿HTTPS流量:Trojan协议设计成使其流量外表看上去与普通的HTTPS加密流量没有区别。HTTPS是互联网上常见的加密协议,用于保护用户数据不被第三方轻易读取,Trojan就是利用这种常见性来隐藏其真实目的高隐蔽性:由于Trojan流量在外观上无法与普通HTTPS流量区分,它能够有效地隐蔽其代理流量,使之不易被GFW等审查工具识别和封锁工作原理服务器设置:在使用Trojan协议的过程中,服务器端会模拟一个正常的HTTPS网站。这意味着服务器会有一个有效的SSL/TLS证书,就像一个真实的网站一样,用于加密数据和建立安全连接客户端连接:用户在自己的设备上安装了Trojan客户端,并配置好连接到服务器的相关信息。当用户尝试访问互联网时,客户端会像访问普通HTTPS网站一样与服务器建立连接数据转发:服务器收到来自Trojan客户端的请求后,会识别这些请求并将它们转发到真正的目标服务器。对外界来说,这些请求看起来仅仅是用户在浏览使用HTTPS协议的正常网站数据接收和回应:当目标服务器回应请求时,回应的数据首先发送到Trojan服务器。服务器收到数据后,再将其转发回Trojan客户端。这个过程中,数据的传输保持加密,从而保持了传输的安全性和隐私通过这样的方式,Trojan帮助用户在不引起注意的情况下穿越网络审查,访问那些在某些地区可能被封锁的网站和服务。由于其伪装能力强,使得Trojan成为了一个在翻墙工具中相对难以检测的选择结语网传 GFW 已经通过机器学习、随机预测算法精准识别SS流量,所以才有那么多的翻车事故。SS/SSR使用的标准协议已经落后,流量特征较明显,所以正在被越来越多的人抛弃,不过其市场基础依旧稳固,而根据上面的总结,我们会发现当下的科学上网方式主要就是加密流量、伪装流量。未来翻墙技术的发展方向应该是越接近“正常流量"越可靠发布于 2024-02-26 07:11・IP 属地四川代理合作协议赞同 141 条评论分享喜欢收藏申请转载文章被以下专栏收录网络安全了解网络安全,保护自
最先进的安全且免费的网络代理 |代理代理
最先进的安全且免费的网络代理 |代理代理
获得高级访问权限
登入
这是不准确的机器翻译。 您可以打开原始页面
en English.
或选择
另一种语言
ar عربى
bn বাংলা
de Deutsch
en English
es Español
fr Français
hi हिन्दी
id Indonesian
it Italiano
ja 日本人
ko 한국어
pa ਪੰਜਾਬੀ
pt Português
ru Русский
tr Türk
zh 中文
CroxyProxy 是一种先进的免费网络代理。利用它可以轻松访问您喜爱的网站和 Web 应用程序。享受观看视频、听音乐以及随时了解朋友的新闻和社交媒体帖子的最新动态。
在下面的表格中输入您的搜索查询,以便安全、轻松、快速地访问您想要的任何网站。
走!
Premium
快速链接: DuckDuckGo, Google, YouTube, Facebook, Wikipedia, Reddit, Instagram, TikTok, Twitter, Imgur, Twitch
安装 CroxyProxy 浏览器扩展 你的浏览器
来自 Chrome 网上应用店 或者 手动.一键访问网站!
适用于任何设备的免费代理
CroxyProxy 采用先进技术来无缝支持现代 Web 应用程序。与其他在线代理不同,它不会破坏网站,并支持视频和音频流、访问 Google 和 YouTube 等各种平台以及社交媒体上的通信。这就是为什么它成为市场上最好的免费代理的原因。
CroxyProxy 是一款免费代理,优先考虑您的隐私。它会改变您的虚拟位置,使您在上网时隐形。所有数据在传输前都经过加密,确保连接安全,即使对于较旧的不安全网站也是如此。我们的服务器战略性地位于美国和欧洲不同国家,提供对网站的广泛访问。
Web 代理的主要功能
隐私保护:CroxyProxy 屏蔽您的真实网络身份,确保您的隐私完好无损。
可分享链接:轻松与朋友分享链接,方便访问。
兼容性:它支持任何操作系统和设备,兼容 Chrome、Firefox 和 Safari 等主要网络浏览器。
安全访问旧网站:安全打开非安全网站,不会损害您的隐私。
免费基本版:免费享受 CroxyProxy 的基本功能。
最好的隐私保护
CroxyProxy 是 VPN 的一个很好的替代品。与 VPN 不同,Web 代理流量保持隐藏状态。您甚至可以通过代理打开一个网页并保持其他流量直接,这都是免费服务的一部分,可以为您节省金钱。
CroxyProxy 用户友好;无需下载或浏览器配置。它支持各种设备和操作系统,包括 Windows 桌面、Android 设备、Chromebook 等。
主页 |
用户支持 |
Terms of use |
Privacy policy
Feedback & Ideas
免费配置您的个人网络代理并与朋友分享!
通过高级代理访问享受无广告、超快速浏览!
stunnel+CCProxy:搭建加密代理-腾讯云开发者社区-腾讯云
nel+CCProxy:搭建加密代理-腾讯云开发者社区-腾讯云全栈程序员站长stunnel+CCProxy:搭建加密代理关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网全栈程序员站长首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >stunnel+CCProxy:搭建加密代理stunnel+CCProxy:搭建加密代理全栈程序员站长关注发布于 2022-09-30 11:17:521.7K0发布于 2022-09-30 11:17:52举报文章被收录于专栏:全栈程序员必看全栈程序员必看大家好,又见面了,我是你们的朋友全栈君。 介绍个Internet传输的常用加密方法:SSL; SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。我们常见到的https协议就是基于SSL加密,目前很多银行系统、Gmail的登录程序就采用了Https传输,这是一种公钥,私钥的加密体系,非常安全。目前最好的代理服务器是Socket代理,他是绝大多数Internet软件都支持的代理方式。CCProxy已经支持,那么如何能建立一个支持加密的Socket代理呢?接下来就是stunnel出场了: Stunnel是一个自由的跨平台软件,用于提供全局的TLS/SSL服务。
针对本身无法进行TLS或SSL通信的客户端及服务器,Stunnel可提供安全的加密连接。该软件可在许多操作系统下运行,包括Unix-like 系统,以及Windows。Stunnel依赖于某个独立的库,如OpenSSL或者SSLeay,以实现下面的TLS或SSL协议。
stunnel是一个可以将Socket转换成SSL协议在网路上传输的软件,并提供SSL转换回Socket,通过它就可以在代理信息传输过程中加上一条保障了。具体流程如下:客户端Socket->客户端stunnel——Internet(SSL)——->服务器端stunnel->服务器端CCProxy->Internet具体方法如下:服务器端安装CCProxy,并启动。服务器端安装stunnel,设置配置文件为: cert = stunnel.pem
key = stunnel.pem
; Some performance tunings
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
taskbar=yes
client = no
[socks2ssl]
accept = 8800
connect = 127.0.0.1:1810
其中 127.0.0.1:1810就是服务器上的的CCProxy的Socket代理客户端安装:stunnel设置配置文件: cert = stunnel.pem
socket = l:TCP_NODELAY=1
socket = r:TCP_NODELAY=1
client=yes
[socks2ssl]
accept = 8800
connect = 123.123.123.123:8800
其中 123.123.123.123:8800就是服务器地址,accept = 8800就是本地的接收代理的地址可供本地使用。这样把IE 的套接字(Socket)代理设置成127.0.0.1:8800就可以访问敏感词了如果再安装个Permeo Security Driver那就更爽了,透明代理,不用任何设置即可轻松绕过敏感词系统.版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。 本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。 原始发表:2022年9月9日 下,如有侵权请联系 cloudcommunity@tencent.com 删除前往查看httpssocket编程网络安全SSL 证书本文分享自 作者个人站点/博客 前往查看如有侵权,请联系 cloudcommunity@tencent.com 删除。本文参与 腾讯云自媒体分享计划 ,欢迎热爱写作的你一起参与!httpssocket编程网络安全SSL 证书评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0相关产品与服务SSL 证书腾讯云 SSL 证书(SSL Certificates)为您提供 SSL 证书的申请、管理、部署等服务,为您提供一站式 HTTPS 解决方案。免费体验产品介绍产品文档2024新春采购节领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00
彻底理解正向代理、反向代理、透明代理 - 知乎
彻底理解正向代理、反向代理、透明代理 - 知乎切换模式写文章登录/注册彻底理解正向代理、反向代理、透明代理波哥套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反向代理和透明代理。本文就是针对这三种代理来讲解一些基本原理和具体的适用范围,便于大家更深入理解代理服务技术。最后,如果大家如果在自学遇到困难,想找一个java的学习环境,可以加入我们的java学习圈,点击我加入吧,会节约很多时间,减少很多在学习中遇到的难题。一:正向代理(Forward Proxy)一般情况下,如果没有特别说明,代理技术默认说的是正向代理技术。关于正向代理的概念如下:正向代理(forward)是一个位于客户端【用户A】和原始服务器(origin server)【服务器B】之间的服务器【代理服务器Z】,为了从原始服务器取得内容,用户A向代理服务器Z发送一个请求并指定目标(服务器B),然后代理服务器Z向服务器B转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。(图1.1)从上面的概念中,我们看出,文中所谓的正向代理就是代理服务器替代访问方【用户A】去访问目标服务器【服务器B】这就是正向代理的意义所在。而为什么要用代理服务器去代替访问方【用户A】去访问服务器B呢?这就要从代理服务器使用的意义说起。使用正向代理服务器作用主要有以下几点:1.访问本无法访问的服务器B,如下图1.2(图1.2)我们抛除复杂的网络路由情节来看图1.2,假设图中路由器从左到右命名为R1,R2。假设最初用户A要访问服务器B需要经过R1和R2路由器这样一个路由节点,如果路由器R1或者路由器R2发生故障,那么就无法访问服务器B了。但是如果用户A让代理服务器Z去代替自己访问服务器B,由于代理服务器Z没有在路由器R1或R2节点中,而是通过其它的路由节点访问服务器B,那么用户A就可以得到服务器B的数据了。2.加速访问服务器B这种说法目前不像以前那么流行了,主要是带宽流量的飞速发展。早期的正向代理中,很多人使用正向代理就是提速。还是如图1.2假设用户A到服务器B,经过R1路由器和R2路由器,而R1到R2路由器的链路是一个低带宽链路。而用户A到代理服务器Z,从代理服务器Z到服务器B都是高带宽链路。那么很显然就可以加速访问服务器B了。3.Cache作用Cache(缓存)技术和代理服务技术是紧密联系的(不光是正向代理,反向代理也使用了Cache(缓存)技术。还如上图所示,如果在用户A访问服务器B某数据J之前,已经有人通过代理服务器Z访问过服务器B上得数据J,那么代理服务器Z会把数据J保存一段时间,如果有人正好取该数据J,那么代理服务器Z不再访问服务器B,而把缓存的数据J直接发给用户A。这一技术在Cache中术语就叫Cache命中。如果有更多的像用户A的用户来访问代理服务器Z,那么这些用户都可以直接从代理服务器Z中取得数据J,而不用千里迢迢的去服务器B下载数据了。4.客户端访问授权这方面的内容现今使用的还是比较多的,例如一些公司采用ISA SERVER做为正向代理服务器来授权用户是否有权限访问互联网。(图1.3)图1.3防火墙作为网关,用来过滤外网对其的访问。假设用户A和用户B都设置了代理服务器,用户A允许访问互联网,而用户B不允许访问互联网(这个在代理服务器Z上做限制)这样用户A因为授权,可以通过代理服务器访问到服务器B,而用户B因为没有被代理服务器Z授权,所以访问服务器B时,数据包会被直接丢弃。5.隐藏访问者的行踪如下图1.4 我们可以看出服务器B并不知道访问自己的实际是用户A,因为代理服务器Z代替用户A去直接与服务器B进行交互。如果代理服务器Z被用户A完全控制(或不完全控制),会惯以“肉鸡”术语称呼。(图1.4)总结下,正向代理是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的IP地址,还有代理程序的端口。二:反向代理(reverse proxy)反向代理正好与正向代理相反,对于客户端而言代理服务器就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端。使用反向代理服务器的作用如下:1. 保护和隐藏原始资源服务器(图2.1)用户A始终认为它访问的是原始服务器B而不是代理服务器Z,但实用际上反向代理服务器接受用户A的应答,从原始资源服务器B中取得用户A的需求资源,然后发送给用户A。由于防火墙的作用,只允许代理服务器Z访问原始资源服务器B。尽管在这个虚拟的环境下,防火墙和反向代理的共同作用保护了原始资源服务器B,但用户A并不知情。2.负载均衡(图2.2)当反向代理服务器不止一个的时候,我们甚至可以把它们做成集群,当更多的用户访问资源服务器B的时候,让不同的代理服务器Z(x)去应答不同的用户,然后发送不同用户需要的资源。当然反向代理服务器像正向代理服务器一样拥有CACHE的作用,它可以缓存原始资源服务器B的资源,而不是每次都要向原始资源服务器B请求数据,特别是一些静态的数据,比如图片和文件,如果这些反向代理服务器能够做到和用户X来自同一个网络,那么用户X访问反向代理服务器X,就会得到很高质量的速度。这正是CDN技术的核心。(图2.3)我们并不是讲解CDN,所以去掉了CDN最关键的核心技术智能DNS。只是展示CDN技术实际上利用的正是反向代理原理这块。反向代理结论与正向代理正好相反,对于客户端而言它就像是原始服务器,并且客户端不需要进行任何特别的设置。客户端向反向代理的命名空间(name-space)中的内容发送普通请求,接着反向代理将判断向何处(原始服务器)转交请求,并将获得的内容返回给客户端,就像这些内容原本就是它自己的一样。基本上,网上做正反向代理的程序很多,能做正向代理的软件大部分也可以做反向代理。开源软件中最流行的就是squid,既可以做正向代理,也有很多人用来做反向代理的前端服务器。另外MS ISA也可以用来在WINDOWS平台下做正向代理。反向代理中最主要的实践就是WEB服务,近些年来最火的就是Nginx了。网上有人说NGINX不能做正向代理,其实是不对的。NGINX也可以做正向代理,不过用的人比较少了。三:透明代理如果把正向代理、反向代理和透明代理按照人类血缘关系来划分的话。那么正向代理和透明代理是很明显堂亲关系,而正向代理和反向代理就是表亲关系了。透明代理的意思是客户端根本不需要知道有代理服务器的存在,它改编你的request fields(报文),并会传送真实IP。注意,加密的透明代理则是属于匿名代理,意思是不用设置使用代理了。透明代理实践的例子就是时下很多公司使用的行为管理软件。如下图3.1(图3.1)用户A和用户B并不知道行为管理设备充当透明代理行为,当用户A或用户B向服务器A或服务器B提交请求的时候,透明代理设备根据自身策略拦截并修改用户A或B的报文,并作为实际的请求方,向服务器A或B发送请求,当接收信息回传,透明代理再根据自身的设置把允许的报文发回至用户A或B,如上图,如果透明代理设置不允许访问服务器B,那么用户A或者用户B就不会得到服务器B的数据。发布于 2019-06-10 15:08JavaJava 编程Java 程序员赞同 14112 条评论分享喜欢收藏申请
VPN 和网络代理的区别 — Mozilla VPN
VPN 和网络代理的区别 — Mozilla VPN
菜单
预约
Firefox 浏览器
关闭 Firefox 浏览器菜单
Firefox 桌面版
下载适用于 Windows、Mac 或 Linux,并由非营利组织支持的浏览器
Android 版 Firefox
下载适用于 Android 智能手机的可定制移动浏览器。
iOS 版 Firefox
下载适用于 iPhone 或 iPad 的移动浏览器。
Firefox Focus
移动端隐私浏览,如此简单
隐私承诺
了解 Firefox 如何以尊重您的方式,处理相关数据。
Firefox 博客
了解 Firefox 的新功能,及保持在线安全的方法。
发行说明
获取新版 Firefox 的更新详情。
一览 Firefox 浏览器的所有版本
产品
关闭“产品”菜单
Mozilla Monitor
检查您的邮箱地址是否出现在商业公司的数据外泄事件中。
Facebook Container
帮助阻止 Facebook 在其他网站收集您的数据。
保存并发现网络上的优质文章。
Mozilla VPN
在您的所有设备而不只是浏览器也能获得保护。
产品承诺
了解 Firefox 的所有产品如何保护和尊重您的数据。
Firefox Relay
无须电子邮件地址也能注册新账户。
MDN Plus
MDN 定制化体验:新特性、新工具
一览所有产品
认识我们
关闭“认识我们”菜单
Mozilla 宣言
了解指引我们使命的价值观和准则。
Mozilla 基金会
认识在 Firefox 背后,致力于建构更佳互联网环境的非营利组织。
参与进来
与我们一起,为互联网健康而战。
故事
领导层
认识为更好的互联网构建新技术的团队。
招贤纳士
在一家以使命为驱动,产品开发以人为本的组织工作。
Mozilla 博客
了解 Mozilla 以及我们所关注的议题。
进一步认识 Mozilla
创新
关闭“创新”’菜单
Firefox 开发者版
下载专为开发者打造的 Firefox。
MDN Web 文档
到主页获取 Web 开发者资源。
Common Voice
捐献一段声音,让未来的互联网中每个人都能被听见。
Mozilla 创新项目
探索将绝妙点子变为现实的方法。
Mozilla VPN
了解 VPN
下载 Mozilla VPN
VPN 资源中心
VPN 和网络代理的区别
VPN 和网络代理的区别
虚拟专用网络(VPN)和安全网络代理是更好地保护在线隐私和安全的解决方案,但您可能不太清楚如何分辨哪种服务更适合。阅读下文,了解这两种服务如何提供保护,以及上网时如何做出最佳选择。
阻止 ISP 对您的暗中监视
使用 Firefox 时,增强型跟踪保护会自动拦截许多第三方网络跟踪器在网络上对您的跟踪。但有一个情况值得注意:您的互联网服务提供商(ISP),即向您收取费用以提供互联网连接的组织,仍然能观察和跟踪您。
因为您的互联网流量通过您的 ISP 进出您的设备(电脑、手机、电视、平板电脑),他们可以看到您上网的位置。ISP 可以查看您访问了哪些站点、您在这些站点上停留了多长时间、您的位置以及有关您设备的信息。由于加密,ISP 可能不知道您在这些站点上所做的具体操作,例如您购买、搜索或阅读的内容,但他们可以根据您访问的站点进行推断。这些个人数据可用来创建有关您的详细资料。ISP 为什么要怎么做?简而言之:这些数据很有价值。
ISP 可以将这些信息用于自己的广告定向投放或变现机会,其中可能包括与第三方分享您的信息,从而让这些机构能够对您进行数据挖掘、营销和定向广告,这也意味着隐私更少而跟踪更多。以无痕模式浏览也无法阻止 ISP 看到您的上网位置。但是通过网络代理或 VPN 发送您的网络流量可以大幅增加其这样做的难度。
什么情况下应使用 VPN 或安全代理?
VPN 和安全网络代理有着共同的目标:确保连接安全。它们能够,并且确实会掩藏您的原始 IP 地址,同时保护您与 VPN 或安全代理提供商之间直接发送的网络流量。那么,在什么情况下要使用 VPN,什么情况下又要用代理呢?
安全网络代理:浏览器层面的保护
安全网络代理适用于您可能只在浏览器中进行的任务,有大量的活动都属于此类,如购物、付款、登录社交媒体和阅读电子邮件。安全网络代理介于浏览器与互联网之间。您的网络浏览数据将通过一个安全的通道直接从浏览器进入互联网,掩藏您的 IP 地址,因此,您连接的网络服务器无法知道您的确切位置。这就为跟踪和锁定您增加了难度。
当您在公共 WiFi 上浏览网页时,代理很有用。启用代理后,它将阻止同一网络上的窃听者偷窥您的浏览活动或查看您在未加密网站上的交易。公共 WiFi 网络听上去似乎没什么危险,但它可能会成为黑客的后门。
VPN:设备层面的保护
VPN 的功能要强于代理,因为代理只能保护您在浏览器中的操作,而 VPN 一旦安装和启用,即可保护您的所有流量,包括浏览器。VPN 为您的所有网络活动提供额外的安全和隐私。如果您不想自己的网络活动被窥见,让渴求数据的跟踪器和 ISP 没那么容易通过您的任何设备(如手机、电脑和平板电脑)创建您的资料,VPN 会是您的重点考虑对象。
VPN 的工作原理是在您的设备和整个互联网之间建立一条安全“通道”,并以两种主要方式保护您:
掩藏您的 IP 地址,保护您的个人身份并隐匿所在位置。加密您与 VPN 提供商之间的流量,杜绝本地网络上的任何人进行解密或修改。
VPN 还提供到开放和公共 WiFi 的安全连接。开放 WiFi 可能会有风险,您永远不知道会不会有其他人连接着同一网络,窥探您在做些什么。即使您的流量被加密,他们仍然可以看到您正在访问哪些网站。如果您使用的应用并没有加密,那么他们就可以看到您在上面做什么。而事实上,直到今天,许多应用依然没有进行加密。Mozilla VPN 服务快速、安全、值得信赖,可帮助您弥合安全缺口。通过 Mozilla VPN,您可以从 30 多个国家和地区选择您的“位置”(您的流量所显示的位置源)。
选择值得信赖的服务
选择 VPN 或网络代理的关键在于选择值得信赖的公司。确保您了解您将要同意的条款。很多提供商声称自家的产品非常优秀并且重视隐私保护,但其中有相当一部分并未能兑现承诺。并非所有代理和 VPN 服务都能保证安全和私密。一些 VPN 会记录您的在线活动,以便可将您的数据和信息出售给营销公司。还有一些 VPN 会试图说服您在设备上安装恶意软件。
We’ve done the legwork to ensure that Mozilla VPN respects your privacy, and it’s something we’re willing to stake our reputation on. Mozilla has a reputation for building products that help you keep your information safe. We follow our easy to read, no-nonsense Data Privacy Principles which allow us to focus only on the information we need to provide a service. And since we are backed by a mission-driven company, you can trust that the dollars you spend for this product will not only ensure you have top-notch security, but also are making the internet better for everyone.
这篇文章对您有帮助吗?
文章有帮助
文章没有帮助
1998 年至今,专注于保护您的隐私
预约
Mozilla
公司
Mozilla 宣言
新闻中心
Mozilla 博客
职位
联系我们
捐款
资源
隐私中心
浏览器比较
品牌标准
用户支持
产品帮助
提交 Bug
本地化 Mozilla
开发者
开发者版
Beta
Beta(Android 版)
Nightly
Nightly(Android 版)
企业版
工具
关注 @Mozilla
X(原 Twitter) (@mozilla)
Mastodon (@mozilla)
Instagram (@mozilla)
LinkedIn (@mozilla)
TikTok (@mozilla)
Spotify (@mozilla)
关注 @Firefox
X(原 Twitter) (@firefox)
Instagram (@firefox)
YouTube (@firefoxchannel)
语言
语言
Deutsch
English
Español (de España)
Français
Italiano
日本語
Nederlands
Polski
Português (do Brasil)
Русский
中文 (简体)
前往
隐私
Cookie
法律
社区参与准则
关于本站
欢迎访问 Mozilla Corporation 的非营利母公司 — Mozilla 基金会。
上述内容中的某些部分系 mozilla.org 志愿者个人版权所有(©1998–2024)。内容可按知识共享许可协议使用。
使用NGINX作为HTTPS正向代理服务器 - 知乎
使用NGINX作为HTTPS正向代理服务器 - 知乎首发于程序员进修班切换模式写文章登录/注册使用NGINX作为HTTPS正向代理服务器阿里云云栖号已认证账号NGINX主要设计作为反向代理服务器,但随着NGINX的发展,它同样能作为正向代理的选项之一。正向代理本身并不复杂,而如何代理加密的HTTPS流量是正向代理需要解决的主要问题。本文将介绍利用NGINX来正向代理HTTPS流量两种方案,及其使用场景和主要问题。HTTP/HTTPS正向代理的分类简单介绍下正向代理的分类作为理解下文的背景知识:按客户端有无感知的分类普通代理:在客户端需要在浏览器中或者系统环境变量手动设置代理的地址和端口。如squid,在客户端指定squid服务器IP和端口3128。透明代理:客户端不需要做任何代理设置,“代理”这个角色对于客户端是透明的。如企业网络链路中的Web Gateway设备。按代理是否解密HTTPS的分类隧道代理 :也就是透传代理。代理服务器只是在TCP协议上透传HTTPS流量,对于其代理的流量的具体内容不解密不感知。客户端和其访问的目的服务器做直接TLS/SSL交互。本文中讨论的NGINX代理方式属于这种模式。中间人(MITM, Man-in-the-Middle)代理:代理服务器解密HTTPS流量,对客户端利用自签名证书完成TLS/SSL握手,对目的服务器端完成正常TLS交互。在客户端-代理-服务器的链路中建立两段TLS/SSL会话。如Charles,简单原理描述可以参考文章。注:这种情况客户端在TLS握手阶段实际上是拿到的代理服务器自己的自签名证书,证书链的验证默认不成功,需要在客户端信任代理自签证书的Root CA证书。所以过程中是客户端有感的。如果要做成无感的透明代理,需要向客户端推送自建的Root CA证书,在企业内部环境下是可实现的。为什么正向代理处理HTTPS流量需要特殊处理?作为反向代理时,代理服务器通常终结 (terminate) HTTPS加密流量,再转发给后端实例。HTTPS流量的加解密和认证过程发生在客户端和反向代理服务器之间。而作为正向代理在处理客户端发过来的流量时,HTTP加密封装在了TLS/SSL中,代理服务器无法看到客户端请求URL中想要访问的域名,如下图。所以代理HTTPS流量,相比于HTTP,需要做一些特殊处理。NGINX的解决方案根据前文中的分类方式,NGINX解决HTTPS代理的方式都属于透传(隧道)模式,即不解密不感知上层流量。具体的方式有如下7层和4层的两类解决方案。HTTP CONNECT隧道 (7层解决方案)历史背景早在1998年,也就是TLS还没有正式诞生的SSL时代,主导SSL协议的Netscape公司就提出了关于利用web代理来tunneling SSL流量的INTERNET-DRAFT。其核心思想就是利用HTTP CONNECT请求在客户端和代理之间建立一个HTTP CONNECT Tunnel,在CONNECT请求中需要指定客户端需要访问的目的主机和端口。Draft中的原图如下:整个过程可以参考HTTP权威指南中的图:客户端给代理服务器发送HTTP CONNECT请求。代理服务器利用HTTP CONNECT请求中的主机和端口与目的服务器建立TCP连接。代理服务器给客户端返回HTTP 200响应。客户端和代理服务器建立起HTTP CONNECT隧道,HTTPS流量到达代理服务器后,直接通过TCP透传给远端目的服务器。代理服务器的角色是透传HTTPS流量,并不需要解密HTTPS。NGINX ngx_http_proxy_connect_module模块NGINX作为反向代理服务器,官方一直没有支持HTTP CONNECT方法。但是基于NGINX的模块化、可扩展性好的特性,阿里的@chobits提供了ngx_http_proxy_connect_module模块,来支持HTTP CONNECT方法,从而让NGINX可以扩展为正向代理。环境搭建以CentOS 7的环境为例。安装对于新安装的环境,参考正常的安装步骤和安装这个模块的步骤(https://github.com/chobits/ngx_http_proxy_connect_module)),把对应版本的patch打上之后,在configure的时候加上参数--add-module=/path/to/ngx_http_proxy_connect_module,示例如下:./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-threads \
--add-module=/root/src/ngx_http_proxy_connect_module对于已经安装编译安装完的环境,需要加入以上模块,步骤如下:# 停止NGINX服务
# systemctl stop nginx
# 备份原执行文件
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 在源代码路径重新编译
# cd /usr/local/src/nginx-1.16.0
./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-threads \
--add-module=/root/src/ngx_http_proxy_connect_module
# make
# 不要make install
# 将新生成的可执行文件拷贝覆盖原来的nginx执行文件
# cp objs/nginx /usr/local/nginx/sbin/nginx
# /usr/bin/nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-threads --add-module=/root/src/ngx_http_proxy_connect_modulenginx.conf文件配置server {
listen 443;
# dns resolver used by forward proxying
resolver 114.114.114.114;
# forward proxy for CONNECT request
proxy_connect;
proxy_connect_allow 443;
proxy_connect_connect_timeout 10s;
proxy_connect_read_timeout 10s;
proxy_connect_send_timeout 10s;
# forward proxy for non-CONNECT request
location / {
proxy_pass http://$host;
proxy_set_header Host $host;
}
}使用场景7层需要通过HTTP CONNECT来建立隧道,属于客户端有感知的普通代理方式,需要在客户端手动配置HTTP(S)代理服务器IP和端口。在客户端用curl 加-x参数访问如下:# curl https://www.baidu.com -svo /dev/null -x 39.105.196.164:443
* About to connect() to proxy 39.105.196.164 port 443 (#0)
* Trying 39.105.196.164...
* Connected to 39.105.196.164 (39.105.196.164) port 443 (#0)
* Establish HTTP proxy tunnel to www.baidu.com:443
> CONNECT www.baidu.com:443 HTTP/1.1
> Host: www.baidu.com:443
> User-Agent: curl/7.29.0
> Proxy-Connection: Keep-Alive
>
< HTTP/1.1 200 Connection Established
< Proxy-agent: nginx
<
* Proxy replied OK to CONNECT request
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
...
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
...
{ [data not shown]
从上面-v参数打印出的细节,可以看到客户端先往代理服务器39.105.196.164建立了HTTP CONNECT隧道,代理回复HTTP/1.1 200 Connection Established后就开始交互TLS/SSL握手和流量了。NGINX stream (4层解决方案)既然是使用透传上层流量的方法,那可不可做成“4层代理”,对TCP/UDP以上的协议实现彻底的透传呢?答案是可以的。NGINX官方从1.9.0版本开始支持ngx_stream_core_module模块,模块默认不build,需要configure时加上--with-stream选项来开启。问题用NGINX stream在TCP层面上代理HTTPS流量肯定会遇到本文一开始提到的那个问题:代理服务器无法获取客户端想要访问的目的域名。因为在TCP的层面获取的信息仅限于IP和端口层面,没有任何机会拿到域名信息。要拿到目的域名,必须要有拆上层报文获取域名信息的能力,所以NGINX stream的方式不是完全严格意义上的4层代理,还是要略微借助些上层能力。ngx_stream_ssl_preread_module模块要在不解密的情况下拿到HTTPS流量访问的域名,只有利用TLS/SSL握手的第一个Client Hello报文中的扩展地址SNI (Server Name Indication)来获取。NGINX官方从1.11.5版本开始支持利用ngx_stream_ssl_preread_module模块来获得这个能力,模块主要用于获取Client Hello报文中的SNI和ALPN信息。对于4层正向代理来说,从Client Hello报文中提取SNI的能力是至关重要的,否则NGINX stream的解决方案无法成立。同时这也带来了一个限制,要求所有客户端都需要在TLS/SSL握手中带上SNI字段,否则NGINX stream代理完全没办法知道客户端需要访问的目的域名。环境搭建安装对于新安装的环境,参考正常的安装步骤,直接在configure的时候加上--with-stream,--with-stream_ssl_preread_module和--with-stream_ssl_module选项即可。示例如下:./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-threads \
--with-stream \
--with-stream_ssl_preread_module \
--with-stream_ssl_module对于已经安装编译安装完的环境,需要加入以上3个与stream相关的模块,步骤如下:# 停止NGINX服务
# systemctl stop nginx
# 备份原执行文件
# cp /usr/local/nginx/sbin/nginx /usr/local/nginx/sbin/nginx.bak
# 在源代码路径重新编译
# cd /usr/local/src/nginx-1.16.0
# ./configure \
--user=www \
--group=www \
--prefix=/usr/local/nginx \
--with-http_ssl_module \
--with-http_stub_status_module \
--with-http_realip_module \
--with-threads \
--with-stream \
--with-stream_ssl_preread_module \
--with-stream_ssl_module
# make
# 不要make install
# 将新生成的可执行文件拷贝覆盖原来的nginx执行文件
# cp objs/nginx /usr/local/nginx/sbin/nginx
# nginx -V
nginx version: nginx/1.16.0
built by gcc 4.8.5 20150623 (Red Hat 4.8.5-36) (GCC)
built with OpenSSL 1.0.2k-fips 26 Jan 2017
TLS SNI support enabled
configure arguments: --user=www --group=www --prefix=/usr/local/nginx --with-http_ssl_module --with-http_stub_status_module --with-http_realip_module --with-threads --with-stream --with-stream_ssl_preread_module --with-stream_ssl_modulenginx.conf文件配置NGINX stream与HTTP不同,需要在stream块中进行配置,但是指令参数与HTTP块都是类似的,主要配置部分如下:stream {
resolver 114.114.114.114;
server {
listen 443;
ssl_preread on;
proxy_connect_timeout 5s;
proxy_pass $ssl_preread_server_name:$server_port;
}
}使用场景对于4层正向代理,NGINX对上层流量基本上是透传,也不需要HTTP CONNECT来建立隧道。适合于透明代理的模式,比如将访问的域名利用DNS解定向到代理服务器。我们可以通过在客户端绑定/etc/hosts来模拟。在客户端:cat /etc/hosts
...
# 把域名www.baidu.com绑定到正向代理服务器39.105.196.164
39.105.196.164 www.baidu.com
# 正常利用curl来访问www.baidu.com即可。
# curl https://www.baidu.com -svo /dev/null
* About to connect() to www.baidu.com port 443 (#0)
* Trying 39.105.196.164...
* Connected to www.baidu.com (39.105.196.164) port 443 (#0)
* Initializing NSS with certpath: sql:/etc/pki/nssdb
* CAfile: /etc/pki/tls/certs/ca-bundle.crt
CApath: none
* SSL connection using TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
* Server certificate:
* subject: CN=baidu.com,O="Beijing Baidu Netcom Science Technology Co., Ltd",OU=service operation department,L=beijing,ST=beijing,C=CN
* start date: 5月 09 01:22:02 2019 GMT
* expire date: 6月 25 05:31:02 2020 GMT
* common name: baidu.com
* issuer: CN=GlobalSign Organization Validation CA - SHA256 - G2,O=GlobalSign nv-sa,C=BE
> GET / HTTP/1.1
> User-Agent: curl/7.29.0
> Host: www.baidu.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Accept-Ranges: bytes
< Cache-Control: private, no-cache, no-store, proxy-revalidate, no-transform
< Connection: Keep-Alive
< Content-Length: 2443
< Content-Type: text/html
< Date: Fri, 21 Jun 2019 05:46:07 GMT
< Etag: "5886041d-98b"
< Last-Modified: Mon, 23 Jan 2017 13:24:45 GMT
< Pragma: no-cache
< Server: bfe/1.0.8.18
< Set-Cookie: BDORZ=27315; max-age=86400; domain=.baidu.com; path=/
<
{ [data not shown]
* Connection #0 to host www.baidu.com left intact常见问题客户端手动设置代理导致访问不成功4层正向代理是透传上层HTTPS流量,不需要HTTP CONNECT来建立隧道,也就是说不需要客户端设置HTTP(S)代理。如果我们在客户端手动设置HTTP(s)代理是否能访问成功呢? 我们可以用curl -x来设置代理为这个正向服务器访问测试,看看结果:# curl https://www.baidu.com -svo /dev/null -x 39.105.196.164:443
* About to connect() to proxy 39.105.196.164 port 443 (#0)
* Trying 39.105.196.164...
* Connected to 39.105.196.164 (39.105.196.164) port 443 (#0)
* Establish HTTP proxy tunnel to www.baidu.com:443
> CONNECT www.baidu.com:443 HTTP/1.1
> Host: www.baidu.com:443
> User-Agent: curl/7.29.0
> Proxy-Connection: Keep-Alive
>
* Proxy CONNECT aborted
* Connection #0 to host 39.105.196.164 left intact可以看到客户端试图于正向NGINX前建立HTTP CONNECT tunnel,但是由于NGINX是透传,所以把CONNECT请求直接转发给了目的服务器。目的服务器不接受CONNECT方法,所以最终出现"Proxy CONNECT aborted",导致访问不成功。客户端没有带SNI导致访问不成功上文提到用NGINX stream做正向代理的关键因素之一是利用ngx_stream_ssl_preread_module提取出Client Hello中的SNI字段。如果客户端客户端不携带SNI字段,会造成代理服务器无法获知目的域名的情况,导致访问不成功。在透明代理模式下(用手动绑定hosts的方式模拟),我们可以在客户端用openssl来模拟:# openssl s_client -connect www.baidu.com:443 -msg
CONNECTED(00000003)
>>> TLS 1.2 [length 0005]
16 03 01 01 1c
>>> TLS 1.2 Handshake [length 011c], ClientHello
01 00 01 18 03 03 6b 2e 75 86 52 6c d5 a5 80 d7
a4 61 65 6d 72 53 33 fb 33 f0 43 a3 aa c2 4a e3
47 84 9f 69 8b d6 00 00 ac c0 30 c0 2c c0 28 c0
24 c0 14 c0 0a 00 a5 00 a3 00 a1 00 9f 00 6b 00
6a 00 69 00 68 00 39 00 38 00 37 00 36 00 88 00
87 00 86 00 85 c0 32 c0 2e c0 2a c0 26 c0 0f c0
05 00 9d 00 3d 00 35 00 84 c0 2f c0 2b c0 27 c0
23 c0 13 c0 09 00 a4 00 a2 00 a0 00 9e 00 67 00
40 00 3f 00 3e 00 33 00 32 00 31 00 30 00 9a 00
99 00 98 00 97 00 45 00 44 00 43 00 42 c0 31 c0
2d c0 29 c0 25 c0 0e c0 04 00 9c 00 3c 00 2f 00
96 00 41 c0 12 c0 08 00 16 00 13 00 10 00 0d c0
0d c0 03 00 0a 00 07 c0 11 c0 07 c0 0c c0 02 00
05 00 04 00 ff 01 00 00 43 00 0b 00 04 03 00 01
02 00 0a 00 0a 00 08 00 17 00 19 00 18 00 16 00
23 00 00 00 0d 00 20 00 1e 06 01 06 02 06 03 05
01 05 02 05 03 04 01 04 02 04 03 03 01 03 02 03
03 02 01 02 02 02 03 00 0f 00 01 01
140285606590352:error:140790E5:SSL routines:ssl23_write:ssl handshake failure:s23_lib.c:177:
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 289 bytes
...openssl s_client默认不带SNI,可以看到上面的请求在TLS/SSL握手阶段,发出Client Hello后就结束了。因为代理服务器不知道要把Client Hello往哪个目的域名转发。如果用openssl带servername参数来指定SNI,则可以正常访问成功,命令如下:# openssl s_client -connect www.baidu.com:443 -servername www.baidu.com总结本文总结了NGINX利用HTTP CONNECT隧道和NGINX stream两种方式做HTTPS正向代理的原理,环境搭建,使用场景和主要问题,希望给大家在做各种场景的正向代理时提供参考。本文作者:怀知原文链接 更多技术干货敬请关注云栖社区知乎机构号:阿里云云栖社区 - 知乎本文为云栖社区原创内容,未经允许不得转载。编辑于 2019-06-24 10:34Nginx服务器域名赞同 7714 条评论分享喜欢收藏申请转载文章被以下专栏收录程序员进修班汇集阿里技术精粹-yq.aliyun.
确保浏览安全:使用SSH实施加密SOCKS5-腾讯云开发者社区-腾讯云
安全:使用SSH实施加密SOCKS5-腾讯云开发者社区-腾讯云用户614136809确保浏览安全:使用SSH实施加密SOCKS5原创关注作者腾讯云开发者社区文档建议反馈控制台首页学习活动专区工具TVP最新优惠活动文章/答案/技术大牛搜索搜索关闭发布登录/注册首页学习活动专区工具TVP最新优惠活动返回腾讯云官网用户614136809首页学习活动专区工具TVP最新优惠活动返回腾讯云官网社区首页 >专栏 >确保浏览安全:使用SSH实施加密SOCKS5确保浏览安全:使用SSH实施加密SOCKS5原创用户614136809关注修改于 2023-09-04 13:52:504760修改于 2023-09-04 13:52:50举报文章被收录于专栏:爬虫0126爬虫0126 在互联网上保护隐私和安全至关重要。使用SSH(Secure Shell)创建加密的SOCKS5代理是一种简单且有效的方法,可以确保您的网络流量在传输过程中受到保护。本文将向您介绍如何使用SSH实施加密SOCKS5,以提高您的浏览安全。 1、准备工作 在开始之前,您需要准备以下内容: -一个SSH服务器:您可以使用自己的服务器,或者购买一个可靠的SSH服务提供商的服务。 -SSH客户端:大多数操作系统都自带SSH客户端。对于Windows用户,您可以使用PuTTY等第三方SSH客户端。 2、创建SSH隧道 首先,您需要创建一个SSH隧道,以便将网络流量从本地计算机路由到SSH服务器。请按照以下步骤操作: 1.打开SSH客户端。 2.输入SSH服务器的地址和端口。通常,SSH端口为22。 3.输入您的SSH用户名和密码。如果您使用的是密钥对进行身份验证,请提供私钥文件。 4.配置SSH隧道以创建SOCKS5代理。在大多数SSH客户端中,您可以在“隧道”或“端口转发”设置中完成此操作。将本地端口设置为一个未使用的端口(例如1080),并选择“动态”或“SOCKS5”作为转发类型。 5.保存设置并连接到SSH服务器。 3、配置浏览器或应用程序 创建SSH隧道后,您需要配置浏览器或应用程序以使用加密的SOCKS5代理。请按照以下步骤操作: 1.打开浏览器或应用程序的代理设置。 2.选择“手动配置代理”或类似选项。 3.输入SOCKS5代理服务器地址(通常为localhost或127.0.0.1)和您在第2步中设置的本地端口(例如1080)。 4.保存设置并重新启动浏览器或应用程序。 现在,您的网络流量将通过SSH隧道和加密的SOCKS5代理进行传输,从而提高您的浏览安全。 4、验证代理设置 为确保您的代理设置正确,请访问一个IP检测网站。如果显示的IP地址与您的SSH服务器的IP地址相同,那么您的代理设置已成功。 5、注意事项 虽然使用SSH实施加密SOCKS5可以提高浏览安全,但请注意以下事项: 不要将敏感信息发送到不受信任的SSH服务器。选择一个可靠的SSH服务提供商,或使用自己的服务器。 使用SSH隧道和SOCKS5代理可能会影响网络速度。如果速度过慢,请尝试更换SSH服务器或优化网络设置。 总之,通过使用SSH实施加密SOCKS5,您可以在浏览互联网时确保数据安全和隐私保护。遵循本文的步骤,您将能够轻松地设置和使用加密的SOCKS5代理,从而提高您的在线安全。原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。如有侵权,请联系 cloudcommunity@tencent.com 删除。爬虫原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。如有侵权,请联系 cloudcommunity@tencent.com 删除。爬虫评论登录后参与评论0 条评论热度最新登录 后参与评论推荐阅读LV.关注文章0获赞0相关产品与服务多因子身份认证多因子身份认证(Multi-factor Authentication Service,MFAS)的目的是建立一个多层次的防御体系,通过结合两种或三种认证因子(基于记忆的/基于持有物的/基于生物特征的认证因子)验证访问者的身份,使系统或资源更加安全。攻击者即使破解单一因子(如口令、人脸),应用的安全依然可以得到保障。产品介绍产品文档2024新春采购节领券社区专栏文章阅读清单互动问答技术沙龙技术视频团队主页腾讯云TI平台活动自媒体分享计划邀请作者入驻自荐上首页技术竞赛资源技术周刊社区标签开发者手册开发者实验室关于社区规范免责声明联系我们友情链接腾讯云开发者扫码关注腾讯云开发者领取腾讯云代金券热门产品域名注册云服务器区块链服务消息队列网络加速云数据库域名解析云存储视频直播热门推荐人脸识别腾讯会议企业云CDN加速视频通话图像分析MySQL 数据库SSL 证书语音识别更多推荐数据安全负载均衡短信文字识别云点播商标注册小程序开发网站监控数据迁移Copyright © 2013 - 2024 Tencent Cloud. All Rights Reserved. 腾讯云 版权所有 深圳市腾讯计算机系统有限公司 ICP备案/许可证号:粤B2-20090059 深公网安备号 44030502008569腾讯云计算(北京)有限责任公司 京ICP证150476号 | 京ICP备11018762号 | 京公网安备号11010802020287问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档Copyright © 2013 - 2024 Tencent Cloud.All Rights Reserved. 腾讯云 版权所有登录 后参与评论00常见加密代理姿势简单对比 – DUN.IM BLOG
常见加密代理姿势简单对比 – DUN.IM BLOG
Search
Search
Home
分享发现
常见加密代理姿势简单对比
7年 ago
7年 ago
常见加密代理姿势简单对比8 min
by
DUN
360views
目录性能数据安全性抗识别部署难度功能
目前我们常用的加密代理有协议有 HTTPS,SOCKS5-TLS 和 shadowsocks,此文从各个角度简单分析各个协议的优劣,以帮助各位选择合适的协议。
先简单说些背景知识,以上协议都是基于 TCP 的代理协议,代理协议(Proxy Procotol)与 vpn 不同,仅可被用于通过代理服务器转发 TCP 连接(shadowsocks 支持代理 UDP),而 VPN 可被用于 IP 层上的所有协议,如 TCP、UDP、ICMP 等。所以在使用代理时,ping 等 ICMP 应用是不可以被代理的。
然后简单解释一下什么是 TLS,TLS 又名 SSL,是针对数据流的安全传输协议。简单来说,一个 TCP 链接,把其中原本要传输的数据,按照 TLS 协议去进行加密传输,那么即可保证其中传输的数据安全。这个安全至少体现在以下几个方面:
数据被加密,任何可以截取到 TCP 数据流的人,无法解密出原始数据;
数据不可被篡改,一旦篡改会导致解密失败,连接断开;
服务器身份验证,基于 X509 的证书体系去确认目标服务器是否为真实的服务器。
明文的 HTTP 套上一层 TLS,也就变成了 HTTPS,SOCKS5 套上 TLS,就变成了 SOCKS5-TLS。TLS 协议是整个互联网安全的基石,几乎所有需要安全传输的地方都使用了 TLS,如银行、政府等等。
当被用作代理协议时,HTTP 层和 SOCKS5 层去进行具体的代理连接控制,如进行身份验证、告知需要转发的目标主机名等。所以不需要 TLS 他们也可以用作代理,只不过所有数据都是明文传输,不具备安全性。加上 TLS 后,由 TLS 去保证安全。而 shadowsocks 协议则融合了代理控制和安全保证。所以后文的很多对比实际上是 shadowsocks 和 TLS 的对比。
性能
TLS 协议由于承担了一项额外的功能,需要验证目标服务器身份,导致其握手时会比较复杂。
ping 的时间表示,一个 IP 层数据包从本地发出,到服务器再返回的来回时间,即 RTT(round-trip time)。
在发起代理连接时,首先我们需要进行 TCP 3 次握手,耗时为 1 个 RTT。(此处把最后的 ACK 直接并入后续的数据传输部分)。
然后进行 TLS 握手,因为服务端和客户端需要进行身份验证并协商协议版本号、加密方式等细节,第一次连接时需要 2 个 RTT。当然 TLS 的制定者也发现这太慢了,于是引入了 TLS Session Resumption,当服务端和客户端服务器连接过一次后,之后的连接可以直接复用先前的协商结果,使得 RTT 降低到 1 个 RTT。但这需要服务器和客户端的支持。(这是为什么 surge benchmark 时,对于 TLS 代理第一次的测试结果可能较慢的原因之一)
对于 HTTPS 协议,当 TLS 连接建立后,客户端通过 HTTP 层发起代理请求,服务端回应连接建立,此后进入正常的代理通讯环节,再耗费 1 个 RTT。
对于 SOCKS5-TLS 协议,当 TLS 连接建立后,如果没有验证的环节,那么需要再耗费 1 个 RTT,如果有验证(用户名密码),那么需要耗费 2 个 RTT。
而对于 shadowsocks,由于使用的是预共享密钥(pre-shared key, PSK),加密方式也是预先约定好的,所以不需要进行协商,只需要在 TCP 建立之后,再耗费一个 1 个 RTT 告知目标主机名。
总结如下:
HTTPS(TLS Session Resumption):3 个 RTT
SOCKS5-TLS 无验证:3 个 RTT
SOCKS5-TLS 有验证:4 个 RTT
shadowsocks:2 个 RTT
(注:最后一个 RTT 并不严谨,因为客户端可以在最后一个 RTT 产生响应前,直接开始后续传输。另外如果使用了 TCP Fast Open,可以看作 TCP 阶段 RTT 为 0。)
对于日常使用,最影响性能的就是握手速度,后续传输过程中的加解密性能,对于现代 CPU 来说基本都不会构成瓶颈。 shadowsocks 由于有 PSK 的特点,在 TCP 协议基础上已经达到极限,不可能有协议能再低于 2 个 RTT。
所以,同等网络环境下,shadowsocks 是明显快于 HTTPS 的。(体现在延迟上,而不是带宽)
另外,最新的 TLS 1.3 协议正力图解决这个问题,由于目前还处于草案阶段,各种工具链不完善,现在不太好评估实际效果。
数据安全性
(此处说的数据安全性,指的是加密后的流量是否会被截取并破解的问题。)
对于 TLS,作为个人用户,丝毫不用担心,TLS 协议如果真的不安全了,世界早就乱套了…
对于 shadowsocks,使用的加密方法也都是工业上成熟的算法,从数据安全性角度考虑也基本不用担心。
抗识别
这个问题有两个角度需要考虑:
观察一段数据流量,是否能判别这是一个代理协议的流量;
对于一个仅暴露出 TCP 端口的黑箱,能否判断这个端口提供了代理服务。
对于 shadowsocks 协议,在第一点上,观察者只能判定这个数据流为未知的协议。而第二点,shadowsocks 的几次修改,都是因为在这出了问题,目前最新的 AEAD 加密方式,应该已经解决了这个问题,但还需要时间去检验。
对于 HTTPS 协议,在第一点上,观察者是无法去区分这是一个代理还是一个标准的 HTTPS 网页访问的(当访问 HTTP 页面时,如果访问 HTTPS 会使得流量模型出现特征)。而第二点,在妥善配置的情况下,也是完全无法判别。
但在实践中,大部分 HTTPS 代理服务器为了兼容浏览器行为,在直接被当做 HTTPS Web 服务器访问时,会返回代理错误页或者 407 Proxy authentication required,直接暴露了自己是一个代理,如果要抗击第二点,可以将服务端的行为修改为,如果请求的 Header 中,不包含一个有效的 Auth,那么就返回一个标准的 200 页面,这样从理论上杜绝了被嗅探的可能。
总结一下,最新的 shadowsocks 已经能满足抗识别的两个要求,但是观察者得到结论是“未知协议”。而使用 HTTPS,观察者无法判断这是一个 HTTPS 代理还是 HTTPS Web 服务器,这是更优的结果。
Hiding true identities inside a seemingly ordinary. — Person of Interest S03E23
部署难度
HTTPS 协议使用广泛,有众多成熟的工业级工具,如 squid,haproxy,nghttp2 等等,但是由于 HTTPS 协议本身比较复杂,配置起来参数众多,有很多性能相关参数需要自己调优,所以一般用户配置起来会有难度。
shadowsocks 经过多年发展,目前也已经有众多的软件支持,但是对于不同特性的支持度不一。由于参数简单,部署配置起来极其方便。
功能
shadowsocks 目前还存在一些功能上的缺陷:
shadowsocks 没有设计错误回报机制,对于以下错误,客户端看到的行为都是服务器主动断开 TCP 连接:
密钥或者加密方法错误
目标主机名 dns 解析失败
目标主机不可达
目标主机拒绝连接
这使得客户端没办法根据不同的错误采取进一步的动作,只能简单的向用户返回 Socket closed by remote 错误。
2. shadowsocks 没有考虑用户鉴别,使得服务端 ACL 或者流量统计等功能无法实现,主流的 workaround 是通过不同的端口号去识别不同的用户,但这极其浪费资源且很不优雅。
3. 部分 ISP 对于非 HTTP 和 TLS 的未知流量,会进行降速限制,这个可以通过配置 obfs 解决。
Post PaginationPrevious PostPreviousNext PostNext
DNS, Shadowsocks, Surge, VPN, 代理, 发现, 安全, 工具, 应用, 数据, 浏览器, 网络, 资源, 软件, 隐私, 验证Like it? Share with your friends!
0
Posted by
DUN
Previous Post
如何观看 Netfl...
by
DUN
Next Post
近期部分地区网络可靠...
by
DUN
更多文章 分享发现
Trending376
分享发现, 资源共享2024 最好的 YouTube 替代方案对比和汇总
Hot235
业界信息, 分享发现, 官方动态为什么使用匿名服务,解析不同地区用户的偏好
184
分享发现, 奇技淫巧关于虚拟机 VirtualBox 内的 Windows 上传速度很慢的问题
Popular359
分享发现, 奇技淫巧Google Bard 免费升级 Gemini Pro 好用吗?全面实测对比 ChatGPT 生成图片、分析长文、内容查证等
Popular182
分享发现, 坏时代, 奇技淫巧远离不善
Hot375
分享发现Spotube – 开源免费、全平台原生的 Spotify 第三方客户端,畅享音乐无需 Premium 会员
相关文章
Trending376
分享发现, 资源共享2024 最好的 YouTube 替代方案对比和汇总
Hot103
资源共享Dewatermark – 简单好用 AI 免费快速清除图片水印
Hot154
资源共享Tengr AI 教程 – 免费 AI 图片生成,19 种风格,支持已有图片转 AI 图像
Hot235
业界信息, 分享发现, 官方动态为什么使用匿名服务,解析不同地区用户的偏好
Hot307
奇技淫巧小红书上卖了几万块的 iPhone 快捷指令和多维表格模板,懒人无痛自动记账神器
Hot165
资源共享AnyDownloader – 免费在线音视频下载,支持 40+ 平台、多种格式
Search for:
DUN.IM STORE
免费服务
官方动态
分享发现
奇技淫巧
坏时代
资源共享
业界信息
我要分享Share your story with us! +1
利用 Googl...
利用 Googl...
Dispatch...
Dispatch...
主打安全分享的网...
主打安全分享的网...
为何简体中文互联...
为何简体中文互联...
西药治病,中药卖...
西药治病,中药卖...
简单配置 Sur...
简单配置 Sur...
挑战消失 — 如...
挑战消失 — 如...
OpenTrac...
OpenTrac...
修改 iOS /...
修改 iOS /...
隐私、便利、体验...
隐私、便利、体验...
会员平台
关于我们
使用条款
隐私声明
交流社区
©
2024 All Rights Reserved
登 录
Connect with:
Remember me
log in
Forgot password?
Don't have an account?
注 册
忘记密码
reset
Back to
登 录
注 册
Connect with:
I have read and accepted the terms of use and the privacy policy *
sign up
Back to
登 录
Choose A Format
Story
Formatted Text with Embeds and Visuals
List
The Classic Internet Listicles
Countdown
The Classic Internet Countdowns
Open List
Submit your own item and vote up for the best submission
Ranked List
Upvote or downvote to decide the best list item
Video
Youtube and Vimeo Embeds