认识
—— 该部分将介绍科学上网是什么、其的由来、大致的发展过程,以帮助我们快速形成针对`科学上网`技术的基本认识。
Internet censorship circumvention, also referred to as going over the wall (Chinese: 翻墙; pinyin: fān qiáng) or scientific browsing (Chinese: 科学上网; pinyin: kēxué shàngwǎng) in China, is the use of various methods and tools to bypass internet censorship.
我们需要上网,我们需要阅读官方文档,我们需要学习跟多的知识,我们上网只为学习计算机技术,我们的浏览历史里只有 Stack Overflow、GitHub 等等技术站点,仅此而已。我们只是普通 IT 从业人员,想到国外查些官方文档,增长技术水平。该笔记将整理:与代理服务器、网络加速、上网有关的内容,以及相关问题的处理方法。
组成
—— 该部分将介绍科学上网技术的组成,例如`软件架构`、`交互原理`等等,以帮助我们形成针对`科学上网`服务的内部原理。
针对科学上网,其本质仍旧是代理技术、VPN 技术,但是为了规避审查,其还引入很多其他技术。
架构体系
Client ⇒ Proxy Client ⇒ (Encrypted Traffice) ⇒ Firewall ⇒ (Encrypted Traffice) ⇒ Proxy Server ⇒ Destination Server
Redir Host
当我们使用 REDIR-HOST 模式时,
- 浏览器请求 DNS 解析,
- DNS 解析请求被 Clash Client 截获,Clash Client 向外部发送 DNS 解析请求,获得 IP Address 以后,返回给浏览器,
- 浏览器根据 IP 发起连接,请求被 Clash Client 拦截,Clash Client 根据 IP 在其映射表中反查出域名,再用 Rules 判断域名是否走代理,
- 如果经过代理转发,代理服务器再次解析 dns 并完成后续请求。
根据 ip 在其映射表中反查出域名,进而判断流量是否经过代理,所以即便 DNS 被污染也无所谓,毕竟不会请求该 IP Address。
缺点
- 同个 IP Address 会被多个域名使用,进而影响 IP 反查域名功能。
Fake IP
该 Fake IP 概念出自 RFC3089,早在 2001 年就被提出来。其为实现 Proxy Client 分流功能,以避免所有流量都经过 Proxy Server 转发。
- 针对常规网站,无需经过代理,直接转发到 Destination Server 端;
- 针对特殊网站,需要经过 Proxy Client 转发给 Proxy Server 再发往 Destination Server 端;
当使用 Fake-IP 模式时,其大致工作过程如下:
- 浏览器发起 DNS 解析请求,
- dns 解析请求被 Clash Client 截获,Clash Client 立刻返回一个 Fake IP 给浏览器,
- 浏览器向 Fake IP 发起网络连接,
- 请求被 Clash Client 拦截,Clash Client 根据 Fake IP 在自己的映射表中反查出域名,Clash Client 根据域名及 rules 判断是否走代理,
- 如果流量经过代理 Clahs Server 处理,则 Clash Server 正常 dns 解析,并完成后续工作。
简而言之,该技术并不会触发“真正”的 DNS 解析,进而避免 DNS 污染。间接地通过域名来判断是否要由 Proxy Server 处理。
优点:
- 总之 Fake-IP 更快,因为少一次 clash 解析 dns。
缺点:
- 返回 Fake IP 会污染本地 DNS 缓存。当代理断开后,DNS 缓存失效前,设备无法访问网络。
构建
—— 该部分将记录获得科学上网服务的方法。我们更加关注于“通过工具服务实现科学上网”,而非“从零构建科学上网的服务”。
科学上网客户端大全 | https://clashforwindows.org/all-proxy-client/
开源软件
Project X (Xray)
XTLS/Xray-core: Xray, Penetrates Everything. …
vaxilu/x-ui: 支持多协议多用户的 xray 面板
Clash |
是个支持多种协议的客户端,通过配置规则将流量转发到不同的远程节点。
Project V (V2Ray) | https://www.v2ray.com/en/
包含“用于构建特定网络环境工具”的项目(挖加密隧道)。
https://github.com/v2ray/v2ray-core
V2Ray 完全使用教程
基于 v2ray 实现科学上网
Streisand | StreisandEffect/streisand
它实际是代理应用封装,可以用于快速部署 OpenVPN、Shadowsocks 等等服务。
php-proxy-app,Athlon1600/php-proxy-app,
Web Proxy Application built on php-proxy library ready to be installed on your server
nurdism/neko: A self hosted virtual browser (rabb.it clone) that runs in docker.
这个项目也是不错的……
Tor Project | Anonymity Online
Homepage: https://www.torproject.org
商业服务
DuangCloud | 一家专业的老牌优质 SS 机场
原域名已被墙污染,需使用全局代理才可以访问
最新网址为
https://portal.dc-site5.com
防失联请收藏域名:
https://duangweb.com
点我加入 Telegram 群组:
https://t.me/duangcloud%EF%BC%88%E5%8A%A0%E7%BE%A4%E8%BE%93%E9%AA%8C%E8%AF%81%E7%A0%81%EF%BC%89
点我加入 Telegram 频道:
https://t.me/duangcloud_channel
定制客户端也具有防失联功能,建议下载
XSUS | 极致简洁,互通世界
ExpressVPN – A Fast and Secure VPN
VPN.AC – Secure, Fast, Reliable VPN Service
PandaVPN – 全球最快&最具隐私安全的 VPN
Curlie – Computers: Internet: Proxying and Filtering: Hosted Proxy Services: Free: Proxy Lists
https://curlie.org/Computers/Internet/Proxying_and_Filtering/Hosted_Proxy_Services/Free/Proxy_Lists
Shadowsocks.com | https://portal.shadowsocks.au/aff.php
自建隧道 | Secure Tunnels
网络加速,不管用什么技术,什么方法,什么协议,本质上都在在挖隧道:
- 挖条加密隧道,让流量通过加密隧道。只要能挖出加密隧道,就能用来网络加速;
- 然后在加密隧道中运行代理协议(HTTP、SOCKS)等等协议便能实现网络加速;
TLS + WebSocket,我们还未使用过该工具。
Stunnel + Squid,企业级翻墙服务部署文档
其他工具
系统级 Shadowsocks 代理。Shadowsocks:美国云主机,VPS,HHVPS,国外云主机购买、SS 搭建。
Glype 项目
HTTP & HTTPS:代理搭建。
lantern 代理;
// ONHD Proxy:解决 Linux 系统的全局代理问题。
方案
VPN | OpenVPN, L2TP/IPSec, …
这是我们最早听说的方法。现在(05/18/2021)提到网络加速已经很少用 VPN 这个术语,因为 VPN 多指虚拟私有局域网。
缺点:作为网络加速协议,协议特征过于明显,很容易被识别,被屏蔽。
HTTP(s) PROXY | Squid, …
这也是早期为网络加速而广泛使用的协议。最初为了解决问题,我们使用 HTTP(s) 实现网络加速。
缺点:作为网络加速协议,与 VPN 类似,协议特征过于明显,很容易被识别。我们部署该类型的代理,而后很快便被屏蔽。
Dynamic Port Forwarding | SSH, …
后来我们开始使用 SSH 进行动态端口转发,以实现网络加速。
缺点:但是报文具有某些特征,依旧容易被识别。我们部署该类型的代理,而后很快便被屏蔽。
SOCKS | Shadowsocks, ShadowsocksR, …
后来我们开始使用 SOCKS 协议,使用 Shadowsocks 实现,坚持很久时间。
缺点:但是后来服务器被封禁了,大概是因为协议的原因:虽然流量是加密的,但是连接初始化的报文不是加密的,还是有很明显的协议特征。而且客户端是能够发送虚假的握手报文,只要服务端有“合理的回应”,就能证明服务器是 SOCKS 网络加速服务。
Self-hosed Tunnel | HTTP over TCP Tunnel
kcptun + Squid,通过 kcptun 服务来提供加密隧道,通过 Squid 来提供 HTTP 代理。
改进
使用 cloudflare 加速你的网站隐藏你的网站 IP
使用 CDN 啊,CDN 提供 IP 地址,但是要使用国外的 CDN 服务器,这样封的也是 CDN 的 IP 地址。
参考
What is a transparent proxy?
Configure SQUID transparent proxy with basic auth
How to properly configure squid as transparent proxy with authentication
How to resolve the DNS locally when there is a proxy configured?
Wikipedia/Proxy server
关于 Clash 科学上网的最佳实践 ⇒ Jie Li’s Blog
【教程三】软路由科学上网,openclash,openwrt IPv6配置 ⇒ 阿修的博客
浅谈在代理环境中的 DNS 解析行为 ⇒ Sukka’s Blog