Sing-box 教程:新手入门到高级应用详解 – wiki基地

Sing-box 教程:新手入门到高级应用详解

Sing-box 是一款功能强大的网络代理工具,以其高性能、多协议支持和灵活的配置而著称。它不仅支持常见的 Shadowsocks、VMess、Trojan 等协议,还提供了诸如 XTLS、Reality 等高级功能,使其在穿透复杂网络环境、保护隐私方面表现出色。 本文将从新手入门到高级应用,详细介绍 Sing-box 的使用方法,帮助你掌握这款强大的工具。

一、 Sing-box 简介

Sing-box 采用 Golang 编写,拥有跨平台特性,可以在 Windows、macOS、Linux 以及 Android 等平台上运行。它的主要特点包括:

  • 多协议支持: 涵盖 Shadowsocks、VMess、Trojan、SOCKS5、HTTP(S) 等主流代理协议。
  • 高性能: 基于 Golang 语言的优化,提供出色的连接速度和稳定性。
  • 灵活配置: 通过 JSON 文件进行配置,可定制各种网络策略和规则。
  • 高级功能: 支持 XTLS、Reality、mKCP 等高级协议和技术,可有效抵抗流量审查。
  • 流量控制: 可以进行流量统计、策略路由、负载均衡等精细化控制。
  • 可扩展性: 易于集成其他插件和模块,实现更多功能。

二、 Sing-box 安装与配置

  1. 下载与安装:

    • 访问 Sing-box 的 GitHub 发布页面(搜索 “sing-box github releases”),根据你的操作系统和架构下载对应的预编译二进制文件。
    • 解压下载的文件,通常会包含一个 sing-box 可执行文件和一个 config.json 配置文件模板。
    • Windows:sing-box.exe 文件放在一个方便访问的目录下,例如 C:\Sing-box
    • macOS/Linux:sing-box 文件移动到 /usr/local/bin 目录下,并赋予执行权限:

      bash
      sudo mv sing-box /usr/local/bin/
      sudo chmod +x /usr/local/bin/sing-box

  2. 配置文件详解 (config.json):

    config.json 是 Sing-box 的核心配置文件,用于定义代理服务器、路由规则、日志等参数。下面是一个简单的配置示例:

    json
    {
    "log": {
    "level": "info",
    "output": "console"
    },
    "inbounds": [
    {
    "tag": "socks-inbound",
    "type": "socks",
    "listen": "127.0.0.1",
    "listen_port": 10808,
    "sniff": true,
    "sniff_override": {
    "tls": false,
    "http": false
    }
    },
    {
    "tag": "http-inbound",
    "type": "http",
    "listen": "127.0.0.1",
    "listen_port": 10809
    }
    ],
    "outbounds": [
    {
    "tag": "proxy-outbound",
    "type": "vmess",
    "server": "your_server_address",
    "server_port": 12345,
    "uuid": "your_uuid",
    "alter_id": 64,
    "security": "auto",
    "network": "tcp",
    "tls": false,
    "tls_allow_insecure": true,
    "skip_cert_verify": true
    },
    {
    "tag": "direct-outbound",
    "type": "direct"
    },
    {
    "tag": "block-outbound",
    "type": "block"
    }
    ],
    "route": {
    "rules": [
    {
    "type": "domain",
    "domain": [
    "geosite:category-ads-all"
    ],
    "outbound": "block-outbound"
    },
    {
    "type": "domain",
    "domain": [
    "geosite:cn"
    ],
    "outbound": "direct-outbound"
    },
    {
    "type": "default",
    "outbound": "proxy-outbound"
    }
    ],
    "auto_detect_interface": true
    }
    }

    • log: 定义日志级别和输出位置。level 可以设置为 “info”、”debug”、”warning”、”error” 等。output 可以设置为 “console” (控制台) 或文件路径。
    • inbounds: 定义本地监听端口。
      • tag: 入站规则的唯一标识符。
      • type: 入站协议类型,可以是 “socks” (SOCKS5 代理)、”http” (HTTP 代理) 等。
      • listen: 监听地址,通常为 127.0.0.1 (本地回环地址)。
      • listen_port: 监听端口。
      • sniff: 是否开启流量嗅探,如果开启,Sing-box 会尝试自动识别流量类型。
      • sniff_override: 用于覆盖默认的嗅探行为,例如禁用 TLS 和 HTTP 嗅探。
    • outbounds: 定义出口代理服务器。
      • tag: 出站规则的唯一标识符。
      • type: 出站协议类型,例如 “vmess”、”trojan”、”shadowsocks” 等。
      • server: 服务器地址。
      • server_port: 服务器端口。
      • uuid (VMess): VMess 协议的 UUID。
      • alter_id (VMess): VMess 协议的 AlterID。
      • security (VMess): VMess 协议的加密方式,例如 “auto”、”aes-128-gcm”、”chacha20-poly1305” 等。
      • network (VMess): VMess 协议的传输协议,例如 “tcp”、”kcp”、”ws” 等。
      • tls: 是否启用 TLS 加密。
      • tls_allow_insecure: 是否允许不安全的 TLS 连接 (跳过证书验证)。
      • skip_cert_verify: 与 tls_allow_insecure 类似,跳过证书验证。
      • direct: 直接连接,不通过任何代理。
      • block: 阻止连接。
    • route: 定义路由规则,决定流量如何选择出口代理。
      • rules: 路由规则列表。
      • type: 规则类型,可以是 “domain” (域名)、”ip” (IP 地址)、”port” (端口) 等。
      • domain: 域名列表,可以使用域名列表文件,例如 “geosite:cn” (中国域名列表)。
      • outbound: 匹配规则后使用的出口代理的 tag
      • auto_detect_interface: 是否自动检测网络接口,以便更好地进行路由。
  3. 启动 Sing-box:

    • 打开终端 (Windows 的命令提示符或 PowerShell,macOS/Linux 的 Terminal)。
    • 导航到包含 sing-box 可执行文件和 config.json 文件的目录。
    • 运行以下命令启动 Sing-box:

      bash
      sing-box run -c config.json

      如果一切正常,你将看到 Sing-box 的日志输出,表明它正在运行。

  4. 设置系统代理:

    • Windows:
      • 打开 “设置” -> “网络和 Internet” -> “代理”。
      • 在 “手动设置代理” 下,启用 “使用代理服务器”。
      • 在 “地址” 中输入 127.0.0.1,在 “端口” 中输入你设置的 SOCKS5 代理端口 (例如 10808)。
    • macOS:
      • 打开 “系统偏好设置” -> “网络”。
      • 选择你正在使用的网络连接,然后点击 “高级…”。
      • 切换到 “代理” 选项卡。
      • 勾选 “SOCKS 代理”,在 “SOCKS 代理服务器” 中输入 127.0.0.1,在 “端口” 中输入你设置的 SOCKS5 代理端口 (例如 10808)。
    • Linux:
      • 不同的 Linux 发行版设置代理的方式可能有所不同。你可以使用 gsettings 命令或在图形界面中进行设置。 例如,在 GNOME 桌面环境下,你可以打开 “设置” -> “网络” -> “网络代理”,选择 “手动”,然后输入 SOCKS5 代理服务器地址和端口。
  5. 验证代理是否生效:

    • 打开浏览器,访问 https://www.whatismyip.com/ 或类似的网站。
    • 如果显示的 IP 地址是你的代理服务器的 IP 地址,则说明代理设置已成功。

三、 常用协议配置示例

  1. VMess:

    json
    {
    "tag": "vmess-outbound",
    "type": "vmess",
    "server": "your_server_address",
    "server_port": 12345,
    "uuid": "your_uuid",
    "alter_id": 64,
    "security": "auto",
    "network": "tcp",
    "tls": false,
    "tls_allow_insecure": true,
    "skip_cert_verify": true
    }

    • 替换 your_server_address12345your_uuid 为你的 VMess 服务器信息。
    • security 可以设置为 “auto” (自动选择加密方式) 或指定加密方式,例如 “aes-128-gcm”、”chacha20-poly1305” 等。
    • network 可以设置为 “tcp” (TCP)、”kcp” (mKCP)、”ws” (WebSocket) 等。
    • 如果你的 VMess 服务器启用了 TLS 加密,则将 tls 设置为 true,并确保 tls_allow_insecureskip_cert_verify 设置为 false (除非你的服务器使用了自签名证书)。
  2. Trojan:

    json
    {
    "tag": "trojan-outbound",
    "type": "trojan",
    "server": "your_server_address",
    "server_port": 443,
    "password": "your_password",
    "tls": true,
    "skip_cert_verify": true
    }

    • 替换 your_server_address443your_password 为你的 Trojan 服务器信息。
    • tls 通常设置为 true,Trojan 协议需要使用 TLS 加密。
    • skip_cert_verify 设置为 true 仅在你的服务器使用了自签名证书时才需要。
  3. Shadowsocks:

    json
    {
    "tag": "shadowsocks-outbound",
    "type": "shadowsocks",
    "server": "your_server_address",
    "server_port": 8388,
    "method": "aes-256-cfb",
    "password": "your_password"
    }

    • 替换 your_server_address8388aes-256-cfbyour_password 为你的 Shadowsocks 服务器信息。
    • method 指定加密方式,例如 “aes-256-cfb”、”chacha20-ietf-poly1305” 等。

四、 高级应用

  1. XTLS:

    XTLS (eXtended TLS) 是一种优化的 TLS 实现,可以提高代理的性能和安全性,尤其是在复杂的网络环境下。 要使用 XTLS,你需要确保你的服务器支持 XTLS。

    json
    {
    "tag": "xtls-outbound",
    "type": "vmess",
    "server": "your_server_address",
    "server_port": 443,
    "uuid": "your_uuid",
    "alter_id": 64,
    "security": "auto",
    "network": "tcp",
    "tls": true,
    "xtls": true,
    "sni": "your_domain.com",
    "allow_insecure": false,
    "skip_cert_verify": false
    }

    • xtls: 设置为 true 启用 XTLS。
    • sni: 设置为你的服务器域名,用于 SNI (Server Name Indication)。
    • allow_insecureskip_cert_verify: 通常设置为 false,以确保 TLS 连接的安全性。
  2. Reality:

    Reality 是一种更加高级的抗审查技术,旨在模拟真实网站的流量,从而提高代理的隐蔽性。

    json
    {
    "tag": "reality-outbound",
    "type": "trojan",
    "server": "your_server_address",
    "server_port": 443,
    "password": "your_password",
    "tls": true,
    "reality": {
    "enabled": true,
    "sni": "your_domain.com",
    "short_id": "your_short_id",
    "public_key": "your_public_key"
    }
    }

    • reality.enabled: 设置为 true 启用 Reality。
    • reality.sni: 设置为你的目标网站的域名。
    • reality.short_id: Reality 连接的 Short ID。
    • reality.public_key: 目标网站的公钥。
  3. mKCP:

    mKCP (Multi-path Kernel Congestion Protocol) 是一种基于 UDP 的快速可靠传输协议,可以改善在高丢包网络环境下的连接质量。

    json
    {
    "tag": "kcp-outbound",
    "type": "vmess",
    "server": "your_server_address",
    "server_port": 12345,
    "uuid": "your_uuid",
    "alter_id": 64,
    "security": "auto",
    "network": "kcp",
    "kcp": {
    "mtu": 1350,
    "tti": 50,
    "uplink_capacity": 100,
    "downlink_capacity": 100
    }
    }

    • network: 设置为 kcp 使用 mKCP 传输协议。
    • kcp.mtu: 最大传输单元,通常设置为 1350。
    • kcp.tti: 传输时间间隔,通常设置为 50。
    • kcp.uplink_capacitykcp.downlink_capacity: 上行和下行带宽容量,单位为 Mbps。

五、 常见问题及解决方法

  • 无法连接服务器:
    • 检查服务器地址、端口、协议类型、UUID/密码等信息是否正确。
    • 检查防火墙是否阻止了 Sing-box 的连接。
    • 检查网络连接是否正常。
  • 速度慢:
    • 尝试更换服务器或协议。
    • 调整 mKCP 的参数。
    • 检查你的网络环境是否存在瓶颈。
  • 日志中出现错误:
    • 仔细阅读错误信息,尝试根据错误信息解决问题。
    • 查阅 Sing-box 的官方文档或社区论坛,寻找解决方案。

六、 总结

Sing-box 是一款功能强大的网络代理工具,掌握其配置和使用方法,可以帮助你更好地穿透网络、保护隐私。 本文从新手入门到高级应用,详细介绍了 Sing-box 的各个方面。 希望你能通过本文的学习,熟练使用 Sing-box,并将其应用到你的实际需求中。

发表评论

您的邮箱地址不会被公开。 必填项已用 * 标注

滚动至顶部