下列操作均基于5.16.1版本V2ray。
首先是开幕雷击:
/etc/systemd/system/v2ray.service: Special user nobody configured, this is not safe!
原因是默认的 v2ray.service
中配置 User=nobody
,新版systemd
并不建议这么做,建议使用 DynamicUser=yes
,然后必须:
sudo systemctl daemon-reload
不要忘了:
sudo systemctl enable v2ray.service
在5.1.0版本就有有人在GitHub上发issue了↗,但并没有什么回应。
在配置开始前前注意,V2Ray 对于时间有比较严格的要求,要求服务器和客户端时间差绝对值不能超过90秒,与时区无关。配置文件使用JSON格式↗,但从 v2.11 起新增了一个注释功能,配置文件允许 // 和 /**/ 注释↗,此注释格式不包含在JSON 的标准格式内,因此JSON编辑器对此注释格式不兼容,会报错。
首先是较复杂的客户端配置↗,位置在/usr/local/etc/v2ray/config.json
:
{
"inbounds": [
{
"port": 1080, // 监听端口
"protocol": "socks", // 入口协议为 SOCKS 5,此外还支持HTTP
"sniffing": {
"enabled": true,
"destOverride": ["http", "tls"]
},
"settings": {
"auth": "noauth" //认证设置,noauth 代表不认证,由于客户端通常处于内网环境,所以这里不认证
}
}
],
"outbounds": [
{
"protocol": "vmess", // 出口协议
"settings": {
"vnext": [
{
"address": "serveraddr.com", // 服务器地址,填入IP或域名
"port": 16823, // 服务器端口
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811", // 用户 ID,必须与服务器端配置相同
"alterId": 0 // 此处的值也应当与服务器相同
}
]
}
]
}
}
]
}
具体的内容格式还是需要参照官方手册↗。
此处记不清外部地址可以使用下列命令:
curl ip.sb
ip.sb是一个免费网站,还请不要滥用,另外还有在线UUID生成工具。
下面是服务端配置,位置同样在/usr/local/etc/v2ray/config.json
:
{
"inbounds": [
{
"port": 16823, // 服务器监听端口
"protocol": "vmess", // 主传入协议
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811", // 用户 ID,客户端与服务器必须相同
"alterId": 0
}
]
}
}
],
"outbounds": [
{
"protocol": "freedom", // 主传出协议
"settings": {}
}
]
}
配置完成后可以使用如下命令测试:
客户端入站使用http协议
curl -x http_proxy://x.x.x.x:1080 ip.sb
客户端入站使用socks5协议
curl -x socks5://x.x.x.x:1080 ip.sb
注意,curl
代理选项-x
默认使用http
协议。
服务器端配置与客户端类似,从此可以看到v2ray的通用设计思路,但出站协议支持表和入站支持表有所不同。
入站:SOCKS、VMess、VLite、Shadowsocks、HTTP、Dokodemo、Trojan、VLESS
出战:SOCKS、VMess、VLite、Shadowsocks、Shadowsocks2022、Freedom、Loopback、Blackhole、DNS、Trojan、VLESS
可以显著的看到其中不同协议体现出的设计,即传输只设计了vmess这一底层协议,其他以兼容为主,加密主要依赖TLS。具体的协议解释请参照Proxy 代理协议↗
更详细的配置请参考高级篇↗。
最后,别忘记打开对应端口:
打开服务器端口
sudo ufw allow 16823
打开客户端端口
sudo ufw allow 1080
如果更追求安全,可以先确定自身所在网络的NAT出口IP,一般其前两位很稳定,所以可以根据这个特征放行特定IP。
获取外部地址
curl ip.sb
服务器放行对应IP
sudo ufw allow from x.x.0.0/16 to any port 16823
测试
curl -x x.x.x.x:1080 ip.sb