前言

由于误入外贸歧途的缘故需要与世界接轨,不得不经常出去搞事情:比如查查 学习资料,调研 客户背景,以及捣鼓 有的没的,已养成折腾的习惯。在自备技术丰衣足食的路上越走越远,感慨一下:工欲善其事必先利其器,授人以鱼不如授人以渔!

网上有首打油诗挺有趣的:

  • 少壮不努力,
  • 一生在内地;
  • 英语学不牢,
  • 世代在天朝。

关于 番羽(fan)土啬(qiang)的相关知识,推荐电丸科技AK的【硬核FQ/科学上网】系列视频,了解相关原理,你会受益匪浅的!本文并不会重复造轮子般地复述如何搭建FQ线路,而是汇总下自己这些年零零碎碎对于科学上网的认知,记录关键的知识点,方便以后回顾和查阅~

一、基础

万物之源:GFW

摘自维基百科:Great Firewall,中国国家防火墙,对境内的互联网所创建的审查系统(包括相关行政审查系统)的统称。此系统起步于1998年,其英文名称得自于2002年5月17日Charles R. Smith所写的一篇关于中国网络审查的文章《The Great Firewall of China》,取与Great Wall(长城)相谐的效果,简写为Great Firewall,缩写GFW。随着使用的拓广,中文“墙”和英文“GFW”有时也被用作动词,中国网友所说的“被Q”即指网站内容被防火长城所屏蔽或者指服务器的通讯被封阻,“FQ”也被引申为突破网络审查浏览中国大陆境外被屏蔽的网站或使用服务的行为。

互相博弈:访问服务的原理 & 加密协议的发展

一、最开始简单而直接:我们的本地电脑/浏览器(客户端)发送访问请求到远程电脑/那些不关机的电脑们(服务端),它们就会响应请求并返回相关内容给我们。

二、后来 GFW 出现在客户端和服务端的中间,依法允许或禁止用户与远程服务器之间的互动:

当时大神们的对策是通过 SSH TUNNEL(加密隧道)来应对:

  • 1)首先用户和境外服务器基于 ssh(加密协议)建立起一条通讯通道;
  • 2)-3)用户通过建立起的这条加密的通讯隧道,把访问请求通过 ssh server(所谓的代理服务器)向真实的远程服务器发起请求;
  • 4-5)这样远程服务就可以响应用户请求并把相关内容通过 ssh server(代理)原路返回给用户。

三、当 ssh 协议 和 VPN 协议相继不好用之后,出现了专为 FQ 而生的 shadowsocks:它将原来 ssh 创建的 Socks5 协议拆开成 server 端和 client 端,基本上和利用 ssh tunnel 大致类似,而且多了加密和解密数据的步骤:

  • 1、6)客户端发出的请求基于 Socks5 协议跟 ss-local 端进行通讯,由于这个 ss-local 一般是本机或路由器或局域网的其他机器,不经过 GFW,所以解决了上面被 GFW 通过特征分析进行干扰的问题;
  • 2、5)ss-local 和 ss-server 两端通过多种可选的加密方法进行通讯,经过 GFW 的时候是常规的 TCP 包,没有明显的特征码而且 GFW 也无法对通讯数据进行解密;
  • 3、4)ss-server 将收到的加密数据进行解密,还原原来的请求,再发送到用户需要访问的服务,获取响应原路返回。

博弈协议的前浪:VPN

Virtual Private Network,虚拟私人网络:

  • 是一种常用于连接中、大型企业或团体与团体间的私人网络的通讯方法
  • 一套加密标准和传输协议,在公用网络上建立专用网络进行加密通讯,用于在设备之间创建安全连接。当你连接到 VPN 服务时,它会在互联网上创建一个加密的“隧道”,将你所有的互联网流量引导到其服务器,并在该服务器上对流量进行加密。

简而言之:VPN 本身就不是设计来 FQ 的,它只是能够加密数据,提高网络安全性和用户隐秘性;而这些特性就被大佬们用来 FQ ,帮助流量通过 GFW 审查。

虽说 VPN 流量早已被 GFW 完美识别且干扰,但众多(国外)VPN 厂商还是在通过不断更换服务器 IP 的方式来应对;因此对于轻度用户来说,最简单的 FQ 方案就是选择一个相对靠谱的 VPN 服务商...

对于一些发烧友来说,通常会通过 VPS自建FQ线路或者购买 大机场来追求稳定和高速的 FQ 体验!这个阶段就会涉及到挑选通信线路了,上网线路也分三六九等...

二、专线

普通家用宽带都是通过 163骨干网连接互联网,在各种线路中的级别最低,在出国线路上表现为拥堵,丢包率高;而大型企业(例如VPS服务商和VPN厂商)为确保业务能够顺畅地进行,是通过租用 专有线路接入互联网:

CN2(经过GFW)

Chinatelecom Next Carrier Network,中国电信下一代承载网(缩写为 CNCN,进一步缩写为 CN2)是一个多业务的承载网络,支持数据、语音、视频多种业务融合的应用。

  • CN2 GT是电信CN2产品线中的Globalt Tansit的产品,在CN2中级别最低。在出国线路上拥堵程度一般,相对于163骨干网稍强,相比CN2 GIA,性价比也较高;
  • CN2 GIA是电信号称的明星产品,等级最高,属于Global Internet Access的产品。和CN2 GT最大的区别在于,CN2 GIA拥有独立的回国链路。在出国线路上表现最好,很少拥堵,理论上速度最快最稳定,当然,价格也相对CN2 GT偏高。

相关名词:QoSQuality of Service,服务质量,指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制, 是用来解决网络延迟和阻塞等问题的一种技术。CN2 搭载了 QoS ,为各类应用场景智能实施不同的网络调配。网上常有人说 被QoS,说白了就是在网络拥堵的时候运营商会直接把一些不重要的流量包丢掉,至于啥是“不重要的”就要去问运营商了。对被 qos 的用户来说,表现就是丢包、网速降低、ping 值极不稳定。

PCCW(不经过GFW)

Pacific Century CyberWorks,香港电讯盈科,PCCW线路是其提供的线路,到大陆走的是 PCCW 自己接的直连,挺热门的一条香港线路,线路质量也不错,电信、联通都是走直连,移动不定,一般来说商家会对移动再单独接一个移动的直连,目前很多VPS商家都在出售 PCCW 线路。

购买VPS服务器的话,优先考虑那些接入 CN2 GIA线路PCCW线路的VPS商家。

IPLC & IEPL(不经过GFW)

以下便是大家使用机场时所说的 专线

IPLC,全称 International Private Leased Circuit,国际私有专用线路,是指电信公司租给企业用户专用的跨越国家或地区的端到端的数据、语音等综合信息业务的通信线路。

IEPL,全称 International Ethernet Private Line,国际以太网专线,主要为跨国性企业提供高品质的以太网专线服务。

OSI模型中:

  • IPLC 在物理层,IEPL 跑在 IPLC 上面的数据链路层
  • 理论上 IEPL 速度快一些,其实两者的区别几乎可以忽略不计:走的都是内网线路(即数据通过内部网络传输);
  • IPLC 和 IEPL 都只是链路层的电路而已,与互联网和公网没有任何关系;就好比这些专线就相当于一根网线,要上网还要接入机房等等...

专线流量是不经过 GFW 的:深港IPLC意思是深圳到香港点对点传输而不经过公网,是完全的内网专线。

BGP

Border Gateway Protocol,边界网关协议,是互联网上一个核心的去中心化自治路由协议。 它通过维护IP路由表或'前缀'表来实现自治系统(AS)之间的可达性,属于矢量路由协议。

详细资料参考:BGP漫谈;有BGP的机房也叫做多线机房那么,BGP可以为我们做什么?

  • BGP可以自动识别你的网络线路是移动、电信还是联通,当你连接服务器时自动分配最顺畅的线路;
  • 当线路故障的时候,它可以自动切换到其他线路(有些冒牌的BGP机房则需要人工介入...)

更多专业内容,请查看:https://www.duyaoss.com/

三、VPS

Virtual Private Server,虚拟专用服务器(技术),将一台服务器分割成多个虚拟专享服务器。每个VPS都可选配独立公网IP地址、独立操作系统、实现不同VPS间磁盘空间、内存、CPU资源、进程和系统配置的隔离,为用户和应用程序模拟出“独占”使用计算资源的体验。VPS可以像独立服务器一样,重装操作系统,安装程序,单独重启服务器。

谷歌云

有外币信用卡在手的话可以去免费使用谷歌云。

步骤千万条,重点是这条:请设置好谷歌云的防火墙如下图(名称随意),这样网络才能够正常地进入进出。

创建谷歌云防火墙规则.jpg

四、脚本

感谢程序猿们的分享,以下脚本均来自互联网:

# SS/SSR
# 原文链接:https://teddysun.com/486.html
wget --no-check-certificate -O shadowsocks-all.sh https://raw.githubusercontent.com/teddysun/shadowsocks_install/master/shadowsocks-all.sh
chmod +x shadowsocks-all.sh
./shadowsocks-all.sh 2>&1 | tee shadowsocks-all.log

# V2RAY
# 官方脚本
bash <(curl -L -s https://install.direct/go.sh)
# 233脚本
bash <(curl -s -L https://git.io/v2ray.sh)
# 2020-01-17 更新且到目前为止我一直在使用的 V2ray+WebSock+TLS脚本:
bash <(curl -L -s https://raw.githubusercontent.com/wulabing/V2Ray_ws-tls_bash_onekey/master/install.sh) | tee v2ray_ins.log

# TROJAN
# 原文链接:https://www.atrandys.com/2020/18.html
bash <(curl -L -s https://raw.githubusercontent.com/atrandys/trojan/master/trojan_mult.sh)

开启BBR加速

引用自脚本作者:https://teddysun.com/489.html,Google开源了其TCP BBR拥塞控制算法,并提交到了Linux内核,从4.9开始,Linux 内核已经用上了该算法。根据实地测试,在部署了最新版内核并开启了TCP BBR的机器上,网速甚至可以提升好几个数量级。

1.开启BBR的脚本:

wget --no-check-certificate https://github.com/teddysun/across/raw/master/bbr.sh && chmod +x bbr.sh && ./bbr.sh
#安装完成后,脚本会提示需要重启VPS,输入y并回车后重启。

2.测试BBR是否开启,依次输入检查是否有相应的返回值 bbr ,有就是开启成功了,输入输出结果如下:

[shenguanqun@ssr ~]$ uname -r
5.1.0-1.el7.elrepo.x86_64
[shenguanqun@ssr ~]$ sysctl net.ipv4.tcp_available_congestion_control
net.ipv4.tcp_available_congestion_control = reno cubic bbr
[shenguanqun@ssr ~]$ sysctl net.ipv4.tcp_congestion_control
net.ipv4.tcp_congestion_control = bbr
[shenguanqun@ssr ~]$ sysctl net.core.default_qdisc
net.core.default_qdisc = fq
[shenguanqun@ssr ~]$ lsmod | grep bbr
tcp_bbr 20480 15

这样就快些了~

2020-01-17 更新:到目前为止我一直在使用的魔改脚本开启BBR:

wget "https://github.com/cx9208/Linux-NetSpeed/raw/master/tcp.sh" && chmod +x tcp.sh && ./tcp.sh

Last modification:January 9, 2021
如果觉得我的文章对你有用,请随意赞赏