GFW 一月 24, 2021

v2ray

文章字数 7.3k 阅读约需 7 mins. 阅读次数

干啥的

引用 v2ray 官网中的 说明

制作 V2Ray 的目的是什么

对于已公开的合法信息,人民有自由获取的权利。同时,人民也有言论自由的权利。

是否反对管制

不反对管制。事实上任何事物都需要管制,以减少大众的生活成本,比如奶粉。但监管需要有法可依、有据可循。民众都认可的监管方式也是合理的,可接受的。

Project V 由谁主导开发

我们是一群爱好自由的人们。由于政策压力,我们倾向于保持匿名,尽可能地不透露任何身份信息。

怎么用

服务端

# 创建路径
$ mkdir v2ray && cd v2ray
# 下载最新发布包
$ wget https://github.com/v2fly/v2ray-core/releases/latest/download/v2ray-linux-64.zip
# 解压
$ unzip v2ray-linux-64.zip
# 备份原始配置
$ mv config.json config.json.origin
# 添加配置,可参考 https://github.com/v2fly/v2fly-github-io/blob/master/docs/guide/start.md
# port 为服务器监听端口
# id 为唯一标识,可借助 uuidgen 命令进行生成
# 服务器的配置中需要确保 id 和端口与客户端一致,就可以正常连接了
$ cat > config.json << EOF
{
    "inbounds": [
        {
            "port": 34260,
            "protocol": "vmess",
            "settings": {
                "clients": [
                    {
                        "id": "$(uuidgen)"
                    }
                ]
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "freedom"
        }
    ]
}
EOF
# 通过 v2ray --config=config.json 启动服务
# 通过 screen 命令使服务保持后台运行
# 注意修改下面命令中的路径,配置文件需使用绝对路径
# 执行命令后,可通过 ps -ef|grep v2ray 查看服务是否已启动
$ screen -dmS s1080 /path/to/v2ray/v2ray --config=/path/to/v2ray/config.json

客户端

https://github.com/v2fly/v2ray-core/releases/latest 下载对应客户端版本,即客户端也需要启动 v2ray 服务,根据配置文件区分服务端或客户端。

# 生成客户端配置文件 client.json
# 需调整如下内容:
# address 为服务端 ip 或域名
# port 为服务端配置的端口
# id 为服务端生成的 id
$ cat > client.json << EOF
{
    "inbounds": [
        {
            "port": 1080,
            "listen": "127.0.0.1",
            "protocol": "socks",
            "settings": {
                "udp": true
            }
        }
    ],
    "outbounds": [
        {
            "protocol": "vmess",
            "settings": {
                "vnext": [
                    {
                        "address": "server-ip",
                        "port": 34260,
                        "users": [
                            {
                                "id": "b831381d-6324-4d53-ad4f-8cda48b30811"
                            }
                        ]
                    }
                ]
            }
        },
        {
            "protocol": "freedom",
            "tag": "direct"
        }
    ],
    "routing": {
        "domainStrategy": "IPOnDemand",
        "rules": [
            {
                "type": "field",
                "ip": [
                    "geoip:private"
                ],
                "outboundTag": "direct"
            }
        ]
    }
}
EOF

之后可采用与服务端类似方式,启动客户端服务。

至此,我们就获得了一个监听本地 1080 端口的 socks 协议,可通过多种方式进行利用,例如浏览器插件等。

浏览器插件

Chrome 或 Firefox 可通过 SwitchyOmega 插件配置代理。

以 Chrome 为例,在 release 页面下载 crx 文件至本地,修改扩展名为 .zipunzip 解压到本地文件夹中,在 Chrome 扩展程序加载已解压的扩展程序,选择解压路径,即可完成插件安装。

在插件的配置页面,新建一个 代理服务器 类型 情景模式,代理协议选择 SOCKS5,代理服务器设为 127.0.0.1,代理端口为 1080,保存应用即可。

在需要使用此代理进行访问时,在浏览器插件图标处选择创建的情景模式即可。

iOS

iOS 上免费的 v2ray 客户端有 LeafOneClick,需要从美区 App Store 下载,注册及切换账号可见 用好 App Store

Leaf

Leaf 源码可见 这里,配置较麻烦,但支持没有设置 alterId 参数的服务端(如本文上面的配置)。关于 alterId 参数的配置和使用,可见 VMess 协议 中相关内容。

App 中需添加一个配置,示例如下,注意修改其中的 SERVER_IPSERVER_PORTSERVER_ID 为服务端对应配置:

[General]
loglevel = info
dns-server = 114.114.114.114, 223.5.5.5
always-real-ip = tracker, apple.com

# Local HTTP CONNECT proxy
interface = 127.0.0.1
port = 1087

# Local SOCKS5 proxy with UDP Associate support
socks-interface = 127.0.0.1
socks-port = 1086

[Proxy]
Direct = direct
Reject = reject

# VMess
VMess = vmess, SERVER_IP, SERVER_PORT, username=SERVER_ID

[Proxy Group]
# fallback 等效于 failover
Fallback = fallback, VMess, interval=6000, timeout=5

# url-test 等效于 failover=false 的 failover
UrlTest = url-test, VMess, interval=6000, timeout=5

Failover = failover, VMess, health-check=true, check-interval=6000, fail-timeout=5, failover=true
Tryall = tryall, VMess, delay-base=0
Random = random, VMess

[Rule]
# 执行文件目录当中必需有 `site.dat` 文件
EXTERNAL, site:category-ads-all, Reject

# 也可以指定 `dat` 文件所在绝对路径,不支持相对路径
EXTERNAL, site:/tmp/geosite.dat:category-ads-all, Reject

IP-CIDR, 8.8.8.8/32, Fallback
DOMAIN, www.google.com, Fallback
DOMAIN-SUFFIX, google.com, Fallback
DOMAIN-KEYWORD, google, Fallback

# 等效于 EXTERNAL, mmdb:us, Fallback
GEOIP, us, Fallback

EXTERNAL, site:geolocation-!cn, Fallback

# 执行文件目录当中必需有 `geo.mmdb` 文件
EXTERNAL, mmdb:us, Fallback

FINAL, Direct

[Host]
# 对指定域名返回一个或多个静态 IP
example.com = 192.168.0.1, 192.168.0.2

如果确保配置全部正确后仍无法通过 VPN 访问目标地址,可尝试更换 端口

OneClick

OneClick 使用较为简单,只需添加服务器配置,选择 VMESS 类型,填入对应信息即可,GitHub 上有一个 OneClick 的 文档仓库 也有详细的使用教程,但 OneClick 中添加的 VMESS 服务器必须包含 Alert ID。

0%