「 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 文件至本地,修改扩展名为 .zip,unzip 解压到本地文件夹中,在 Chrome 扩展程序 中 加载已解压的扩展程序,选择解压路径,即可完成插件安装。

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

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

iOS

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

Leaf

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

App 中需添加一个配置,示例如下,注意修改其中的 SERVER_IP、SERVER_PORT 和 SERVER_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%