透明代理实质上类似一种拦截,客户端以为自己访问的是自己要访问的服务器,实际上这次访问早已被所谓的透明代理接管了,透明代理主机将用户的访问重定向到本机的应用层代理进程,从用户发出的http协议头中得到用户需要访问的地址信息,然后代理用户去访问或者按照本地的配置给予策略化的服务。一种合理的模式是vpn中的应用,为了便于管理,一般用户需要本公司的代理服务器提供互联网服务,可是如果一个用户在出差中使用公司配给的涉密笔记本电脑,他必然需要通过vpn连接到公司网络,然后再通过公司的代理服务器上网,在这种模式中,我用一种简单的方式来阐述思想,那就是暂且不考虑vpn的细节,也就是暂且不考虑网络层的事情,而集中于应用层,毕竟,代理进程都工作在应用层,我使用stunnel(在linux下先apt-get或rpm或者make install,然后man或者info一下)作为用户直接连接的代理服务器客户端,使用另一个stuunel作为服务器,两个stuunel之间通过SSL协议连接,无疑这个连接是安全的。这个连接不是长连接,而是只有在stuunel接收到用户的访问请求时才会初始化一个ssl连接到stunnel服务器,用户的访问过程通过这个ssl连接到达stunnel服务器,进而被转发到真实的服务器。这里面有几个细节,stunnel客户端如何知道用户要访问什么地址,stunnel客户端又是怎样将这个信息传给服务器,然后让服务器区代理用户访问真实地址。
如果stunnel客户端不能将用户要访问的真实地址告知stunnel服务器或者stunnel服务器不处理它,那么这只能部分实现一个反向代理,也就是事先配置,所以必然需要将用户的真实欲访问地址传达给服务器。第一个细节的解答,那就是首先将所有的访问重定向到本机(使用iptables),然后解析用户发起的http协议的头,得到原始地址信息,如果不是http协议而是普通的tcp应用或者udp应用,由于地址信息并不一定保存在协议头中,因此必然需要用另一种方式得到原始地址信息,这就是ioctl调用,linux提供了一个netfilter命令,可以得到重定向之前的原始地址信息,包括ip地址和端口,现在无论是哪种应用,http也好,普通的tcp也好,都得到了原始地址信息,由于我们的代理服务器不在本地而在远端,所以现在解决第二个问题,之前很长时间,我们必须自己写协议来把这个信息传输给服务器,现在,不需要那么麻烦了,在ssl协议的情况下,新更新的ssl协议规范在RFC5246中介绍,client发起的hello消息中多了一个extension字段,也就是client可以在hello的时候就把一些附件信息传给server,于是完全可以在这个hello消息中将client得到的原始地址信息传输给server,这样在client和server的ssl连接初始化好了之后,server就可以使用从client-hello中得到的原始地址发起一个到真实地址的连接,从而实现一个透明代理。
分享到:
相关推荐
【标题】:“Nginx正向HTTPS代理模块(透明代理)” 在Web服务器领域,Nginx以其高效、稳定和灵活的配置而受到广大开发者喜爱。然而,原生的Nginx并不支持HTTPS的正向代理,即不能直接将客户端的HTTPS请求转发到目标...
### squid+iptables透明代理配置详解 #### 一、概述 本文档旨在详细介绍如何配置一个结合squid和iptables的透明代理服务器。此配置适用于Linux环境下的内部网络管理需求,特别是对于那些希望实现不同用户级别的...
启用 SSL/TLS 功能后,Squid 可以作为透明代理,允许客户端通过安全连接访问互联网,同时仍能缓存和优化流量。 配置 Squid 时,你需要编辑其主配置文件(通常为 `squid.conf`),设置监听端口、缓存大小、访问控制...
Socks5协议的主要优点在于它的透明性,即客户端不必关心目标服务器的类型,只需知道代理服务器的地址和端口。Socks5协议支持多种认证方式,包括无认证、用户名/密码认证等。此外,它还引入了IPv6的支持和UDP(User ...
5. **安全性**:考虑安全因素,如加密传输、防止中间人攻击,可能需要结合SSL/TLS协议。 6. **性能优化**:如使用线程池来管理和复用线程,减少线程创建和销毁的开销。 总的来说,理解SOCKS5协议及其在C++中的实现...
本文将深入探讨如何通过Nginx配置HTTPS服务器,实现443端口的反向代理,以及与SSL连接相关的域名访问应用服务器的设置。 首先,我们需要了解HTTPS的基本原理。HTTPS是HTTP协议的安全版本,它通过添加SSL(Secure ...
与HTTP代理不同,Socks5协议不关心应用层的具体协议,如FTP、HTTP或SMTP等,因此具有更广泛的适用性。Socks5支持多种认证方式,并提供TCP连接,使用户能绕过特定的网络限制,提高匿名性和安全性。 TLS(Transport ...
SSL协议建⽴在可靠的TCP传输协议之上,并且与上层协议⽆关,各种应⽤层 协议(如:HTTP/FTP/TELNET等)能通过SSL协议进⾏透明传输。 SSL协议提供的安全连接具有以下3个基本特点: 1. 连接是保密的:对于每个连接都有...
然后,客户端与目标服务器之间的所有数据(包括SSL握手和应用层数据)都将通过代理服务器透明转发,而代理服务器无法解密这些数据。 身份验证通常在初始的HTTP报文中进行,即使对于HTTPS代理。 **SOCKS代理** ...
2. **透明代理**:用户无需知道代理的存在,网络流量自动通过代理服务器。 3. **匿名代理**:隐藏用户的IP地址,但可能会暴露使用代理的事实。 4. **高匿名代理**:既隐藏用户IP,又不透露正在使用代理的信息。 ...
Squid支持多种协议,包括 HTTP、FTP、GOPHER、SSL 和 WAIS,但不支持 POP3 和 NNTP。 Squid 的配置文件是 /etc/squid/squid.conf,主要配置项包括: 1. http_port:指定代理服务器的端口号。 2. cache_mem:指定...
7. **透明代理**:透明代理是指客户端无需修改网络设置即可使用代理,Squid 可以配置为透明代理,实现对网络流量的无感知监控和控制。 8. **反向代理**:Squid 也可用作反向代理,将客户端请求转发到特定的后端...
3. **SSL Session ID会话保持**:利用SSL协议的Session ID来保持会话,适用于处理SSL加密的连接,确保用户在SSL会话期间始终与同一服务器交互。 4. **I-Rules会话保持**:通过自定义的iRule脚本,可以基于更复杂的...
透明代理就是客户端不知道有代理服务器的存在,当然也不需要进行任何与代理有关的设置,从而大大方便了系统管理员。反向代理也就是通常所说的 WEB 服务器加速,它是一种通过在繁忙的 WEB 服务器和 Internet 之间增加...
在网络安全领域,HTTPS(HyperText Transfer Protocol Secure)是一种用于安全通信的网络协议,它通过SSL/TLS协议加密数据,确保用户与服务器之间的信息传输不被窃取或篡改。HTTPS劫持代理和数据包劫持代理是两种...
开发者可能需要处理数据流的透明代理,因为这些网络可能通过代理服务器转发HTTPS请求。 4. **代码实现**:在J2ME中创建HTTPS连接的典型步骤包括: - 初始化SSLContext:使用KeyManager和TrustManager初始化SSL...
SSL(Secure Sockets Layer)和它的后续版本 TLS(Transport Layer Security)是网络通信中广泛使用的加密协议,用于保护数据传输的安全性。它们确保了用户与服务器之间的通信不被窃听或篡改,通常用于网上银行、...
- **透明代理**(五级匿名代理):这种类型的代理不仅会修改用户的请求头信息,还会传递用户的实际IP地址,因此使用透明代理时,用户的IP地址仍然会被目标网站获取。 ##### 2. 按用途分类 - **HTTP代理**(端口...
- 涉及到不同部署模式的配置,如透明代理、透明检测、在线模式和旁路监听,具体步骤包括设置接口、策略、规则等,以适应不同环境和安全需求。 7. **常见问题解答**: - 针对FortiWeb的部署、配置、功能启用、性能...