目标与最终架构
这次配置的目标,是购买一台海外 VPS,并将其作为个人服务器使用,似乎还有一些神秘的作用(大雾)。
最后采用了下面的配置:
- 服务端:Ubuntu VPS
- 代理核心:sing-box
- 协议:Shadowsocks 2022
- 客户端:Clash Verge / Mihomo
- 代理端口:TCP + UDP 443
- 分流模式:Rule
- 国内流量:DIRECT
- 指定国外服务:通过 VPS
最终网络结构大致如下:
┌──── 国内网站 / 普通流量
│
│ DIRECT
│ │
电脑 / Clash Verge ─┤ ▼
│ 本地网络
│
│
└──── ChatGPT / Google / YouTube 等
│
▼
Shadowsocks 2022
│
▼
美国 VPS :443
│
▼
Internet这种方式最大的优点,是可以利用 Clash/Mihomo 的规则系统,只让真正需要代理的流量经过 VPS,从而减少 VPS 流量消耗(其实我也不是很懂)
选择你心仪的对象
其实我根本不懂什么参数,我只会问问 ai 大人,让他帮我全网检索相关信息。
ai 大人在深思熟虑之后给我提供了几个选项,然后就看中了现在的这款,每个月只需要 20-30 块钱,性能比较垃圾但好在够用。
付款部署完之后我们应该干啥呢?当然是继续询问 ai 大人… chat 给我列出了一系列的步骤,接下来试试跟着它干吧。
配置过程
在首次通过平台提供的密码登录后,首先进行系统更新
apt update
apt upgrade -y为了方便以后连接服务器,选择配置密钥对进行登录。
刚开始查询的时候发现当前 vps 禁止 ssh 密钥对,修改一下配置为 yes 即可
root@VM-qGcZ14MraO:~/.ssh# sshd -T | grep -E 'pubkeyauthentication|authorizedkeysfile|permitrootlogin'
permitrootlogin yes
pubkeyauthentication no
authorizedkeysfile .ssh/authorized_keys .ssh/authorized_keys2接下来就可以在主机上生成密钥对了
# -t 使用的算法
# -C 使用的名称
# -f 保存的路径
ssh-keygen -t ed25519 -C "my-vps" -f ~/.ssh/id_ed25519_myvps接下来通过密码正常通过 ssh 进入 vps,创建相关目录。
把本地 .pub 文件中的完整公钥粘进去并保存。然后设置权限:
mkdir -p /root/.ssh
chmod 700 /root/.ssh
vim /root/.ssh/authorized_keys
# 复制你的公钥到 authorized_keys 中
chmod 600 /root/.ssh/authorized_keys
chown -R root:root /root/.ssh主机上验证,并配置 ssh config。
ssh -i "$HOME\.ssh\id_ed25519_myvps" root@YOUR_VPS_IP
C:\Users\你的用户名\.ssh\config
Host myvps
HostName YOUR_VPS_IP
User root
IdentityFile ~/.ssh/id_ed25519_myvps
IdentitiesOnly yes安装 sing-box
接下来我们需要一个东西转发我们的流量,这里选择使用了 sing-box 监听转发我们主机发来的流量。
- 在 VPS 上监听端口,比如 443
- 接收 Clash Verge 发来的加密代理流量
- 解密后再由 VPS 访问目标网站,并把结果返回给客户端
安装 sing-box,并检查 443 是否已经被占用
curl -fsSL https://sing-box.app/install.sh | sh
ss -lntup | grep ':443 '如果没有输出,就可以让 sing-box 使用 TCP/UDP 443。之后生成 Shadowsocks 密钥,建立目录:
mkdir -p /etc/sing-box
chmod 700 /etc/sing-box生成 16 字节 Base64 密钥,并设置权限
sing-box generate rand --base64 16 \
> /root/ss-password.txt
chmod 600 /root/ss-password.txt读取密码:
SS_PASSWORD=$(cat /root/ss-password.txt)
vim /etc/sing-box/config.json
# 写入以下配置
{
"log": {
"level": "info",
"timestamp": true
},
"inbounds": [
{
"type": "shadowsocks",
"tag": "ss-in",
"listen": "::",
"listen_port": 443,
"method": "2022-blake3-aes-128-gcm",
"password": "YOUR_SS_PASSWORD"
}
]
}
chmod 600 /etc/sing-box/config.json- 设置开机启动:
systemctl enable sing-box - 启动或重启:
systemctl restart sing-box - 查看状态:
systemctl status sing-box --no-pager -l
日志类似这个样子:
INFO inbound/shadowsocks[ss-in]:
tcp server started at [::]:443
INFO inbound/shadowsocks[ss-in]:
udp server started at [::]:443
INFO sing-box started到这里,VPS 服务端已经配置完成。
配置 Clash(基于 Mihomo 内核)
我们大概需要这些东西:
-
监听一个端口
-
允许局域网访问
-
按照规则分流
-
使用 ipv4
-
指定服务地址、端口、协议、密钥用于连接
-
可能需要 TUN 模式
有了这些需求,让 ai 大人再帮我们搓一个配置应该不是什么难事吧(
还可以干些啥?
我的博客已经通过 Hugo 框架通过薅羊毛的方式部署在 cloudfare page 上面了,每个月能免费构建好几千次呢,远远超出了我的使用需求了。不过以后如果有需求的话把博客迁移到 vps 上也不是不可以。但是也没那个必要似乎。
或者留着以后拿来当测试机也不错,总之就先这样就好。