Share

外观
风格

vps-proxy

2026年2月7日 · 技术

VPS & 代理管理

管理 envvar 的 VPS 服务器和代理服务。


服务器清单

名称 IP Tailscale IP 位置 SSH 连接 用途
新加坡 (AWS Lightsail) ssh <REDACTED_TOKEN> Hysteria2 代理
jgw 日本 (Oracle) ssh jgw Hysteria2 代理
hk 香港 ssh hk Hysteria2 代理
zgo-rsc - ssh zgo Hysteria2 代理

Tailscale 自建 DERP(CHEN.RS)

用途:当 Tailscale 无法直连(NAT/UDP 受限)时,作为中继(DERP + STUN)。

当前状态(2026-02-06):<REDACTED_TOKEN>derper 已执行 stop + disable,自建 DERP 已下线(保留历史配置供回滚参考)。

购买的 DERP(seset /

你之前购买的香港 DERP:<REDACTED_TOKEN> (<REDACTED_IP>),端口 DERP 30010 / STUN 30011

卖家要求 omitDefaultRegions: true 的常见原因是:如果不屏蔽官方 DERP,你的设备在需要走中继时可能会优先选官方(延迟更低/更稳定),导致他家的节点“买了但看起来没用”,也不好排障;这不代表技术上“必须”屏蔽官方才能工作。

tailscale debug derp HK01 常见提示:

  • generate_204(80 端口)不通:这是 captive portal check,不影响 DERP 转发;想消掉只能让卖家开放 http://<REDACTED_TOKEN>/generate_204
  • IPv6: lookup ... no such host:卖家域名没配 AAAA,不影响 IPv4 使用。
// 购买的 seset DERP(按卖家给的写法)
{
  "regionID": 901,
  "regionCode": "HK01",
  "regionName": "Hong Kong (seset)",
  "nodes": [
    {
      "name": "901a",
      "regionID": 901,
      "hostName": "<REDACTED_TOKEN>",
      "ipv4": "<REDACTED_IP>",
      "derpPort": 30010,
      "stunPort": 30011
    }
  ]
}

域名与 A 记录(Cloudflare 必须 “仅 DNS / 灰云”)

  • <REDACTED_TOKEN><REDACTED_IP>
  • <REDACTED_TOKEN><REDACTED_IP>
  • <REDACTED_TOKEN><REDACTED_IP>

端口要求(公网入站)

DERP 不是普通 Web 服务,不要放在任何反代/CDN 代理后面。

  • TCP 443:DERP(TLS)
  • TCP 80:ACME//generate_204(建议开启,否则客户端可能报 captive portal warning)
  • UDP 3478:STUN

服务管理(每台机器)

systemd 服务名:derper

sudo systemctl status derper --no-pager -l
sudo journalctl -u derper -n 200 --no-pager
sudo systemctl restart derper

证书与节点 key:

sudo ls -la /var/lib/derper
# 会看到 derper.key、acme_account+key、derp-xxx.chen.rs

Tailscale derpMap(建议先保留官方节点)

说明:Tailscale 永远优先直连,只有直连失败(或暂时还没打洞成功)才会走 DERP。 所以你看到 tailscale ping xxx 显示 via <公网IP:端口> 是正常的(说明直连成功);要看 DERP 是否生效,优先看 tailscale netcheck / tailscale debug derp-map

最终配置(屏蔽官方,只用你定义的几组 DERP)

"derpMap": {
  "omitDefaultRegions": true,
  "regions": {
    "901": {
      "regionID": 901,
      "regionCode": "HK01",
      "regionName": "Hong Kong (seset)",
      "nodes": [
        { "name": "901a", "regionID": 901, "hostName": "<REDACTED_TOKEN>", "ipv4": "<REDACTED_IP>", "derpPort": 30010, "stunPort": 30011 }
      ]
    },
    "902": {
      "regionID": 902,
      "regionCode": "HK02",
      "regionName": "Hong Kong (CHEN.RS)",
      "nodes": [
        { "name": "902a", "regionID": 902, "hostName": "<REDACTED_TOKEN>", "ipv4": "<REDACTED_IP>", "derpPort": 443, "stunPort": 3478 }
      ]
    },
    "903": {
      "regionID": 903,
      "regionCode": "JP01",
      "regionName": "Japan (CHEN.RS)",
      "nodes": [
        { "name": "903a", "regionID": 903, "hostName": "<REDACTED_TOKEN>", "ipv4": "<REDACTED_IP>", "derpPort": 443, "stunPort": 3478 }
      ]
    },
    "904": {
      "regionID": 904,
      "regionCode": "SG01",
      "regionName": "Singapore (CHEN.RS)",
      "nodes": [
        { "name": "904a", "regionID": 904, "hostName": "<REDACTED_TOKEN>", "ipv4": "<REDACTED_IP>", "derpPort": 443, "stunPort": 3478 }
      ]
    }
  }
}

验证(本机):

tailscale debug derp-map
tailscale netcheck
tailscale debug derp HK01
tailscale debug derp HK02
tailscale debug derp JP01
tailscale debug derp SG01

Tailscale Exit Node(把某台 VPS 当“默认出网”)

注意:DERP 只是中继;Exit Node 才是“把全网流量走某台机器”。 如果你把 zgo-rsc 选为 Exit Node,出现“连上了但上不了网/解析不了域名”,通常是 Exit Node 或本机 DNS 配置导致。

本机快速恢复(macOS)

先退回直连出网:

sudo tailscale set --exit-node=

如果仍然提示 cannot resolve ...(DNS 异常),先临时关闭接管 DNS 再试:

sudo tailscale set --accept-dns=false
sudo dscacheutil -flushcache
sudo killall -HUP mDNSResponder

然后再决定是否重新启用 Exit Node:

# 重新选择 exit node(示例)
sudo tailscale set --exit-node=zgo-rsc

一键测速脚本(对比 Exit Node / 小火箭 / 直连)

脚本:tools/net-bench.sh

输出:默认写到 ~/Downloads/net-bench/*.log(文件名带 UTC 时间和 label)

示例(每次切换网络形态后跑一遍,方便对比):

# 直连
./tools/net-bench.sh --label direct

# Tailscale Exit Node(例如 zgo-rsc)
./tools/net-bench.sh --label ts-exit-zgo

# 小火箭/Hysteria2(手动切好再跑)
./tools/net-bench.sh --label rocket-hy2

说明:

  • 脚本会测:当前出口 IP、Tailscale netcheck、DNS(只在 Tailscale 在线时测 100.100.100.100)、以及 Cloudflare 的下载吞吐(小流量,默认 5MB/20MB/80MB)。
  • ping/ICMP 不稳定,不作为“能不能上网”的判断;脚本用 curl 的时序/吞吐来比更靠谱。

BBR(TCP 拥塞控制)

BBR 主要影响 TCP(网页/HTTPS/部分视频流),对 WireGuard/Tailscale 数据面(UDP)没直接帮助;对 Hysteria2(UDP/QUIC)也不一定明显。

当前状态(2026-02-02):

  • <REDACTED_TOKEN>:已是 bbr + fq
  • zgo-rsc:已启用 bbr + fq(写入 /etc/sysctl.d/99-bbr.conf

验证:

sysctl net.ipv4.tcp_congestion_control net.core.default_qdisc

云厂商防火墙备注

AWS Lightsail(

aws lightsail get-instance-port-states --region ap-southeast-1 --instance-name AlmaLinux-1
aws lightsail open-instance-public-ports --region ap-southeast-1 --instance-name AlmaLinux-1 --port-info fromPort=80,toPort=80,protocol=tcp,cidrs=0.0.0.0/0
aws lightsail open-instance-public-ports --region ap-southeast-1 --instance-name AlmaLinux-1 --port-info fromPort=443,toPort=443,protocol=tcp,cidrs=0.0.0.0/0
aws lightsail open-instance-public-ports --region ap-southeast-1 --instance-name AlmaLinux-1 --port-info fromPort=3478,toPort=3478,protocol=udp,cidrs=0.0.0.0/0

Oracle Cloud(jgw)

除了机器内 iptables,还要去 Oracle 控制台的 Security List/NSG 加入站规则(否则公网连不上):

  • TCP 80 / 443(0.0.0.0/0
  • UDP 3478(0.0.0.0/0

Clawdbot Gateway(

当前配置为 loopback(给 macOS “Remote over SSH” 用):

  • Gateway:ws://127.0.0.1:18789(通过 SSH tunnel 访问)
  • Dashboard:http://127.0.0.1:18789/(通过 SSH tunnel 访问)

运维:

ssh <REDACTED_TOKEN>
source ~/.clawdbot/<REDACTED_TOKEN>
~/.npm-global/bin/clawdbot status --plain
systemctl --user restart clawdbot-gateway.service
tail -n 200 /tmp/clawdbot/<REDACTED_TOKEN>

更多细节见:knowledge/<REDACTED_TOKEN>


Hysteria2 配置

服务端配置路径

/etc/hysteria/config.yaml

服务管理命令

# 启动/停止/重启
sudo systemctl start hysteria-server
sudo systemctl stop hysteria-server
sudo systemctl restart hysteria-server

# 查看状态
sudo systemctl status hysteria-server

# 查看日志
journalctl -u hysteria-server -f

客户端导入链接 (Shadowrocket/Clash)

AWS1 (新加坡)

hysteria2://<REDACTED_AUTH>@<REDACTED_IP>:443?insecure=1&sni=bing.com#AWS-SG

JGW (日本)

hysteria2://<REDACTED_AUTH>@<REDACTED_IP>:443?insecure=1&sni=bing.com#JGW-JP

HK (香港)

hysteria2://<REDACTED_AUTH>@<REDACTED_IP>:443?insecure=1&sni=bing.com#HK

ZGO-RSC

hysteria2://<REDACTED_AUTH>@<REDACTED_IP>:443?insecure=1&sni=bing.com#ZGO-RSC

安装 Hysteria2

# 一键安装
curl -fsSL https://get.hy2.sh/ | sudo bash

# 生成自签证书
sudo openssl ecparam -name prime256v1 -genkey -noout -out /etc/hysteria/server.key
sudo openssl req -new -x509 -key /etc/hysteria/server.key -out /etc/hysteria/server.crt -days 36500 -subj '/CN=bing.com'
sudo chown hysteria:hysteria /etc/hysteria/server.*

# 配置文件模板
cat > /etc/hysteria/config.yaml << 'EOF'
listen: :443

tls:
  cert: /etc/hysteria/server.crt
  key: /etc/hysteria/server.key

auth:
  type: password
  password: <REDACTED_TOKEN>

masquerade:
  type: proxy
  proxy:
    url: https://www.bing.com
    rewriteHost: true
EOF

# 启动
sudo systemctl enable hysteria-server
sudo systemctl start hysteria-server

Oracle Cloud 注意事项

Oracle 默认防火墙很严,需要:

  1. iptables 开放端口
sudo iptables -I INPUT 6 -p udp --dport 443 -j ACCEPT
sudo iptables-save | sudo tee /etc/iptables/rules.v4
  1. 安全列表添加规则(在 Oracle Cloud 网页后台)
    • 源 CIDR: 0.0.0.0/0
    • IP 协议: UDP
    • 目标端口: 443

服务器优化

# 开启 BBR
echo 'net.core.default_qdisc=fq' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv4.tcp_congestion_control=bbr' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

# 开启 IP 转发(如果用作 exit node)
echo 'net.ipv4.ip_forward = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
echo 'net.ipv6.conf.all.forwarding = 1' | sudo tee -a /etc/sysctl.d/99-tailscale.conf
sudo sysctl -p /etc/sysctl.d/99-tailscale.conf

Tailscale

所有服务器都已加入 Tailscale 网络,可通过 Tailscale IP 互联:

# 查看所有设备
tailscale status

# 设为 exit node
tailscale up --advertise-exit-node

Tailscale SSH

所有 VPS 已启用 Tailscale SSH,可直接通过 Tailscale 网络 SSH 连接(不走公网 22 端口):

机器 命令
tailscale ssh ec2-user@<REDACTED_TOKEN>
hk tailscale ssh root@hk
jgw tailscale ssh ubuntu@jgw
zgo-rsc tailscale ssh root@zgo-rsc

启用命令(如需在新机器上启用):

sudo tailscale set --ssh