如何配置 Sing-Box 服务端

前言

购买最低配置,稳定点的机场都需要 80 元以上,我们如果可以自己购买一台vps,并配置给自己一人使用,效果可能会更好点。

参看本文可以获知如何自建 Clash Verge 服务端,本文实验的环境:

  • 操作系统,AlmaLinux 9.6
  • 硬件配置,1C1G,1Gbps 宽带口,3T 流量/月
  • 软件配置,docker 运行,Sing-Box 服务端Clash Verge 客户端,其中的 sing-box 使用 Hysteria2 内核模式(速度优先,需域名与证书)。
  • 域名准备,需要准备一个能解析到外网的域名,本文以 h2.example.com 为例说明。

什么是 Clash Verge 与 Sing-Box?

Clash Verge 是一款高效的网络代理客户端,支持多种代理协议,广泛用于科学上网。它基于 Clash,并内置 mihomo 内核,允许用户轻松地配置和管理多个节点。

Sing-Box 是一款功能强大的代理服务端,支持多种协议(如 Hysteria、VLESS 等),并能提供高效的网络性能和稳定性。它使用 Docker 部署,并能支持 多协议、多入站 配置,确保无论是游戏还是流媒体,均能获得最佳体验。

选择 VPS 主机时需要考虑的因素

在配置 Clash Verge 和 Sing-Box 之前,首先需要选择合适的 VPS 主机。一个优质的 VPS 主机不仅能提供稳定的带宽,还能确保高效的连接和低延迟。以下是选择 VPS 主机时的一些关键因素:

  1. 带宽和流量:选择一个具有高带宽的 VPS 服务,尤其是在高并发和大流量场景下尤为重要。确保你的 VPS 能提供稳定的 上行带宽,因为代理服务通常会消耗大量上传带宽。
  2. 地理位置:选择距离你的目标用户较近的数据中心位置,这样可以降低网络延迟,提高连接速度。
  3. 支持 UDP:在配置 Sing-Box 和 Clash Verge 时,UDP 端口的支持非常关键。确保 VPS 提供的网络环境支持 UDP(尤其是 443/UDP)。
  4. 操作系统:大多数 VPS 提供商都支持 Linux 系统,如 UbuntuAlmaLinux 和 CentOS。这些操作系统适用于运行代理服务器和各种网络工具。
  5. 可靠性和 SLA:选择一个具有 高可靠性 和 服务等级协议(SLA)的 VPS 提供商,以确保你的代理服务不会因为 VPS 故障而中断。

准备

1)系统准备

# 1. 更新
sudo dnf -y update

# 2. 安装 Docker (RHEL/CentOS/AlmaLinux 9)
sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo dnf -y install docker-ce docker-ce-cli containerd.io docker-compose-plugin
sudo systemctl enable --now docker

# 3. 启用 BBR(重启后生效)
echo "net.core.default_qdisc=fq" | sudo tee -a /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control=bbr" | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

# 4. 放行 80(临时给证书用)、443/tcp+udp(Hy2)选做,如果已经关闭了系统 SELinux,可以不做。
sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-port=443/tcp
sudo firewall-cmd --permanent --add-port=443/udp
sudo firewall-cmd --reload

2) 申请 TLS 证书(acme.sh)

确保 h2.example.com 已正确解析到这台服务器公网 IP,需要修改这个域名的 dns 解析(读者自行操作)。

# 安装 acme.sh
curl https://get.acme.sh | sh -s email=my@example.com
source ~/.bashrc   # 或重开一个 shell

# 申请 ECDSA 证书(standalone 模式,默认用 80 端口)
~/.acme.sh/acme.sh --set-default-ca --server letsencrypt
~/.acme.sh/acme.sh --issue -d h2.example.com --standalone -k ec-256

# 证书路径(注意 _ecc 后缀)
# 证书:   ~/.acme.sh/h2.example.com_ecc/fullchain.cer
# 私钥:   ~/.acme.sh/h2.example.com_ecc/h2.example.com.key
  • 后续 Docker 会把这两个文件以只读方式挂进去使用。
  • 证书到期 acme.sh 会自动续期(使用 standalone,会临时占用 80 端口)。如果服务器运行了 nginx,需要临时关闭 nginx,等证书申请完毕后,再启动 nginx

配置 Sing-Box 服务端与 Clash Verge 客户端

在选择好 VPS 后,接下来是 Sing-Box 服务端和 Clash Verge 客户端的配置过程。

配置 Sing-Box 服务端

1.安装 Docker:
首先,确保你的 VPS 上已经安装了 Docker。前面的准备阶段已经安装了 docker。
2.配置 Sing-Box:
在 /data/sb-hy2 目录下创建 docker-compose.yml 和 config.json 配置文件。确保配置正确,特别是端口和证书路径。

version: "3.8"
services:
  singbox:
    image: ghcr.io/sagernet/sing-box:latest
    container_name: singbox-hy2
    restart: unless-stopped
    network_mode: host
    command: ["run", "-c", "/etc/sing-box/config.json"]
    volumes:
      - /data/sb-hy2/config.json:/etc/sing-box/config.json:ro,Z
      - /root/.acme.sh/h2.example.com_ecc/fullchain.cer:/etc/sing-box/fullchain.cer:ro,Z
      - /root/.acme.sh/h2.example.com_ecc/h2.example.com.key:/etc/sing-box/privkey.key:ro,Z

3.配置 Sing-Box 服务端的 config.json 在部署 Sing-Box 时,config.json 是核心配置文件,它定义了代理服务端的监听地址、端口、认证信息、证书路径等。 生成强力密码:openssl rand -base64 24 以下是一个典型的 Sing-Box 配置文件,供你参考:

{
  "log": {
    "level": "info"
  },
  "inbounds": [
    {
      "type": "hysteria2",
      "listen": "0.0.0.0",
      "listen_port": 443,
      "users": [
        { "name": "user001", "password": "你的密码" }
      ],
      "tls": {
        "enabled": true,
        "certificate_path": "/etc/sing-box/fullchain.cer",
        "key_path": "/etc/sing-box/privkey.key"
      }
    }
  ],
  "outbounds": [
    {
      "type": "direct"
    }
  ]
}

4.启动 Sing-Box
使用以下命令启动 Sing-Box 服务端:

cd /data/sb-hy2
sudo docker compose up -d

5.查看日志:
使用以下命令查看 Sing-Box 的日志,确保一切正常运行:

sudo docker logs -f singbox-hy2

配置 Clash Verge 客户端

1.下载和安装 Clash Verge
在客户端设备上下载 Clash Verge 客户端,并根据需求进行安装。

2.配置节点
在 Clash Verge 中配置你刚才在 Sing-Box 中设置的代理服务器信息。确保配置项正确,并按照以下格式设置:

port: 7890
socks-port: 7891
allow-lan: true
mode: rule
log-level: info

proxies:
  - name: hy2-h2.example.com
    type: hysteria2
    server: h2.example.com
    port: 443
    password: JlK4xWm8Q2yN5oVr1tS6pHq8C3zD9bF2
    sni: h2.example.com
    alpn: [h3]
    # up: "50 Mbps"     # 可选速率上限
    # down: "200 Mbps"
    skip-cert-verify: false
    # fast-open: true   # 可按需开启

proxy-groups:
  - name: 🚀 Proxy
    type: select
    proxies:
      - hy2-h2.example.com
      - DIRECT

rules:
  - GEOIP,CN,DIRECT
  - MATCH,🚀 Proxy

把上面的配置文件保存为 xxx.yaml;

3.连接并测试:
完成配置后,连接到代理服务器,并测试是否能够顺利访问目标网站。

可能出现的问题

  • 客户端测试不通过。
    • 确定使用的域名,本地 dns 解析正常。
    • 有可能客户端使用的密码,与服务器端的不一致,需要确认。
    • 不要使用 cloudflare 做 dns 代理。
  • Google 有时候用不了
    • 查看服务器端的运行日志,发现使用了 ipv6 的方式访问了 Google,但是我们的服务器上没有启用 ipv6,导致了错误。
    • 在客户端上禁用 ipv6,如果是 clash verge 客户端的话,需要这样修改客户端配置:
 alpn: [h3]
 ip4: true  # 强制使用 IPv4
 skip-cert-verify: false
  • 服务端运行日志查看
    • docker logs -f singbox-hy2,这个命令也能确认启动是否正常。
  • 确定端口是否正常监听
    •  sudo ss -lnup | grep :443 || true
© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容