# 冲浪第一步 - 隐藏IP 隐藏 IP 地址基本上有两种方法可选。一种是使用代理服务器,另一种是使用虚拟专用网。 ## 代理服务器 代理服务器(Proxy Server)是一种位于客户端和目标服务器之间的中间服务器,其主要功能是转发客户端请求并代表客户端与目标服务器通信。一般来说代理服务器分为两种,HTTP/HTTPS代理(下面简称HTTP代理)和SOCKET代理(本文以socks5举例,下面称SOCKS 代理)。HTTP代理工作在应用层,只为HTTP和HTTPS提供代理;SOCKS 代理工作在传输层,可以转发TCP和UDP代理。 下面是两种代理的区别 | 特性 | HTTP 代理 | SOCKS 代理 | | ---- | ---------------------------- | --------------------------- | | 工作层次 | 应用层 (HTTP/HTTPS) | 传输层/会话层 (TCP/UDP) | | 协议支持 | HTTP, HTTPS | 所有 TCP 和 UDP 协议 | | 透明度 | 可以修改 HTTP 响应 | 通常不修改应用层数据 | | 安全性 | 取决于配置,HTTPS 更好 | SOCKS5 支持认证和加密 | | 缓存 | 可缓存 | 不可缓存 | | 应用 | Web 浏览器, 访问 HTTP/HTTPS 网站的应用 | 任何需要连接 Internet 的应用,尤其是其他协议 | ⚠️ICMP协议不能使用代理服务器,ICMP 消息直接由 IP 协议承载,**没有 TCP 或 UDP 头部**。 换句话说,ICMP 本身不是建立在 TCP 或 UDP 之上的,所以不能使用以上两种代理服务器。 ### 代理服务器的设置 #### Windows 对于Windows来说,在设置中搜索"代理",即可设置代理服务器。 #### Linux 对于gnome和kde桌面,都可以和Windows一样在设置中设置代理,如果要单独对终端设置代理,可以参考以下命令 ```bash export http_proxy=http://PROXYHOST:PROXYPORT export https_proxy=http://PROXYHOST:PROXYPORT export socks_proxy=socks5://PROXYHOST:PROXYPORT export all_proxy=socks5://PROXYHOST:PROXYPORT export http_proxy=http://USERNAME:PASSWORD@PROXYHOST:PROXYPORT # 使用 socks proxy (使用本地 DNS) export http_proxy=socks5://PROXYHOST:PROXYPORT # 使用 socks proxy (使用远程 DNS) export http_proxy=socks5h://PROXYHOST:PROXYPORT ``` http_proxy等变量大小写不敏感,偷懒可以只设置all_proxy #### MacOS macOS可以在对应的网络连接中设置代理,终端代理的设置参考Linux #### 一些常用软件的设置 某些软件会提供代理服务器的设置,不需要在系统中设置也可以对流量进行代理,例如Firefox。 ![[Pasted image 20250514170546.png]] ## 虚拟专用网 虚拟专用网 (VPN) 是另一种隐藏 IP 地址并保护在线活动的方法。与代理服务器不同,VPN 在您的设备和 VPN 服务器之间创建了一个安全的、加密的隧道,所有通过该隧道传输的数据都会被加密。 ### VPN 的工作原理 一般来说VPN软件会虚拟化出一张网卡,将指定的流量转发到这张网卡上,这张网卡上的流量由VPN软件加密并传输到VPN服务器上,并从VPN服务器流出到公网。 ⚠️VPN的方式下,ICMP报文可以被代理。 ### VPN 协议 VPN 使用不同的协议来建立和维护安全连接。常见的 VPN 协议包括: - **OpenVPN:** 一种开源协议,被广泛认为是最安全和可靠的 VPN 协议之一。 - **IPsec/IKEv2:** 一种快速且安全的协议,通常用于移动设备。 - **WireGuard:** 一种新兴的 VPN 协议,建立在UDP上,以其高性能和简单性而闻名。 - **L2TP/IPsec:** 一种较旧的协议,安全性不如 OpenVPN 或 IKEv2。 - **PPTP:** 一种非常过时的协议,安全性极低,应避免使用。 # 冲浪第二步 - 谨防DNS泄露 DNS 泄漏可能发生在隐藏IP之后,由于DNS请求没有被转发到代理/VPN服务器(下面简称远程服务器),导致流量在远程服务器仍然发送到本地DNS解析的IP上。例如现在某个全球服务A,远程服务器B处于国家C,你所在地域在国家D,本地解析A的IP处于国家D,当你通过远程服务器访问A时,你的流量从B发出,最终到达国家D,这会让服务A感知到服务器B的IP存在异常流量,因为在设计上服务器B的流量应该发送到国家C所处的IP。 ## 防止DNS ### 使用代理服务器 在使用代理服务器的情况下,只有SOCKS代理可以代理dns请求,只要设置为`socks5h://PROXYHOST:PROXYPORT`即可。 ### 使用VPN 在使用VPN的情况下,需要指定系统的DNS服务器,并设置其路由转发到对应的网络中。 # 冲浪第三步 - 屏蔽WebRTC WebRTC (Web Real-Time Communication) 是一种**开源项目和技术标准**,它允许浏览器和移动应用程序通过简单的 API 实现**实时音视频通信和数据传输**,无需安装任何插件或第三方软件。WebRTC对隐私浏览的影响主要体现在P2P连接上, WebRTC 尽可能地建立设备之间的直接 P2P 连接,减少通信延迟,提高效率,**同时会让远程服务器获取到你的真正IP**。 ## 屏蔽WEbRTC 以Firefox为例,使用[Disable WebRTC](https://addons.mozilla.org/en-US/firefox/addon/happy-bonobo-disable-webrtc/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search)插件禁止浏览器的WebRTC连接。 # 冲浪第四步 - 修改浏览器UserAgent 对于HTTP类型的服务,服务器可以在网关处轻易的获取到流量中的UserAgent,一般其中会包含当前浏览器的语言和操作系统的语言等信息,这些信息很容易让前面三步的工作前功尽弃。例如某网站拒绝对某个区域C提供服务,区域C使用语言C,当浏览器访问此网站时,网站可以根据UserAgent中的浏览器语言和操作系统语言拒绝并标记这个IP的访问流量。 ## 修改UserAgent 以Firefox为例,可以使用[# User-Agent Switcher and Manager](https://addons.mozilla.org/en-US/firefox/addon/user-agent-string-switcher/?utm_source=addons.mozilla.org&utm_medium=referral&utm_content=search)插件修改UserAgent。