s-singbox搭建VPN


一、前期准备

(一)VPS常用命令

1、登录

ssh root@ip地址 -p 端口号; 然后输入密码就登录了

2、看当前IP地址

curl ip.p3terx.com

3、看能否正常访问google scholar

curl -I https://scholar.google.com/

(二)(选看) CloudFlare 域名托管

(选看):这部分不是必须步骤,只有配置argo专用通道时才会用到

1、digitalplat注册账号

登录digitalplat,进行注册(注册时除了邮箱其他的随意填,符合格式就行,记得最后要通过邮箱链接验证),然后登录通过Github验证,便可进入后台。

image-20260110131025793

2、digitalplat提升免费域名上限

初始每个账号仅可注册 1 个域名,可通过 Star 官方 GitHub 项目额外获得 1 个免费名额。进入Freedom,点右上角star,便可注册2个域名。

image-20260110131211403

3、digitalplat注册域名

点击左侧注册域名,自己定义二级域名前缀,注意这里的.us.kg需要key,其他的都不需要,可以选其他的域名后缀。如果域名有效,系统会提示填写 DNS 服务器地址。

image-20260110134610962

image-20260110134813419

4、配置DNS

(1)登录 Cloudflare,添加新域名(刚申请的域名lisa.dpdns.org)。

image-20260110133742180

(2)然后点免费计划

image-20260110134420239

(3)后面什么都不用添加,直接前往激活

image-20260110134435980

(4)忽略添加DNS记录image-20260110134518200

(5)继续就出现了CF名称服务器的两个地址

image-20260110135027246

(6)复制到digitalplat中最后一个页面中的NS1和NS2中。然后两个页面都点继续或者注册image-20260110135217488

5、CF完成域名托管:

(1)回到 Cloudflare,点击“立即检查名称服务器”,需要等一段时间到CF中状态显示活动就好了。

image-20260110135411394

(2)点击域名地址,进去DNS记录,添加记录

image-20260110135633829

(3)添加记录,这里的A是值ipv4,名称root用@,填入VPS的ip地址,后面的小黄云是是否开启代理,如果不开启就是VPS的真实ip,如果开启了可能就是代理地址。然后点保存

image-20260110135738246

然后可以去itdog中DNS查询,输入刚刚的域名,可以解析VPS的ip地址,刚开始解析正确的比例比较低,需要等一段时间,当比例高了就可以正常用了。

6、(选看) 配置H-UI,并配置CF域名登录

(1)配置H-UI教程

(2)配置CF域名登录H-UI教程

(三)(选看) 常用小网站

1、网站一致性

2、IP分数

3、DNS查询

4、IP地址

二、s-singbox搭建VPN

(一)安装s-singbox

1、用命令行安装

bash <(curl -fsSL https://raw.githubusercontent.com/sindricn/s-singbox/main/install.sh)

image-20260110152628088

2、进入s-singbox,安装内核运行

(1) 进入s-singbox,可以看到内核未安装

s-singbox

image-20260110152830184

(2)进入1.sing-box管理,1. 安装 sing-box(默认安装最新稳定版就可以),返回到主页面就已经在运行了。

image-20260110153052260

(二)(选看) Argo伪装入站

Argo通道是为了伪装入站IP,这样可以让你的客户端防火墙不会拦截你发出的流量,它分临时通道和专用通道,临时通道的稳定性差,是CF的一项测试服务,会导致域名经常变化,前面我们用CF域名托管,就是为了给它配置专用通道。

image-20260110173851358

1、CF授权

(1)进入9. CF隧道管理,1. Argo隧道管理 ,7. CF授权管理。下面授权名称和备注自己命名就可以,授权顶级域名要填CF托管后的域名,然后就会出来一个网址,粘贴到浏览器中打开,选择对应的域名进行授权就可以了。

image-20260110175907324

image-20260110174754361

image-20260110174805447

2、创建专用隧道

可以在这里创建隧道,再加入节点,也可以在创建节点的时候一起加入创建隧道,我们采用后者在后面创建节点的时候展示。

(四)建立节点

1、不同节点的区别

image-20260110171828118

2、新建节点:VLESS + Reality

这个节点一般用大公司的域名伪装入站,可以防止被墙,但出站IP是不影响的,搭配开启的WARP分流,可以轻松访问google等网站。

image-20260110172607370

(1)进入1.新建节点,q.快速搭建节点,1. VLESS + Reality。端口不要设置冲突了,这里设置一下为6011,域名默认选最快的。

image-20260110172857762

2、新建节点:Hysteria2

这个节点没有入站伪装,特点是快速,当然也搭配分流WARP。

(1)进入1.新建节点,q.快速搭建节点,2. Hysteria2。端口不要设置冲突了,这里设置一下为6012,域名默认,下面的限速和跳跃端口也默认,直接回车。

image-20260110173254294

3、新建节点:Argo+VLESS+WS

这个节点采用 Argo隧道(必须采用WS协议),再搭配WARP。

(1)进入1.新建节点,q.快速搭建节点,3. Argo+VLESS+WS。这里端口设置6013,默认WS协议,默认伪装域名,并配置专用通道。

image-20260110203437316

(2)选择之前授权的CF凭证lisahou,然后设置隧道名称RackNerd1,绑定域名是RackNerd1.lisahou618.qzz.io(隧道名.之前的域名),然后配置6013这个节点加入这个隧道

image-20260110203702428

(3)可以测试一次,用客户端ping一下这个域名

ping -4 RackNerd1.lisahou618.qzz.io

image-20260110220056429

(五)生成订阅

1、通用订阅

(1)4. 订阅管理,1.生成订阅链接,名称随便设置,IP地址默认,订阅端口设置9618

image-20260110205315789

(2)导入到v2ray中,可以看到采用Argo的入站地址是域名,说明入站伪装成功,测试速度和延迟发现它没法检测,这是由于进入了CF服务器,需要点击这个节点进行设置,指纹改成Chrome,跳过证书验证,再测试就好了。

image-20260110210039402

image-20260110210311963

2、clash订阅

image-20260110215145824

3、sing-box订阅

image-20260110215353444

(六) (选看) WARP伪装出站

主要为了混淆身份,防止机房IP被Google/Netflix等网站拒绝。我们这里对部分流量采用WARP伪装,因为①WARP分配的IP地址是是很多人共享出口,甚至不如我们的机房IP,可能会被认为是机器人,而且会超级慢。②WARP全局会导致我们后面如果设置Argo入站隧道的流量也走这,会超时崩溃。所以我们在这里采用智能分流出站规则。如果不设置Argo入站伪装,想尝试让节点全局WARP可以进入9. CF隧道管理中进行WARP 把节点关联到就可以。

解释稳定性

①通过Cloudflare WARP隧道,会分配一个免费匿名用户和证书(WARP 账户很稳定:这是 Cloudflare 的正式产品。脚本帮你注册的这个免费账户是永久有效的。只要 Cloudflare 不倒闭,这个账户就能一直连,不会出现“过段时间服务就没了”的情况。)

②每次 Sing-box 启动,它就拿着这个证书去连接 Cloudflare 的机房。Cloudflare 看到证书有效,就从它的机房里随机拿一个空闲的 IP 借给你用。(这个IP地址是会变的,这可能而是好事:IP 越常变,隐匿性越好。 因为Google 无法锁定“就是这个人”,它只知道“这是 Cloudflare 的用户”)

③每次CF分配IP的时候一般是从离你的 VPS 最近的 Cloudflare 机房分配,这样就相当于你拿着手机在城市中出行,不会被google封号,而频繁的改VPS才可能被封号,最坏的情况是这个IP被其他滥用,此时可能会遇到频繁的人机验证。这时去重启一下s-singbox就会再分一个新的IP了。

systemctl restart sing-box

1、开启WARP 隧道管理

进入9. CF隧道管理,2. WARP 隧道管理,依次进行1.2.3.4.启动WARP连接,进入6.查看WARP状态,就没问题了。

image-20260110162842035

image-20260110162949220

2、设置分流WARP规则-手动

注意:因为s-singbox是自动修改配置文件不会读取当前文件内容,而我们是手动修改,所以如果当我们配置好分流WARP后,再用s-singbox进行过改动,可能需要重新执行(3)中的 ③ ④ 和(4)。可以去 what is my ip 上查看一下,如果变成了VPS的真IP,就需要执行一下。

(1)进入7.出站规则,可以看到现有的出站规则是直接出去的

image-20260110163224417

(2)退出s-singbox,可以去到/etc/sing-box/config.json去看现在的配置文件。

image-20260110164313078

(3)增加分流规则:

Outbounds (出站):direct-out 下面增加了一个 warp-out (绑定 wgcf)。

{
      "type": "direct",
      "tag": "warp-out",
      "bind_interface": "wgcf"
    },

Route (路由): 增加了规则列表,把 Google/AI/Netflix 等域名的流量指向 warp-out

{
        "domain_suffix": [
          "scholar.google.com",
          "scholar.google.cn",
          "scholar.google.com.hk",
          "gemini.google.com",
          "google.com",
          "youtube.com",
          "google.dev",
          "openai.com",
          "claude.ai",
          "anthropic.com",
          "netflix.com",
          "googleapis.com",
          "gstatic.com",
          "googleusercontent.com",
          "ggpht.com",
          "ytimg.com",
          "recaptcha.net",
          "whatismyipaddress.com"
        ],
        "outbound": "warp-out"
      }

① 手动添加太麻烦了,所以写了一个固定的脚本

先安装执行命令

apt-get update && apt-get install -y jq

② 写入脚本

cat > /root/fix_warpout.sh << 'EOF'
#!/bin/bash

# 配置文件路径
CONFIG_FILE="/etc/sing-box/config.json"

# 检查 jq 是否安装
if ! command -v jq &> /dev/null; then
    echo "❌ 错误: 未安装 jq,正在自动安装..."
    apt-get update && apt-get install -y jq
fi

echo "🔄 正在读取当前的节点信息 (Inbounds)..."

# 1. 定义你的完美出站规则 (Outbounds)
#    包含 Direct, WARP(wgcf), Block
OUTBOUNDS='[
  {
    "type": "direct",
    "tag": "direct-out"
  },
  {
    "type": "direct",
    "tag": "warp-out",
    "bind_interface": "wgcf"
  },
  {
    "type": "block",
    "tag": "block-out"
  }
]'

# 2. 定义你的完美路由规则 (Route)
#    包含 Google全家桶、AI、Netflix 等分流
ROUTE='{
  "default_domain_resolver": "dns-local",
  "rules": [
    {
      "protocol": "dns",
      "action": "route",
      "outbound": "direct-out"
    },
    {
      "domain_suffix": [
         "scholar.google.com",
         "scholar.google.cn",
         "scholar.google.com.hk",
         "gemini.google.com",	
         "google.com",
         "youtube.com",
         "google.dev",
         "openai.com",
         "claude.ai",
         "anthropic.com",
         "netflix.com",
         "googleapis.com",
         "gstatic.com",
         "googleusercontent.com",
         "ggpht.com",
         "ytimg.com",
         "recaptcha.net",
         "whatismyipaddress.com"
      ],
      "outbound": "warp-out"
    }
  ],
  "final": "direct-out",
  "auto_detect_interface": true
}'

# 3. 核心魔法:用 jq 把你的规则“缝合”进配置文件
#    逻辑:保留原文件的 .inbounds,替换掉 .outbounds 和 .route
jq --argjson new_out "$OUTBOUNDS" --argjson new_route "$ROUTE" \
   '.outbounds = $new_out | .route = $new_route' \
   "$CONFIG_FILE" > "$CONFIG_FILE.tmp" && mv "$CONFIG_FILE.tmp" "$CONFIG_FILE"

if [ $? -eq 0 ]; then
    echo "✅ 配置文件修改成功!已注入 WARP 分流规则。"
    echo "🚀 正在重启 sing-box 服务..."
    systemctl restart sing-box
    echo "🎉 搞定!现在你的节点既是最新的,又有 WARP 分流了。"
else
    echo "❌ 修改失败,请检查配置文件格式。"
fi
EOF

# 给脚本添加执行权限
chmod +x /root/fix_warpout.sh

③ 执行脚本

./fix_warpout.sh

④ 然后重启s-singbox

systemctl restart sing-box

(4)然后重新进入s-singbox,进入7.出站规则,就可以看到识别到一个新的出站规则,选择1.同步到规则库,就变成3个出站规则了,这样分流伪装就好了。

image-20260110170700733

然后就可以看到出站的IP已经伪装了

image-20260110214531722


文章作者: 猴猴猴
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 猴猴猴 !
  目录