Install
Server
Refer to https://www.v2fly.org/guide/install.html#macos-%E5%AE%89%E8%A3%85%E6%96%B9%E5%BC%8F
Linux
安装和更新 V2Ray
// 安装可执行文件和 .dat 数据文件
# sudo bash <(curl -L https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh)
$ sudo systemctl enable v2ray; sudo systemctl start v2ray
Refer to https://github.com/v2fly/fhs-install-v2ray/blob/master/README.zh-Hans-CN.md
masOS
$ brew install v2ray
随命令一起下载的 geosite.dat 和 geoip.dat 放置在 /usr/local/share/v2ray/
目录下。
Docker
docker run --rm v2fly/v2fly-core help
docker run --name v2ray v2fly/v2fly-core $v2ray_args (help, eun etc...)
docker run -d --name v2ray -v /path/to/config.json:/etc/v2fly/config.json -p 10086:10086 v2fly/v2fly-core run -c /etc/v2fly/config.json
# If you want to use v5 format config
docker run -d --name v2ray -v /path/to/config.json:/etc/v2fly/config.json -p 10086:10086 v2fly/v2fly-core run -c /etc/v2fly/config.json -format jsonv5
Ref https://github.com/v2fly/docker
Config
Server
在 Linux 中,配置文件通常位于 /etc/v2ray/
或 /usr/local/etc/v2ray/
目录下。运行 v2ray --config=/etc/v2ray/config.json
,或使用 systemd 等工具将 V2Ray 作为服务在后台运行。
# 查看配置文件的路径
$ sudo systemctl status v2ray
配置
# 生成一个uuid,一替代下面的uuid
$ v2ray uuid
$ sudo vim /usr/local/etc/v2ray/config.json
{
"inbounds": [
{
"port": 10086,
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811"
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom"
}
]
}
服务器的配置中需要确保 id
和端口与客户端一致,就可以正常连接了。
Client
在你的 PC(或手机)中,需要用以下配置运行 V2Ray
$ vim ~/Downloads/v2ray.json
{
"inbounds": [
{
"port": 1081, // SOCKS 代理端口,在浏览器中需配置代理并指向这个端口
"listen": "127.0.0.1",
"protocol": "socks",
"settings": {
"udp": true
}
}
],
"outbounds": [
{
"protocol": "vmess",
"settings": {
"vnext": [
{
"address": "server", // 服务器地址,请修改为你自己的服务器 ip 或域名
"port": 10086, // 服务器端口
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811"
}
]
}
]
}
},
{
"protocol": "freedom",
"tag": "direct"
}
],
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
{
"type": "field",
"ip": [
"geoip:private"
],
"outboundTag": "direct"
}
]
}
}
$ v2ray run -c /usr/local/share/v2ray/config.json
上述配置唯一要更改的地方是你的服务器 IP,配置中已注明。上述配置会把除局域网(比如访问路由器)以外的所有流量转发至你的服务器。
配置文件参数
https://www.v2ray.com/chapter_02/
运行
- 在 Windows 和 macOS 中,配置文件通常是 V2Ray 同目录下的
config.json
文件。直接运行v2ray
或v2ray.exe
即可。 - 在 Linux 中,配置文件通常位于
/etc/v2ray/
或/usr/local/etc/v2ray/
目录下。运行v2ray run -c /etc/v2ray/config.json
,或使用 systemd 等工具将 V2Ray 作为服务在后台运行。
$ v2ray run -c /usr/local/share/v2ray/config.json
Logs
通过下面的配置,可以更好的debug
{
"log": {
"loglevel": "debug"
}
}
路由
路由规则设定
Refer to https://toutyrater.github.io/routing/configurate_rules.html
GFWList 黑名单模式
{
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
// 第一条规则
{
"type": "field",
"outboundTag": "proxy", // 代理的 tag
"domain": ["ext:h2y.dat:gfw"] // 中国大陆网站
},
// 第二条规则
{
"type": "field",
"outboundTag": "direct", // freedom 的 tag
"network": "udp,tcp"
}
]
}
}
如上面的配置,就是简单的白名单模式。规则从上往下一次匹配,首先是 ext:h2y.dat:gfw,这可以认为是 GWFList 的另一种形式,使用方式见域名文件小节。第一条规则中,outboundTag 是 proxy,则表明中国大陆网站直连。在第二条规则中,netwrok 为 udp,tcp,而且没有指定 domain 和 IP,这条规则本身表示所有流量,但是它位于第一条规则之后,也就是代表着除 GFWList 之外的所有域名都会匹配第二条规则,这样只指定了"network": “udp,tcp”,并且指定"outboundTag": “direct”,我们可以理解为上面所有规则都不匹配的情况下则默认为 direct。这正是前面说的黑名单模式:如果访问的网站被收录在 GFWList 里,那么访问这个网站会走代理,否则直连。这种黑名单模式我认为比较适合于主要上国内网站,只是偶尔上一下国外且是知名大公司的网站,这种情况下遇到不收录在 GFWList 的国外域名概率比较低。
这里解释一句,从 V2Ray 项目发起至今,有许多网友请求集成 GFWList,但 V2Ray 始终没有做,这是有原因的。一是因为 GFWList 是 GPL 许可,没法直接用;二是因为 Raymond 认为 GFWList 项目形式不利于维护(大致意思,不是原话)。
ChinaList 白名单模式
{
"routing": {
"domainStrategy": "IPOnDemand",
"rules": [
// 第一条规则
{
"type": "field",
"outboundTag": "direct", // freedom 的 tag
"domain": ["geosite:cn"] // 中国大陆网站
},
// 第二条规则
{
"type": "field",
"outboundTag": "proxy",
"network": "udp,tcp"
}
]
}
}
如上面的配置,就是简单的白名单模式。规则从上往下一次匹配,首先是 geosite:cn,geosite 是 Project V 下 domain list community 项目生成的域名列表文件,收录了许多主要网站的域名,此处的 geosite:cn 表示其中收录的中国大陆网站的域名。第一条规则中,outboundTag 是 direct,则表明中国大陆网站直连。在第二条规则中,“network”: “udp,tcp”,并且指定"outboundTag": “direct”,即不匹配 ChinaList 时走代理。这正是前面说的白名单模式。这种白名单模式我认为比较适合于主要上国外网站的,国内的几乎是上大公司的网站,这种情况下遇到不收录在 geosite:cn 的国内域名概率比较低。
域名文件
外置的域名文件
很多时候,V2Ray 内置的国内域名不能满足使用。不过 V2Ray 可以使用外部自定义的像 geosite.dat 这样的域名文件,刚好我也制作了一个,可以供大家使用。
-
到 https://github.com/ToutyRater/V2Ray-SiteDAT/tree/master/geofiles 下载 h2y.dat 文件放到 V2Ray 运行文件的目录下。
-
按需要写路由规则,格式为 “ext:h2y.dat:tag”。ext 表示使用外部文件;h2y.dat 是具体的文件名;tag 泛指标签,有哪些标签由文件提供。步骤 1 下载的 h2y.dat 文件目前只有
ad
和gfw
两个标签,ad 包含着常见的广告域名,gfw 包含着常见的被 gfw 屏蔽的域名。它们各自所包含的域名在这里可以看到。这个域名文件每星期自动更新,如果你使用了我提供的域名文件也请定期更新(打开 https://github.com/ToutyRater/V2Ray-SiteDAT/tree/master/geofiles 看到的都是当时的最新版本)。路由配置示例如下。 -
运行 V2Ray。
"rules":[ { "type": "field", "outboundTag": "block", //拦截广告相关域名 "domain": [ "ext:h2y.dat:ad" ] }, { "type": "field", "outboundTag": "proxy", //被 gfw 屏蔽的域名走代理 "domain": [ "ext:h2y.dat:gfw" ] }, { "type": "field", "network":"tcp,udp", "outboundTag": "direct" // 默认直连 } ]
因为使用了 gfw 列表的用户,通常是想要默认情况下直连,但有时候习惯上在 outbounds 的第一个是代理的出站,所以在上面的配置中,最后加了一条直连的规则。那个
network:"tcp,udp"
是为了让所有流量都能匹配上。
生成 site.dat 文件
下载
使用:
# 修改/添加sites文件夹下的域名文件
# 运行,以生成geosite.dat
$ chmod 777 v2sitedat; ./v2sitedat
# 把生成的 geosite.dat 重命名,并复制到 /usr/local/Cellar/v2ray/4.44.0/share/v2ray/ 下
Ref
DNS
Reference
- https://www.v2fly.org/guide/install.html
- https://toutyrater.github.io/routing/sitedata.html
- https://github.com/v2fly/fhs-install-v2ray/blob/master/README.zh-Hans-CN.md