1
0
mirror of https://github.com/v2fly/v2ray-core.git synced 2024-12-22 10:08:15 -05:00

Remove specs in favor of wiki

This commit is contained in:
V2Ray 2015-11-30 20:36:34 +01:00
parent 1a7fbd6d1b
commit a04cfb726d
14 changed files with 0 additions and 445 deletions

View File

@ -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% |
以上测试仅作为参考,具体连接速度可能受到各种因素的影响。

View File

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

View File

@ -1,49 +0,0 @@
# 开发指引
## 基本
### 版本控制
Git
### Branch
本项目只使用一个 Branchmaster。所有更改全部提交进 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并使新功能保持默认关闭的状态。
### 其它
视具体情况而定。

View File

@ -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

View File

@ -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.

View File

@ -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 协议
* 解决:升级客户端软件

View File

@ -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)。

View File

@ -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 位 WindowsVista 及之后版本。
* v2ray-windows-64.zip: 适用于 64 位 WindowsVista 及之后版本。
## 编译源文件
大概流程,请根据实际情况修改
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. 安装 golangsudo 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)

View File

@ -1,45 +0,0 @@
# Issue 指引
在新建 Issue 之前请先阅读下面的内容,以提高 Issue 的质量和效率。
## 开放分类
在创建 Issue 的时候可标记为以下分类:
### Bug
代码的质量问题可以是功能性Functionality稳定性Reliability或者性能Performance。在 Bug 的内容中请注明下列内容以方便重现:
* 操作系统:如 Windows 10Ubuntu 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 是一个合理的问题,但不影响软件的正常使用,故不修复。

View File

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

View File

@ -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 | |

Binary file not shown.

Before

Width:  |  Height:  |  Size: 9.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 20 KiB

View File

@ -1,62 +0,0 @@
# VMess 设计
## 摘要
* 版本1
## 格式
### 数据请求
认证部分:
* 16 字节:基于时间的 hash(用户 ID),见下文
指令部分:
* 1 字节:版本号,目前为 0x1
* 16 字节:请求数据 IV
* 16 字节:请求数据 Key
* 4 字节:认证信息 V
* 1 字节:指令
* 0x00保留
* 0x01TCP 请求
* 0x02UDP 请求
* 2 字节:目标端口
* 1 字节:目标类型
* 0x01IPv4
* 0x02域名
* 0x03IPv6
* 目标地址:
* 4 字节IPv4
* 1 字节长度 + 域名
* 16 字节IPv6
* 4 字节:指令部分前面所有内容的 FNV1a hash
数据部分
* N 字节:请求数据
其中指令部分经过 AES-128-CFB 加密:
* Keymd5(用户 ID + 'c48619fe-8f02-49e0-b9e9-edf763e17e21')
* IVmd5(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)