Skip to content

Commit

Permalink
[update] gfw client done
Browse files Browse the repository at this point in the history
  • Loading branch information
AIboy996 committed Jun 4, 2024
1 parent e756f48 commit 2e57a7b
Show file tree
Hide file tree
Showing 10 changed files with 294 additions and 65 deletions.
Binary file removed docs/Note/GFW/assets/1.jpg
Binary file not shown.
Binary file added docs/Note/GFW/assets/2024-06-04-14-40-52.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Note/GFW/assets/2024-06-04-15-01-01.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/Note/GFW/assets/2024-06-04-16-33-31.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
File renamed without changes
236 changes: 223 additions & 13 deletions docs/Note/GFW/client.md

Large diffs are not rendered by default.

103 changes: 54 additions & 49 deletions docs/Note/GFW/intro.md
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
---
title: 介绍
title: 墙和梯子
tags:
- VPN
- 计算机网络
include:
- alert
---
Expand All @@ -16,7 +17,7 @@ include:
!!! cite "维基百科"
防火长城(英语:Great Firewall,常用简称:GFW),中文也称中国国家防火墙,通常简称为墙、防火墙等,中国国家互联网信息办公室称为数据跨境安全网关 ,是中华人民共和国政府监控和过滤国际互联网出口内容的软硬件系统集合,用于通过技术手段,阻断不符合中国政府要求的互联网内容传输,一般认为由方滨兴主持设计。

简单来说就是墙导致很多网站你上不去,例如google.com
简单来说就是墙导致很多网站你上不去,例如 <https://www.google.com>

宽泛的来说,墙就是网络审查。

Expand All @@ -30,6 +31,10 @@ include:

出于各种需求,比如合法的跨国电商、正常的跨国学术交流等等,我们很多时候需要越过GFW访问国外的服务器,这时候就需要梯子。

<figure markdown>
![](./assets/梯子.png)
</figure>


!!! cite "维基百科"
随着防火长城逐渐为人熟知,“墙”一词有时也被用作动词,“被墙”即指网站内容被防火长城所屏蔽。“翻墙”、“挂梯子”也被引申为突破网络审查浏览中国大陆境外被屏蔽的网站或使用服务的行为。
Expand All @@ -46,42 +51,34 @@ include:
<figcaption>要坐牢的啊!</figcaption>
</figure>

所以,作为中国公民,我们有义务遵纪守法,拒绝翻墙。

虽然法律条文中的字眼是针对”提供“者,”情节严重“者。这就好比:

!!! cite "《刑法》 第三百六十四条"
【传播淫秽物品罪;组织播放淫秽音像制品罪】传播淫秽的书刊、影片、音像、图片或者其他淫秽物品,情节严重的,处二年以下有期徒刑、拘役或者管制。
所以我写这篇推文纯粹是从技术的角度做一个分享、科普,绝非要宣扬翻墙的手段或者提供翻墙的工具。**先叠一点点甲**

但是小打小闹依然有风险,务必杜绝!

所以我写这篇推文纯粹是从技术的角度做一个分享、科普,绝非要宣扬翻墙的手段或者提供翻墙的工具。**先叠100甲**

## 墙与梯的网络技术

想要理解墙和梯子,需要一些网络的基础知识。
<figure markdown>
![](./assets/Armor.jpg)
</figure>

### 回车之后
## 回车之后
想要理解墙和梯子,需要一些计算机网络的基础知识。

当你在浏览器输入一个网址(例如www.google.com)、按下回车之后,都会发生哪些事情呢?

1. 浏览器沿着找到DNS服务器(Domain Name System Server,可以理解为引路人),问一下www.google.com的IP是多少。
2. 通过DNS告诉我们的IP地址,然后浏览器沿着网线找到Google的服务器,问它要一个网页文件。
3. Google沿着网线把网页文件发给我们,浏览器把这个文件打开,呈现在我们面前。

### 墙如何阻碍网络连接
## 墙的技术手段

搞明白了上面的步骤,我们就很容易想到墙该怎么干了!

#### 法一:污染DNS(或DNS劫持)
### DNS污染(或DNS劫持)

你去找DNS服务器的时候,墙想办法告诉让它你一个错误的答案(只要是国内合法提供服务的DNS服务商都会受到法律的监管,从而帮助墙进行拦截),没有了正确的IP地址,你就无法正确访问目标网站了。

#### 法二:封锁IP
### 封锁IP

即使你知道了正确的IP,如果墙知道这个IP是在黑名单里的(对于Facebook、Twitter等这类知名的被墙网站,大概都是被封了IP的),那么就可以直接把你的请求拦截下来(只要是国内合法提供服务的网络运营商都会收到法律的监管,从而帮助墙进行拦截)。

#### 法三:TCP RST阻断
### TCP RST阻断

假设你侥幸沿着网线找到了Google,正和他商量着要什么内容,这个时候墙发现你在干什么了,也可以立即发起攻击,中断你的访问。在浏览器里的反馈就是:

Expand All @@ -93,29 +90,27 @@ include:

这种情况也非常常见!!

#### 法四:封锁特定端口
### 封锁特定端口

即便你已经找到Google,他也知道你要什么,已经打包好给你发送过来的路上,墙依然可以把它拦截下来。墙有这样一种封锁特定端口的手段,例如只让你访问www.google.com:8000,但是不让你访问www.google.com:7000。这样做的后果就是,你能发出去消息,但是收不到对方的回应。上行的数据包是可以被服务器收到的,而下行的数据包会被过滤掉。

#### 法五:HTTPS间歇性丢包
### HTTPS间歇性丢包

能访问但是有不能完全访问,实际上对于Google的HTTPS服务,GFW不愿意让其完全不能访问。所以采取的办法是对于Google的某些IP的443端口采取间歇性丢包的措施。最明显的IP段是国内解析google域名常见的74.125.128.*。其原理应该类似于封端口,但是触发条件并不只是看IP和端口,加上了时间间隔这样一个条件。
能访问但是有不能完全访问,实际上对于Google的HTTPS服务,GFW不愿意让其完全不能访问[^github_post]。所以采取的办法是对于Google的某些IP的443端口采取间歇性丢包的措施。最明显的IP段是国内解析google域名常见的74.125.128.*。其原理应该类似于封端口,但是触发条件并不只是看IP和端口,加上了时间间隔这样一个条件。

## 梯子的技术原理
## 梯子的技术手段

GFW的这些操作可谓是四两拨千斤,通过简单的一些技术手段就可以达到非常好的封锁效果。本质原因在于,GFW对网络服务的提供有绝对的话语权,毕竟网络运营商都是在国家的准许下营业的。

但也并非死路一条,从墙诞生至今,墙的技术不断更新迭代,翻墙的技术也一刻不停地在精华。所谓道高一尺,魔高一丈??

#### 一:使用非中国大陆的网络服务
### 使用境外网络服务

*这根本不是梯子,这是直接出国了,不用中国大陆的网络服务也就自然没有梯子了*

简单干脆有效,但是代价很高。例如香港作为我国的特别行政区,和国内的网络监管机制有所不同,就有一些不法分子通过某些方法向内地的人提供网络服务
简单干脆有效,但是价格不菲。例如香港作为我国的特别行政区,和国内的网络监管机制有所不同,就有一些人通过某些方法向内地的人提供网络服务。再如马斯克的Starlink项目,用户可以直接通过他们的卫星上网

当然,这种方法仅限于卫星通信等这类无线服务,一般意义上的有线网络服务在出入国境时都是受到监管的。

#### 二:更改hosts文件
### 更改hosts文件

*严格来说,这也不是梯子,但也不失为一种简单有效的规避GFW的方法*

Expand All @@ -134,25 +129,27 @@ GFW的这些操作可谓是四两拨千斤,通过简单的一些技术手段

![image-20221013230316813](assets/image-20221013230316813.png)

#### 三:VPN(Virtual Private Network,虚拟专用网络)
当然,你也可以手动修改DNS服务器来规避DNS污染,例如:

- `1.1.1.1`:CloudFare的DNS服务器
- `8.8.8.8`:Google的DNS服务器

*VPN虽然是梯子的一种,但是由于其知名度非常之高,已经成为梯子的代名词*
### 虚拟专用网络——VPN
> VPN全称Virtual Private Network,虚拟专用网络。常见加密协议有:SSTP、PPTP、L2TP/IPsec、IKEv2、WireGuard、openVPN等。
VPN起初或者说从始至终的正经用途就不是翻墙,但是它确实能达到翻墙的目的。相当于穿过GFW修了一条私人专用的隧道,可以实现匿名连接,提高私密性,顺带翻墙。所以从技术上来说,VPN的技术没啥可说的,就是砸钱建立专用通道,甚至专用的线缆。
*VPN虽然只是梯子的一种,但是由于其知名度非常之高,已经成为梯子的代名词*

在商业公司中,VPN被广泛应用,因为很多企业需要这样的安全传输手段,也有很多国际化的企业需要和墙外进行通信。
VPN起初或者说从始至终的正经用途就不是翻墙,但是它的加密通信确实能达到翻墙的目的。在商业公司中,VPN被广泛应用,因为很多企业需要这样的安全传输手段,也有很多国际化的企业需要和墙外进行通信。

大多数正经的VPN服务商,他们的口号往往是:“安全”,“私密”,“匿名”等等(翻墙从来不是VPN的目的,只是一个附带的作用),下图是知名的ExpressVPN的官网介绍:

![image-20221013224143166](assets/image-20221013224143166.png)

需要注意的是,由于太过知名,VPN已经成为了梯子的代名词,所以就会有阿猫VPN、阿狗VPN等等,虽然也叫“VPN”,但是他们实质是并非虚拟专用网络。

### P2P流量代理

需要注意的是,由于太过知名,VPN已经成为了梯子的代名词,所以就会有阿猫VPN、阿狗VPN等等,虽然也叫VPN,但是他们实质是并非虚拟专用网络。

#### 四、P2P(peer to peer)流量代理

*人人为我,我为人人*
*peer to peer,人人为我,我为人人*

虽然有GFW的存在,但是我们与国外的大多数服务器还是可以正常通信的,如此一来就有这样一种操作:

Expand Down Expand Up @@ -180,32 +177,38 @@ VPN起初或者说从始至终的正经用途就不是翻墙,但是它确实

但是这种人人为我,我为人人的P2P互联网精神是值得推崇的。

#### 五:私人代理服务器(机场)
### 私人代理服务器——机场

*XXX机场的老板被抓了/xxx机场的老板跑路了,这两种情况是机场最常见的下场*

和P2P代理非常类似,私人代理服务器也是通过某种中转实现了翻墙,只不过前者是通过无私奉献的外国网友提供中转服务,后者则是某些不法分子私营的服务器提供中转服务(所以跑路和被抓也不足为奇)。

网上流传着这样一张图,大致展示了几种常见的机场的服务模式:
#### 中转
和P2P代理非常类似,机场也是通过某种**中转**实现了翻墙,只不过前者是通过无私奉献的外国网友提供中转服务,后者则是某些不法分子**私营的代理服务器**提供中转服务(所以跑路和被抓也不足为奇)。有这样几种常见的机场的中转模式:

<figure markdown>
![circle](./assets/1.jpg){width=400}

![](assets/2024-06-04-14-40-52.png){width=400}

</figure>
从技术上来说,这几种方式都有着最重要的一环,也就是如何躲过GFW的监管,换言之加密算法。如果流量不进行特殊的加密,GFW很容易就嗅探到流量的特征进而把代理服务器封掉。

而加密的算法通常有以下几种:
- 红色就是直连线路
- 蓝色是中转线路
- 绿色是IPLC专线(International Private Leased Circuit)

#### 加密
此外和VPN也非常类似,机场的核心也是**加密通信**。如果流量不进行特殊的加密,GFW很容易就嗅探到流量的特征进而把代理服务器封掉。只不过和VPN比起来使用的算法要更简单一些,大多是开源的加密算法。这也就意味着理论上机场的速度要更快,因为VPN的复杂加密会显著降低网络的响应速度。

机场使用的加密算法通常有以下几种:

- SS(Shadowsocks),项目已凉,听说作者被请去喝茶了
- SSR(ShadowsocksR),SS的升级款
- V2ray
- Vmess
- Trojan

……

这几种方式各有各的特点,以后我们会详细介绍。

另外我这里分享一个小作文,是SS作者的一篇悼文(当然,作者只是请去喝茶了,应该还是健在的):
最后分享一个小作文,是SS作者的一篇悼文(当然,作者只是请去喝茶了,应该还是健在的):

> 记念 ss,向一个伟大的创造告别
>
Expand Down Expand Up @@ -235,7 +238,7 @@ VPN起初或者说从始至终的正经用途就不是翻墙,但是它确实
>
> 苟活者在淡红的血色中,会依稀看见微茫的希望;真的猛士,将更奋然而前行。
>
> 引用自博客 https://www.starduster.me/author/stardust/
> 引用自博客 <https://www.starduster.me/author/stardust/>
## 写在最后

Expand All @@ -245,4 +248,6 @@ VPN起初或者说从始至终的正经用途就不是翻墙,但是它确实

2、许多的国外科技公司在中国需要进行合理的监管、审查时,不予以配合,就比如Google、Twitter之流。国家安全甚至某种程度上会受到威胁,无奈之下只能把这样的服务商排除在外。从这一方面来看,我也相信随着中国互联网科技的崛起,有足够好的产品可以替代这些不守规矩的外厂,墙也会逐渐淡化。

从结果来看,当初实施严格的网络监管实在是高明之举。
从结果来看,当初实施严格的网络监管实在是高明之举。

[^github_post]: <https://github.com/evvil/Over-the-wall>
17 changes: 15 additions & 2 deletions docs/Note/GFW/server.md
Original file line number Diff line number Diff line change
@@ -1,8 +1,21 @@
---
tags:
- VPN
- 折腾
- 计算机网络
---

# 搭建一个VPN服务器
# 搭建一个代理服务器

TBD:搭建一个VPN服务器
!!! cite "Trojan-Go Official"
Trojan-Go是使用Go语言实现的完整的Trojan代理,和Trojan协议以及原版的配置文件格式兼容。支持并且兼容Trojan-GFW版本的绝大多数功能,并扩展了更多的实用功能。

Trojan-Go的的首要目标是保障传输安全性和隐蔽性。在此前提下,尽可能提升传输性能和易用性。

由于Shadowsocks比较旧了,还很容易被监测到。VMess又比较复杂。我这里就搞一个[trojan-go](https://p4gefau1t.github.io/trojan-go/)服务器。

并且,**违法乱纪的事情咱不干**。这个服务器就搭建在我宿舍的电脑上,用处是方便我在外面访问宿舍的局域网设备。折腾的过程纯粹是为了加深对计算机网络的理解。

## 安装trojan-go

TBC: trojan-go
1 change: 1 addition & 0 deletions docs/Note/Shell/ssh.md
Original file line number Diff line number Diff line change
Expand Up @@ -5,5 +5,6 @@ tags:
---

# SSH
SSH全称Secure Shell,是一种加密的网络传输协议。

TBD:ssh
2 changes: 1 addition & 1 deletion docs/Note/jupyter/print.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,7 +12,7 @@ tags:
jupyter nbconvert --to pdf print.ipynb
```

[最简单的方法(除了截图)](./#nbconvert):使用Jupyter的官方服务nbviewer
[最简单的方法(除了截图)](./#nbviewer):使用Jupyter的官方服务nbviewer

人生苦短,我用Jupyter。

Expand Down

0 comments on commit 2e57a7b

Please sign in to comment.