VPS

我与我的 VPS 的故事。服务器运维/代理搭建。

与 VPS 无关的 linux 问题请移步 linux

个人偏好

购买

消息来源

我买到的

Host location Price bandwidth RAM Storage Core saying
20230514 RackNerd San Jose $10.28/yr 1000GB 1Gbps 768MB 10GB 1
装了 Debian 10(后来换成了 12)。美西机 + trojan 真连接常年 700+ms,显然不能做游戏服务器。[1]
20230602 vpslog free 64MB
白嫖的小鸡,纯 v6,太捞只能装 alpine,还要定期续。后来不续了。
20231124 silicloud (BF) Tokyo HK$128/yr 300GB 300Mbps 768MB 20GB 1
提供 archlinux 镜像。没有 rescue。稳定性开始还行,半年后差不多烂完了。
20231212 azure Korea Central $9.xx/mo free unknown 1GB 30GB 1
学生优惠送 $100 现金券,买这个等级的,每年用 10 个月。
20231213 aliyun HK 288CNY/yr free 1024 GB unknown 896MB 40GB 2
香港地区 TG 时常抽风;免费的香港机我想都不敢想()
202403xx wawo US ¥3.73/mo unknown 512MB unknown 1
冲便宜买的,质量很捞,本来是用作测试的。结果半个月给我封了,莫名其妙。于是避雷 wawo 了。
20240518 Churros JP ¥8.9/mo + ¥6 初装 200GB 100Mbps 1GB 5GB 1
silicloud IP 寄了,换台 JP。这家是超级垃圾灵车,非常不稳定
20240714 Akile HK ¥5/mo 200GB 1000Mbps 1GB 5GB 1
akile 很灵车,不推荐。介于 Churros 和 Lamhosting 之间。
20240726 Lamhosting TW ¥10.6/mo(coupon -¥2) 512GB 1000Mbps 512M 10GB 1
有点灵,TW ping 都有 190ms… 比 akile 稳一点,但不算太多
20240820 SurfCloud HK $1/mo 200GB 30Mbps 1G 40GB 1
银联付款,需要编辑防火墙,便宜实惠。缺点是太慢了点…
20240911 YXVM JP $3/mo 1TB 500Mbps 768MB 5GB 1
买这家要靠抢。刚开始不错,稳定性高,延迟低。后面炸了几次,每天晚上可用性也大幅降低了。两个月弃坑。
20241018 azure JP free ? 1G 30G 1 微软,我的超人
20241031 91idc HK ¥10/mo 666GB 20MBps 1G 10G 1
优惠码无法使用;带宽偏低;新商家,稳定倒是挺稳定的
20250107 Sakura Clouds HK $2.50/mo $2.20 2TB 1Gbps 1G 8G 1
速度还行,但是延迟和稳定性超烂,没有下次了。
20250109 ClawCloud JP $36.00/yr $7.00/yr 500GB 1G 20G 1
阿里云“上游”,超级好价 + 稳定 + 高速,神中神血赚。爽用了 9 个月,之后开始出现稳定性下降、延迟增大等问题。2026 年已死
20250404 nube.sh JP $0.0012/h + $0.0031/GB 不限 1GB 10GB 1 测评;
前端好评;一次最少充 $10,试错成本挺高;延迟一般,特别是联通很烂。
用了一个月,连通性差了很多,基本是不可用状态,纯纯狗屎
20250805 skystroll JP $2.49/mo 1T 500Mbps 512M 5GB 1
刚买的时候 IP 国内就是 ping 不通的。然后开的工单一天后才回复,换了个 IP 还得重装才能用。这家虽然延迟还行,但是 IP 是真的垃圾,稳定性也很灵车,经常用一半突然断了。
20250820 RFCHOST JP $29.99/yr + ¥45 1T 不限 512M 10GB 1
看评测挺不错的,延迟很低,价格也合适,于是在 nodeseek 上蹲了几天蹲到一个。溢价还是有点高,因为第二天就有更合适的出现了,不过也不用在乎这么多。
20250827 dedirock US (LA) $7/yr 2T 1Gbps 2G 30G 1
手上只有 JP 机确实让我感受到一些限制,例如禁漫就没法登上去。刚好看到便宜美西机,所以搞了个,延迟就无所谓了。注意 paypal 付款会被自动订阅一个续费需要去取消掉。这家的官网从 JP 加载贼慢,但是机子还挺不错。延迟不会超过 200ms,已经算好了。但是几个月后网络质量大幅下降,经常断连
20251205 ACCKCloud JP ¥14.88/mo 500GB 500Mbps 512M 8G 1
IIJ,到上海电信延迟非常不错(40ms)。最可惜的是 IP 有点脏,在 Google Gemini、nhentai、garnix 都会被拦,我不太能接受。(acck 家的整个 156.231.140.1 gw 的 ip 段都是脏的)
Update 20260731:报道称 acck 明文存储用户密码,并且已经泄漏,那很弱智了。
20260304 vpshostingservice US(LA) ¥11/yr 无限流量 1Gbps 共享端口 1G 15G 1
评测,能加密货币付款,第三方平台支持很多链,不错。网络质量吃运营商,家里比较烂但是公司里还可以用。优惠码是长期的,11 刀还要什么自行车。
20260817 YT.NET JP ¥22/mo 1T 500Mbps 1G 10G 1
待续

白嫖

阿里云和 Azure 理论上都是不能当代理机用的,不过真拿来跑,自用的话它们也不管。

工具

SSH

没啥用的

youtube 上(与其他教程)清一色的 finalshell,但是这种不开源的小作坊国产软件我不用。不过话说回来,对不会用 linux 的小白,finalshell 门槛确实低(图形文件系统和编辑器)。

先用了 SuperPuTTY,体验挺差,真不如用 cli。差点忘了我有 ArchWSL,于是直接 sudo pacman -S openssl 了(。后来转 linux 后就没 ssh 这烦恼了。

说回来,其实 windows 好像是有自带(?) ssh 的。

用法:ssh root@ip [-p port]

别名

建立一个 别名 -> VPS(用户 + ip + 端口) 的映射关系。

# edit ~/.ssh/config
Host <name>
  User root
  Hostname <ip>
  Port 22

添加公钥

由于 vps 暴露在公网,因此需要复杂的密码,但我肯定不想每次登录都需要输那么一长串的密码,因此需要将公钥添加到 vps。

ssh-copy-id hostname

cat ~/.ssh/id_*.pub 并复制,再粘贴到 vps 的 ~/.ssh/authorized_keys 内。

允许 root

一般的 vps 都是允许 root 登录的,但是像 azure 这些“大厂”则不行。所以需要用户进去改 ssh 配置。

sh
sudo vim /etc/ssh/sshd_config
# 设置:
# PermitRootLogin yes
# PasswordAuthentication yes
# PubkeyAuthentication yes
sudo systemctl restart sshd

端口转发

将来自端口 <from> 的流量转发到 <to>

sh
socat TCP-LISTEN:<from>,reuseaddr,fork TCP:localhost:<to> # 最简型
socat -dd -lf <log_file> TCP-LISTEN:<from>,reuseaddr,fork TCP:localhost:<to>  # 复杂型
socat -dd -lf <log_file> -F port_forwarding.conf  # 泛用型

socat 默认在终端前台进行端口转发,需要后台运行的话可以写个服务,或者终端复用。

sh
firewall-cmd --add-forward-port=port=<from>:proto=udp:toport=<to> --permanent

我的设置

  1. 增加 UDP Buffer Sizes
  2. 如果 VPS 没开 bbr 记得开。(参考 11. sysctl 相关)

安全性

VPS 的公网 ip 会带来安全性问题,不过尝试登录的多,真正攻进去的也几乎没有。

自检

解法

防火墙

sh
systemctl <start | enable | stop | disable> firewalld
firewall-cmd --state
firewall-cmd --reload   # after change
firewall-cmd --add-masquerade --permanent   # 伪装
firewall-cmd --add-port=<port>/tcp --permanent  # 永久放行
firewall-cmd --zone=public --list-all
firewall-cmd --zone=public --list-ports

代理

不要把证书放在 /root !!! 我又不能改 /root 权限,代理服务端又会出一大堆权限问题,日志还不好看。

协议

网上小白教程比较多的是 vmess/vless + ws + tls 的方案,这些协议比较老,基本被打烂了。我选择 trojan,也是一个比较常见的方案,相对来说安全性更高。trojan 使用 TLS 加密方案,安全性高,但是数据包比较大,现在也存在着 trojan 检测技术。

我最开始直接用 trojan 一键脚本[2]。如 GFW 会主动对端口进行封禁,我的端口基本只能存活一天。(后来做了端口转发就基本没死了,偶尔会被 Qos(?))

随着后来自己也使用 linux,我对于一键脚本不够满意,因此开始自己写 trojan/trojan-go 配置文件。也尝试了一下 hysteria 协议,并且写了个教程。

评价起来就是,hysteria 延迟最低,trojan-go 小幅度落后,差得不多。trojan 延迟比较大,但是胜在兼容性强。而 hysteria 风险较大,没必要为了几十 ms 延迟去冒险,因此还是 trojan-go 适合我。

脚本

WARP

有的 IP 访问 Google 时会有机器人异常验证。可以用 WARP 一键脚本解决。

对抗 GFW

GFW 检测到异常就会封禁端口,若换端口继续使用则需要考虑 ip 被永久封禁的风险。trojan 本身是 TLS over TLS 加密方式,但仍然有办法识别出流量特征。

我使用如下方式降低封锁几率(有没有用其实是不太清楚的):

清理僵尸进程

如果你看到许多 [journalctl] <defunct> 标识,这代表有未结束的僵尸子进程。可以参考此处清理他们。

sh
top -b1 -n1 | grep Z    # find
ps -A -ostat,ppid | grep -e '[zZ]'| awk '{ print $2 }' | uniq | xargs ps -p # Find the parent of zombie processes, remenber ppid
kill -s SIGCHLD <ppid>
top -b1 -n1 | grep Z    # Identify if the zombie processes have been killed
# if haven't been killed, just kill <ppid>

运维

虽然我非常菜,但还是姑且记录一些心得。由于有的服务器是公家的,想干点啥总是感觉束手束脚。。

  1. 如果是自己的服务器,那肯定先把常用工具下载好。
    • 公家服务器如果有权限安装软件,也可以装一些典型的/极大增加效率的。例如 fish, zoxide
  2. ssh 保活用的 screen 而不是 tmux。一些基础命令,加一个删除命令,加一个 <C-a> [ 进 copy mode 然后可以往上滚的命令。
    • 当然不缺配置的话就用 zellij 了。

挂机

VPS 的流量可以共享,并且可以赚点小钱(src)。为了防止 IP 被污染,一般放在非主要的 VPS 上跑。

跑挂机的 VPS 就变成美国最抢手了,毕竟 openai 流媒体啥的都能解。(我的 jp 机就没法解 openai)

一般挂机都拿 docker 跑,我当然!用 podman 啦。

先挂着,到时候再看看收益。

遇到的问题

无法使用密钥登录

某天服务器突然无法使用密钥验证登录了。查一下日志,发现一句:Authentication refused: bad ownership or modes for directory /root。

我确实改过 /root 的权限,因此改回 750 即可。

卡在 Reloading system manager configuration

archlinux 的服务器,每次安装软件都卡在 Reloading system manager configuration,卡大约 1min。

尝试了一下 systemctl daemon-reload 也卡住了。

然后根据这个回答,罪魁祸首是 netplan(netplan 是 cloud-init 的可选依赖。而 cloud-init 是 VPS 自带的玩意)于是卸载,问题解决——

才怪。服务器重启就连不上 ssh 了。。。

这就不得不说,我这次买的 vps,silicloud 家的并没有 rescue 服务。还好我乱搞炸的是网络而不是系统,用 VNC 面板进去修就行了。

所以这个问题是无解的,或许得等我哪天琢磨出换个 vps 联网手段才行吧。

ps. 群里也有相同问题的。

端口被封问题

20230520:端口每天被封一次,于是写了个 fish 脚本每天更换端口并显示在伪装页面上映射到 12138(还作出了其他努力)。脚本还是有 bug 的(我菜),$temp 赋值不成功,但无伤大雅。

不应同时使用 firewalld 和 iptables,可能会导致混乱。由于 firewalld 是更高一层的抽象(?),因此我使用之:

sh
systemctl stop iptables
systemctl disable iptables
systemctl mask iptables
systemctl unmask firewalld
systemctl enable firewalld
systemctl start firewalld

后来采用端口转发和伪装后就没被封过端口了 www

配置了错误的 firewalld 把自己防住了

20230516:如题,乱搞 firewalld,结果忘记放行 22 端口(ssh)直接 reload,直接把我 ssh 干掉了。。。然后进 rescue mode 抢救了...

rescue mode 是 VPS 服务商的一项服务,可以将 VPS 挂载到另一个虚拟机上,通过其对文件进行备份与修改,适用于乱搞把 VPS 搞炸了的情况。

rescue 只有 nano file editor;挂载了分区到 test 以后,直接 nano /test/etc/firewalld/zones/public.xml 加上 <port port="22" protocol="tcp"/>。

X-UI does not work

我小白一个,只会跟着用简单的一键部署脚本,然后寄了。面板添加节点后,使用 v2rayN 添加服务器无法连上。

后面换了 trojan 面板,能正常用一阵子,但稳定性一般。

顺带,x-ui 在 alpine 的表现可谓是《惊艳》到我了,,,

~# x-ui install
> [ERR] 面板启动失败,可能是因为启动时间超过了两秒,请稍后查看日志信息
~# x-ui log
> [ERR] 请先安装面板

external

  1. 节点搭建系列教程 - 不良林,在一众垃圾 youtube 教程中算是讲得比较透彻的。
  2. vps2arch:为你的 vps 安装 arch!
  3. 使用一键脚本,部署 Hysteria 2 协议节点

  1. 本想买 CloudServer 的(明显同价位的配置更好),然而账号被标记了危险无法付款...因此只能退而求其次买了 RackNerd 家的。 ↩︎

  2. 本来是想用 X-UI 的,然而出了问题 ↩︎