Переглянути джерело

Merge branch 'master' of https://github.com/v2ray/v2ray-core

Darien Raymond 10 роки тому
батько
коміт
2038cfa692
15 змінених файлів з 3 додано та 448 видалено
  1. 3 3
      README.md
  2. 0 12
      spec/benchmark.md
  3. 0 10
      spec/design.md
  4. 0 49
      spec/develop.md
  5. 0 15
      spec/donate.md
  6. 0 12
      spec/en/README.md
  7. 0 37
      spec/errors.md
  8. 0 95
      spec/guide.md
  9. 0 47
      spec/install.md
  10. 0 45
      spec/issue.md
  11. 0 8
      spec/roadmap.md
  12. 0 53
      spec/status.md
  13. BIN
      spec/v2ray.png
  14. BIN
      spec/v2ray_design.png
  15. 0 62
      spec/vmess.md

+ 3 - 3
README.md

@@ -5,11 +5,11 @@
 [![Coverage Status](https://coveralls.io/repos/v2ray/v2ray-core/badge.svg?branch=master&service=github)](https://coveralls.io/github/v2ray/v2ray-core?branch=master)
 [![GoDoc](https://godoc.org/github.com/v2ray/v2ray-core?status.svg)](https://godoc.org/github.com/v2ray/v2ray-core)
 
-[中文](https://github.com/V2Ray/v2ray-core/blob/master/README.md) | [English](https://github.com/V2Ray/v2ray-core/blob/master/spec/en/README.md)
-
 V2Ray 是一个模块化的代理软件包,它的目标是提供常用的代理软件模块,简化网络代理软件的开发。
 
-[官方网站](https://www.v2ray.com/)
+[官方网站](https://www.v2ray.com/) | [Wiki](https://github.com/v2ray/v2ray.github.io/wiki)
+
+V2Ray provides building blocks for network proxy development. Read our [Wiki](https://github.com/v2ray/v2ray.github.io/wiki/en-us:Home) for more information.
 
 ## License
 [The MIT License (MIT)](https://raw.githubusercontent.com/v2ray/v2ray-core/master/LICENSE)

+ 0 - 12
spec/benchmark.md

@@ -1,12 +0,0 @@
-# V2Ray 性能
-
-## 主机测试
-
-| 测试时间    |  主机商/类型         | 地区 | 主机 CPU | 主机内存 | 主机系统 | Youtube 速度 | 内存 (单用户) | CPU (单用户) |
-| -----------|------------------ | ----- |------- | ------- | ------ | ------- | -----------  | ----------- |
-| 2015.09.30 | Vultr             | 跨洲   | 1 Core  | 1024 MB  | Debian 64 位 | >4 Mbps  | ~10M | < 2% |
-| 2015.09.30 | Vultr             | 同洲   | 1 Core  | 768 MB  | Ubuntu 32 位 | >20 Mbps  | ~11M | < 20% |
-| 2015.09.29 | 搬瓦工 Bandwagon 10G | 同洲  | 1 Core  | 256 MB  | Cent OS 32 位 (OpenVZ) | >4 Mbps  | ~8M | < 5% |
-| 2015.09.27 | GCE f1-micro        | 跨州  | 1 Core  | 600 MB  | Debian 64 位 | >4 Mbps  | ~9M | < 2% |
-
-以上测试仅作为参考,具体连接速度可能受到各种因素的影响。

+ 0 - 10
spec/design.md

@@ -1,10 +0,0 @@
-# V2Ray 设计概要
-
-## 目标
-* V2Ray 自身提供基础的翻墙功能,单独使用可满足日常需求;
-* V2Ray 可被用于二次开发,可为用户提供个性化的翻墙体验,从而也达到难以统一屏蔽之效果;
-* V2Ray 为模块化设计,模块之间互相独立。每个模块可单独使用,也可和其它模块搭配使用。
-
-## 架构
-
-![](https://github.com/V2Ray/v2ray-core/blob/master/spec/v2ray_design.png)

+ 0 - 49
spec/develop.md

@@ -1,49 +0,0 @@
-# 开发指引
-
-## 基本
-### 版本控制
-Git
-
-### Branch
-本项目只使用一个 Branch:master。所有更改全部提交进 master,并确保 master 在任一时刻都是可编译可使用的。
-
-### 引用其它项目
-* golang
-  * 产品代码只能使用 golang 的标准库,即名称不包含任何网址的包;
-  * 测试代码可以使用 golang.org/x/... ;
-  * 如需引用其它项目请事先创建 Issue 讨论;
-* 其它
-  * 只要不违反双方的协议(本项目为 MIT),且对项目有帮助的工具,都可以使用。
-  
-
-## 开发流程
-
-### 写代码之前
-发现任何问题,或对项目有任何想法,请立即[创建 Issue](https://github.com/V2Ray/v2ray-core/blob/master/spec/issue.md) 讨论之,以减少重复劳动和消耗在代码上的时间。
-
-### 修改代码
-* golang
-  * 请参考 [Effective Go](https://golang.org/doc/effective_go.html);
-  * 每一次 commit 之前请运行: gofmt -w github.com/v2ray/v2ray-core/
-  * 每一次 commit 之前请确保测试通过: go test github.com/v2ray/v2ray-core/...
-  * 提交 PR 之前请确保新增代码有超过 60% 的代码覆盖率(code coverage)。
-* 其它
-  * 请注意代码的可读性
-  
-### Pull Request
-提交 PR 之前请先运行 git pull 以确保 merge 可顺利进行。
-
-## 对代码的修改
-### 功能性问题
-请提交至少一个测试用例(test case)来验证对现有功能的改动。
-
-### 性能相关
-请提交必要的测试数据来证明现有代码的性能缺陷,或是新增代码的性能提升。
-
-### 新功能
-如果新增功能对已有功能不影响,请提供可以开启/关闭的开关(如 flag),并使新功能保持默认关闭的状态。
-
-### 其它
-视具体情况而定。
-
-

+ 0 - 15
spec/donate.md

@@ -1,15 +0,0 @@
-# 资助 V2Ray 发展
-
-## 资助方式
-V2Ray 支持以下资助方式,收到捐赠之后您的昵称将会显示在页面下方。更改昵称请联系 donate@v2ray.com 。
-
-### 礼品卡
-请发送礼品卡编码至  donate@v2ray.com
-* [Amazon Gift Card](https://www.amazon.com/gp/product/B004LLIKVU/gcrnsts?ie=UTF8&qid=1443538350&ref_=lp_2238192011_1_1&s=gift-cards&sr=1-1)
-* iTunes Gift Card
-
-
-## 感谢您的帮助
-* 2015.10.17: Penn G\*\*\*\*\*\* $25
-* 2015.10.02: a\*\*\*\*\*u $25
-* 2015.09.30: s\*\*\*\*\*\*\*@gmail.com $10

+ 0 - 12
spec/en/README.md

@@ -1,12 +0,0 @@
-# Project V2Ray
-
-[![Build Status](https://travis-ci.org/v2ray/v2ray-core.svg?branch=master)](https://travis-ci.org/v2ray/v2ray-core)
-[![Coverage Status](https://coveralls.io/repos/v2ray/v2ray-core/badge.svg?branch=master&service=github)](https://coveralls.io/github/v2ray/v2ray-core?branch=master)
-[![GoDoc](https://godoc.org/github.com/v2ray/v2ray-core?status.svg)](https://godoc.org/github.com/v2ray/v2ray-core)
-![License](https://img.shields.io/github/license/v2ray/v2ray-core.svg)
-
-[中文](https://github.com/V2Ray/v2ray-core/blob/master/README.md) | [English](https://github.com/V2Ray/v2ray-core/blob/master/spec/en/README.md)
-
-V2Ray provides building blocks for network proxy, tunnel protocol development. It aims for easy further development of proxy software, to help people fight against internet censorship.
-
-For now this project focus on defeating [the Great Firewall of China](https://en.wikipedia.org/wiki/Great_Firewall), and thus most documents are provided in Chinese. Internationlization work will be done later.

+ 0 - 37
spec/errors.md

@@ -1,37 +0,0 @@
-# 错误信息
-
-## 简介
-在日志中可以看到 [Error XXXXXX] 的信息,其中 XXXXXX 表示错误代码,已知的错误代码和解释如下:
-
-
-## 0x0001 Authentication Error
-* 原因:未认证用户。
-* 解决:请检查客户端和服务器的用户数据。
-
-## 0x0002 Protocol Version Error
-* 原因:客户端使用了不正确的协议
-* 解决:
-  * 如果错误信息为 Invalid version 67 (或 71、80),则表示你的浏览器使用了 HTTP 代理,而 V2Ray 只接受 Socks 代理。
-  * 请检查客户端配置。
-
-## 0x0003 Corrupted Packet Error
-* 原因:网络数据损坏
-* 解决:极有可能你的网络连接被劫持,请更换网络线路或 IP。
-
-
-## 0x0004 IP Format Error
-* 原因:不正确的 IP 地址
-* 解决:请检查客户端软件,如浏览器的配置
-
-## 0x0005 Configuration Error
-* 原因:配置文件不能正常读取
-* 解决:请检查配置文件是否存在,权限是否合适,内容是否正常
-
-## 0x0006 Invalid Operation Error
-* 原因:不正确的操作
-
-
-## 0x03E8 Socks Version 4
-* 原因:客户端使用了 SOCKS 4 协议
-* 解决:升级客户端软件
-

+ 0 - 95
spec/guide.md

@@ -1,95 +0,0 @@
-# V2Ray 简明教程
-
-## 工作机制
-
-你需要至少两个 V2Ray Server(设为 A、B)才可以正常穿墙。以网页浏览为例,你的浏览器和 A 以 Socks 5 协议通信,B 和目标网站之间以 HTTP 协议通信,A 和 B 之间使用 V2Ray 的自有协议 [VMess](https://github.com/V2Ray/v2ray-core/blob/master/spec/vmess.md) 通信,如下图:
-
-![](https://github.com/V2Ray/v2ray-core/blob/master/spec/v2ray.png)
-
-通常 Server A 运行在你自己的电脑,Server B 运行在一台海外的 VPS 中。
-
-## 安装 V2Ray Server
-[安装 V2Ray](https://github.com/V2Ray/v2ray-core/blob/master/spec/install.md)
-
-## 配置 V2Ray Server
-### Server A
-示例配置保存于 [vpoint_socks_vmess.json](https://github.com/v2ray/v2ray-core/blob/master/release/config/vpoint_socks_vmess.json) 文件中,格式如下:
-```javascript
-{
-  "port": 1080, // 监听端口
-  "log" : {
-    "access": "" // 访问记录,目前只在服务器端有效,这里留空
-  },
-  "inbound": {
-    "protocol": "socks",  // 传入数据所用协议
-    "settings": {
-      "auth": "noauth", // 认证方式,暂时只支持匿名
-      "udp": false, // 如果要使用 UDP 转发,请改成 true
-      "ip": "127.0.0.1" // 如果 Server A 不是运行在本地,请标明 Server A 的实际 IP 地址,否则 UDP 转发将无法进行。
-    }
-  },
-  "outbound": {
-    "protocol": "vmess", // 中继协议,暂时只有这个
-    "settings": {
-      "vnext": [
-        {
-          "address": "127.0.0.1", // Server B 的 IP 地址,IPv4 或 IPv6,不支持域名
-          "port": 27183, // Server B 的监听端口,请更换成其它的值
-          "users": [
-            // 用户 ID,必须包含在 Server B 的配置文件中。此 ID 将被用于通信的认证,请自行更换随机的 ID,可以使用 https://www.uuidgenerator.net/ 来生成新的 ID。
-            {"id": "ad937d9d-6e23-4a5a-ba23-bce5092a7c51"}
-          ],
-          "network": "tcp" // 如果要使用 UDP 转发,请改成 "tcp,udp"
-        }
-      ]
-    }
-  }
-}
-```
-
-### Server B
-示例配置保存于 [vpoint_vmess_freedom.json](https://github.com/v2ray/v2ray-core/blob/master/release/config/vpoint_vmess_freedom.json) 文件中,格式如下:
-```javascript
-{
-  "port": 27183, // 监听端口,必须和 Server A 中指定的一致
-  "log" : {
-    "access": "access.log" // 访问记录
-  },
-  "inbound": {
-    "protocol": "vmess", // 中继协议,不用改
-    "settings": {
-      "clients": [
-          // 认可的用户 ID,必须包含 Server A 中的用户 ID
-        {"id": "ad937d9d-6e23-4a5a-ba23-bce5092a7c51"}
-      ],
-      "udp": false // 如果要使用 UDP 转发,请改成 true
-    }
-  },
-  "outbound": {
-    "protocol": "freedom", // 出口协议,不用改
-    "settings": {} // 暂无配置
-  }
-}
-```
-
-### 其它
-* V2Ray 的用户验证基于时间,请确保 A 和 B 所在机器的系统时间误差在一分钟以内。
-* json 配置文件实际上不支持注释(即“//”之后的部分,在使用时请务必删去)。
-
-## 运行
-
-Server A
-
-./server --config="vpoint_socks_vmess.json 的绝对路径"
-
-Server B
-
-./server --config="vpoint_vmess_freedom.json 的绝对路径"
-
-## 测试服务器可用性
-
-curl -v --socks5-hostname 127.0.0.1:1080 https://www.google.com/
-
-## 调试
-
-使用过程中遇到任何问题,请参考[错误信息](https://github.com/V2Ray/v2ray-core/blob/master/spec/errors.md)。

+ 0 - 47
spec/install.md

@@ -1,47 +0,0 @@
-# V2Ray 安装方式
-
-## 预编译程序
-发布于 [Release](https://github.com/v2ray/v2ray-core/releases) 中,每周更新,[更新周期见此](https://github.com/V2Ray/v2ray-core/blob/master/spec/roadmap.md)。
-
-其中:
-* v2ray-linux-32.zip: 适用于 32 位 Linux,各种发行版均可。
-* v2ray-linux-64.zip: 适用于 64 位 Linux,各种发行版均可。
-* v2ray-linux-arm.zip: 适用于 ARMv6 及之后平台的 Linux,如 Raspberry Pi。
-* v2ray-linux-arm64.zip: 适用于 ARMv8 及之后平台的 Linux。
-* v2ray-linux-macos.zip: 适用于 Mac OS X 10.7 以及之后版本。
-* v2ray-windows-32.zip: 适用于 32 位 Windows,Vista 及之后版本。
-* v2ray-windows-64.zip: 适用于 64 位 Windows,Vista 及之后版本。
-
-## 编译源文件
-
-大概流程,请根据实际情况修改
-
-1. 安装 Git: sudo apt-get install git -y
-2. 安装 golang:
-  1. 下载安装文件:
-    1. 64位:curl -o go_latest.tar.gz https://storage.googleapis.com/golang/go1.5.1.linux-amd64.tar.gz
-    2. 32位:curl -o go_latest.tar.gz https://storage.googleapis.com/golang/go1.5.1.linux-386.tar.gz
-  2. sudo tar -C /usr/local -xzf go_latest.tar.gz
-  3. export PATH=$PATH:/usr/local/go/bin
-  4. export GOPATH=$HOME/work
-3. 下载 V2Ray 源文件:go get -u github.com/v2ray/v2ray-core
-4. 生成编译脚本:go install github.com/v2ray/v2ray-core/tools/build
-5. 编译 V2Ray:$GOPATH/bin/build
-6. V2Ray 程序及配置文件会被放在 $GOPATH/bin/v2ray-XXX 文件夹下(XXX 视平台不同而不同)
-
-### Arch Linux
-1. 安装 Git: sudo pacman -S git
-2. 安装 golang:sudo pacman -S go
-   1. export GOPATH=$HOME/work
-3. go get -u github.com/v2ray/v2ray-core
-4. go install github.com/v2ray/v2ray-core/tools/build
-5. $GOPATH/bin/build
-
-### Debian / Ubuntu
-bash <(curl -s https://raw.githubusercontent.com/v2ray/v2ray-core/master/release/install.sh)
-
-此脚本会自动安装 git 和 golan 1.5 (如果系统上没有的话,并且需要 root 权限),然后把 v2ray 编译到 $GOPATH/bin/v2ray,新装的 golang 会把 GOPATH 设定到 /v2ray。
-
-
-## 配置和运行
-[链接](https://github.com/V2Ray/v2ray-core/blob/master/spec/guide.md)

+ 0 - 45
spec/issue.md

@@ -1,45 +0,0 @@
-# Issue 指引
-
-在新建 Issue 之前请先阅读下面的内容,以提高 Issue 的质量和效率。
-
-## 开放分类
-在创建 Issue 的时候可标记为以下分类: 
-
-### Bug
-代码的质量问题,可以是功能性(Functionality),稳定性(Reliability)或者性能(Performance)。在 Bug 的内容中请注明下列内容以方便重现:
-
-* 操作系统:如 Windows 10,Ubuntu 14.04 等,64 位 / 32 位
-* V2Ray 版本:版本号或源码同步日期
-* Golang 版本:如果有的话
-* 问题描述:任何的错误信息,不正常的行为等
-* 日志文件:如果有的话
-
-如对软件使用有任何问题也请发到这个类别。
-
-请在一个 Issue 中只描述一个问题,如果你遇到多个问题,请分别创建不同的 Issue,以方便讨论和解决。如果合在一起发,将有很高的机率被标记为 Chat 而降低解决问题的优先级。
-
-### Chat
-聊天或其它相关性不强的内容。标记为 Chat 的 Issue 将在最后回复 7 天后关闭。
-
-### Enhancemet
-有关新特性的建议,如果是针对现有代码的修改,请详细描述您的建议。
-
-## 以下分类仅供管理员使用
-### Announcement
-新版本发布、最新动态等公告内容,将于发布之后的 7 日内关闭。。
-
-### Duplicate
-此 Issue 与之前的某一个 Issue 重复。
-
-### Help Wanted
-标记为 Help Wanted 的 Issue 接受 Pull Request,一般为新特性的实现,如果您对其中某一个感兴趣,欢迎供献代码。
-
-### Invalid
-无法重现的 Bug 或没有意义的 Issue。
-
-### vLog
-用于记录一些 V2Ray 的实现细节,想法等,将于发布之后的 30 日内关闭。
-
-### Won't fix
-此 Issue 是一个合理的问题,但不影响软件的正常使用,故不修复。
-

+ 0 - 8
spec/roadmap.md

@@ -1,8 +0,0 @@
-# V2Ray 开发计划
-
-## 版本号
-V2Ray 的版本号形如 X.Y.Z,其中 X 表示 Milestone,Y 表示 Release,如 2.3 表示第二个 Milestone 的第三个 Release;Z 仅作为修复紧急 Bug 之后的发布使用,一般不出现。
-
-## 周期
-V2Ray 将在每周一发布一个 [Release](https://github.com/v2ray/v2ray-core/releases),每 12 周左右完成一个 Milestone。
-

+ 0 - 53
spec/status.md

@@ -1,53 +0,0 @@
-# 当前状态
-
-**注释**
-* S:接近完美
-* A:稳定可用
-* B:默认开启,还在测试期,可能有各种问题
-* C:需要手动开启
-* D:正在调试期,暂不可用
-* E:计划中,欢迎 Pull Request
-
-**概况**
-
-| 功能       | 状态 | 备注 |
-| --------- | ---- | ---- |
-| 多用户支持  | B  |  |
-| 多服务器支持  | B  |  |
-| 负载均衡 | E | |
-| 多种加密方式 | E | 暂时只支持 AES-128 |
-| 选择性路由 | E | |
-| 自定义 DNS 解析 | E | |
-
-**平台支持**
-
-| 平台       | 状态 | 备注 |
-| --------- | ---- | ---- |
-| golang 编译  | A  |  |
-| Windows  | B  |  |
-| Mac OS | B | |
-| Ubuntu | B | 尚不支持 apt-get 安装 |
-| Redhat | B | 尚不支持 yum 安装 |
-| OpenWRT | E | |
-
-**Socks 5 协议**
-
-| 功能       | 状态 | 备注 |
-| --------- | ---- | ---- |
-| TCP 连接    | A |  |
-| UDP 连接    | C | [Issue #3](https://github.com/v2ray/v2ray-core/issues/3) |
-| FTP 支持    | E | [Issue #2](https://github.com/v2ray/v2ray-core/issues/2) |
-
-**[VMess 协议](https://github.com/V2Ray/v2ray-core/blob/master/spec/vmess.md)**
-
-| 功能       | 状态 | 备注 |
-| --------- | ---- | ---- |
-| 单一连接    | A |  |
-| 连接复用    | E |  |
-
-**ShadowSocks 协议**
-
-| 功能       | 状态 | 备注 |
-| --------- | ---- | ---- |
-| 单一连接    | E |  |
-

BIN
spec/v2ray.png


BIN
spec/v2ray_design.png


+ 0 - 62
spec/vmess.md

@@ -1,62 +0,0 @@
-# VMess 设计
-## 摘要
-* 版本:1
-
-## 格式
-### 数据请求
-认证部分:
-* 16 字节:基于时间的 hash(用户 ID),见下文
-
-指令部分:
-* 1 字节:版本号,目前为 0x1
-* 16 字节:请求数据 IV
-* 16 字节:请求数据 Key
-* 4 字节:认证信息 V
-* 1 字节:指令
-  * 0x00:保留
-  * 0x01:TCP 请求
-  * 0x02:UDP 请求
-* 2 字节:目标端口
-* 1 字节:目标类型
-  * 0x01:IPv4
-  * 0x02:域名
-  * 0x03:IPv6
-* 目标地址:
-  * 4 字节:IPv4
-  * 1 字节长度 + 域名
-  * 16 字节:IPv6
-* 4 字节:指令部分前面所有内容的 FNV1a hash
-
-数据部分
-* N 字节:请求数据
-
-其中指令部分经过 AES-128-CFB 加密:
-* Key:md5(用户 ID + 'c48619fe-8f02-49e0-b9e9-edf763e17e21')
-* IV:md5(X + X + X + X),X = []byte(UserHash 生成的时间) (8 字节, Big Endian)
-
-数据部分使用 AES-128-CFB 加密,Key 和 IV 在请求数据中
-
-### 数据应答
-数据部分
-* 4 字节:认证信息 V
-* N 字节:应答数据
-
-其中数据部分使用 AES-128-CFB 加密,IV 为 md5(请求数据 IV),Key 为 md5(请求数据 Key)
-
-## 用户 ID
-ID 等价于 [UUID](https://en.wikipedia.org/wiki/Universally_unique_identifier),是一个 16 字节长的随机数,它的作用相当于一个令牌(Token)。
-
-一个 ID 形如:de305d54-75b4-431b-adb2-eb6b9e546014,几乎完全随机,可以使用任何的 UUID 生成器来生成,比如[这个](https://www.uuidgenerator.net/)。
-
-ID 在消息传递过程中用于验证客户端的有效性,只有当服务器认可当前 ID 时,才进行后续操作,否则关闭连接甚至加入黑名单。
-
-在多用户环境中,用户帐号应与 ID 分开存放,即用户帐号和 ID 有一对一或一对多的关系,在 V2Ray Server 中,只负责管理 ID,用户帐号(及权限、费用等)由另外的系统管理。
-
-在后续版本中,V2Ray Server 之间应有能力进行沟通而生成新的临时 ID,从而减少通讯的可探测性。
-
-## 基于时间的用户 ID Hash
-
-* H = MD5
-* K = 用户 ID (16 字节)
-* M = UTC 时间,精确到秒,取值为当前时间的前后 30 秒随机值(8 字节, Big Endian)
-* Hash = HMAC(H, K, M)