在Vultr VPS上搭建V2Ray+Caddy代理
Page content
准备
本文假设读者已经具备以下条件:
- 一台境外的vps,购买可参考:一些VPS商家整理;
- 一个域名,无备案要求。先设置dns将域名解析到vps的ip,例如www.lockshell.com解析到xxx.xxx.xx.xx。
- 为域名申请一个证书,可以从Let’s Encrypt获取免费证书;本文用到caddy能自动申请。
- 有基本linux技巧,能使用vim/nano等编辑器。
本文用到系统环境及软件版本如下:
- Caddy: 2.x
- V2ray: 4.x
- Vultr VPS一台
- 系统: Ubuntu 20.04
lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description: Ubuntu 20.04.1 LTS
Release: 20.04
Codename: focal
V2ay服务端
安装
curl -O https://raw.githubusercontent.com/v2fly/fhs-install-v2ray/master/install-release.sh
sudo bash install-release.sh
sudo systemctl enable v2ray
sudo systemctl start v2ray
修改配置文件
配置文件位于/usr/local/etc/v2ray/config.json
{
"inbound": {
"port": 8888, # 服务器监听端口
"listen": "127.0.0.1", # 只监听 127.0.0.1,避免除本机外的机器探测到开放了8888端口
"protocol": "vmess",
"settings": {
"clients": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811",
"alterId": 64
}
]
},
"streamSettings": {
"network": "ws", # WebSocket 方式
"wsSettings": {
"path": "/ray"
}
}
},
"outbound": {
"protocol": "freedom", # 主传出协议 这里是直接转发所以流量
"settings": {}
}
}
重启V2Ray
sudo systemctl restart v2ray
检查V2Ray是否成功启动
vpn@sg-vpn:~/v2ray$ ps aux | grep v2ray
nobody 22527 3.2 2.2 4913616 22312 ? Ssl 05:45 0:00 /usr/local/bin/v2ray -config /usr/local/etc/v2ray/config.json
vpn 22545 0.0 0.0 9540 740 pts/1 S+ 05:45 0:00 grep --color=auto v2ray
停止V2Ray
sudo systemctl disable v2ray.service --now
Caddy安装与配置
安装Caddy
sudo apt install curl
sudo apt install -y debian-keyring debian-archive-keyring apt-transport-https
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/gpg.key' | sudo gpg --dearmor -o /usr/share/keyrings/caddy-stable-archive-keyring.gpg
curl -1sLf 'https://dl.cloudsmith.io/public/caddy/stable/debian.deb.txt' | sudo tee /etc/apt/sources.list.d/caddy-stable.list
sudo apt update
sudo apt install caddy
查看一下Caddy版本,因为v1.x跟v2.x的配置文件格式不一样,这里我们安装的是v2。
vpn@sg-vpn:~$ caddy version
v2.1.1 h1:X9k1+ehZPYYrSqBvf/ocUgdLSRIuiNiMo7CvyGUQKeA=
修改caddy配置
sudo vim /etc/caddy/Caddyfile
新建一个Caddyfile,添加如下内容:
your_domain.com:443 {
log {
output file /home/vpn/caddy/access.log
}
root * /home/vpn/caddy/html
file_server
tls {
protocols tls1.2 tls1.3
ciphers TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 TLS_ECDHE_ECDSA_WITH_CHACHA20_POLY1305_SHA256
curves x25519
}
@v2ray_websocket {
path /ray
header Connection *Upgrade*
header Upgrade websocket
}
reverse_proxy @v2ray_websocket localhost:8888
}
- Caddy v1.x 和 v2.x 的配置文件是不兼容的,这里我们采用的是最新的v2
- Caddy监听 443 端口(可以是其他端口)
- Caddy处理 TLS 之后,将流量转发到 V2Ray 的 WebSocket 所监听的内网端口,本例是8888
- V2Ray收到请求后依然 按 Vmess 处理,V2ray服务器端不需要配置 TLS
重启Caddy
vpn@sg-vpn:~/caddy$ pwd
/home/vpn/caddy
vpn@sg-vpn:~/caddy$ ls
access.log Caddyfile html
sudo caddy stop
sudo caddy run --config Caddyfile
V2Ray客户端
服务端部署完成后,可参照下面的教程安装配置不同平台的V2Ray客户端:
- V2Ray Mac客户端:
- V2Ray 安卓客户端: V2Ray 安卓客户端V2RayNG安装及使用
- V2Ray Windows客户端: V2Ray Windows客户端V2RayN安装使用
- 由于iOS中国市场禁止此类软件下载,请在APP Store中切换到中国大陆以外的Apple ID,搜索下载同类客户端。参考V2Ray iOS客户端下载。
客户端配置示例
{
"inbounds": [
{
"port": 1080, # 监听端口
"protocol": "socks", # 入口协议为 SOCKS 5
"sniffing": {
"enabled": true,
"destOverride": [
"http",
"tls"
]
},
"settings": {
"auth": "noauth" #socks的认证设置,noauth 代表不认证,由于 socks 通常在客户端使用,所以这里不认证
}
}
],
"outbounds": [
{
"protocol": "vmess", # 出口协议
"settings": {
"vnext": [
{
"address": "yourdomain.com", # 服务器地址,请修改为你自己的服务器域名
"port": 443, # 服务器端口 443是https使用的端口
"users": [
{
"id": "b831381d-6324-4d53-ad4f-8cda48b30811", # 用户 ID,必须与服务器端配置相同
"alterId": 64 # 此处的值也应当与服务器相同
}
]
}
],
"streamSettings": {
"network": "ws",
"security": "tls", # 客户端的 security 要设置为 tls
"wsSettings": {
"path": "/ray" # 注意:对于 V2Ray,/ray 和 /ray/ 是不一样的
}
}
}
}
]
}
本文由 络壳 原创或整理,转载请注明出处