「SCIENTIFIC-BROWSING」- 科学上网 | Scientific Browsing

认识

—— 该部分将介绍科学上网是什么、其的由来、大致的发展过程,以帮助我们快速形成针对`科学上网`技术的基本认识。

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 模式时,

  1. 浏览器请求 DNS 解析,
  2. DNS 解析请求被 Clash Client 截获,Clash Client 向外部发送 DNS 解析请求,获得 IP Address 以后,返回给浏览器,
  3. 浏览器根据 IP 发起连接,请求被 Clash Client 拦截,Clash Client 根据 IP 在其映射表中反查出域名,再用 Rules 判断域名是否走代理,
  4. 如果经过代理转发,代理服务器再次解析 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 模式时,其大致工作过程如下:

  1. 浏览器发起 DNS 解析请求,
  2. dns 解析请求被 Clash Client 截获,Clash Client 立刻返回一个 Fake IP 给浏览器,
  3. 浏览器向 Fake IP 发起网络连接,
  4. 请求被 Clash Client 拦截,Clash Client 根据 Fake IP 在自己的映射表中反查出域名,Clash Client 根据域名及 rules 判断是否走代理,
  5. 如果流量经过代理 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

网络加速,不管用什么技术,什么方法,什么协议,本质上都在在挖隧道:

  1. 挖条加密隧道,让流量通过加密隧道。只要能挖出加密隧道,就能用来网络加速;
  2. 然后在加密隧道中运行代理协议(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 类似,协议特征过于明显,很容易被识别。我们部署该类型的代理,而后很快便被屏蔽。

实现:HTTP(S) Proxy with Squid

Dynamic Port Forwarding | SSH, …

后来我们开始使用 SSH 进行动态端口转发,以实现网络加速。

缺点:但是报文具有某些特征,依旧容易被识别。我们部署该类型的代理,而后很快便被屏蔽。

SOCKS | Shadowsocks, ShadowsocksR, …

后来我们开始使用 SOCKS 协议,使用 Shadowsocks 实现,坚持很久时间。

缺点:但是后来服务器被封禁了,大概是因为协议的原因:虽然流量是加密的,但是连接初始化的报文不是加密的,还是有很明显的协议特征。而且客户端是能够发送虚假的握手报文,只要服务端有“合理的回应”,就能证明服务器是 SOCKS 网络加速服务。

经测试 shadowsocks 协议已经完全被识别

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