sing-box是什么?sing-box客户端下载以及使用教程

教你如何使用sing-box

的使用教程虽然很多,但都是着重讲解如何安装、使用,很少涉及如何部署 sing-box 服务器,节点添加也是直接通过订阅链接,完全不考虑自建服务器以及自有节点的应用场景。事实上 sing-box 之所以强大,恰恰在于它的适用性,通过它可以胜任多种应用场景,搭建符合个人使用习惯的代理平台,这才是它被称为”瑞士军刀”原因。

本文将详细讲解如何使用 sing-box,包括服务器的搭建、客户端的配置以及 GUI 客户端的使用等。

sing-box是什么?sing-box客户端下载以及使用教程-1

sing-box是什么

Sing-Box 是一个开源的工具,类似于 V2Ray 和 Xray,旨在帮助用户绕过网络限制、提高和安全性。它支持多种,允许用户在不同的网络环境下通过代理服务加速网络连接,突破地理限制,并保护数据隐私。

Sing-Box 特点:

  1. :Sing-Box 支持各种代理协议,如 等,适用于不同的应用场景。
  2. 高性能:与其他代理工具类似,Sing-Box 设计优化了性能,使其能够在不同网络环境下保持高效运行。
  3. :Sing-Box 支持多种操作系统,如 Windows、Linux、macOS,以及在上运行,适合网络爱好者和开发者进行网络代理配置。
  4. 灵活配置:用户可以自定义配置文件,实现灵活的网络代理管理,支持不同的网络需求。
  5. :通过和代理协议,Sing-Box 提供了更高的网络隐私和安全性。

Sing-Box 非常适合那些需要提高网络连接效率、保护隐私或绕过防火墙的用户。

sing-box 官方网站:https://sing-box.sagernet.org/zh/

Sing-Box工作原理

sing-box 定位是通过代理平台,可以作为服务端部署应用,也可以作为客户端为主机提供连接代理功能。

sing-box 主要由 Go 语言开发,可执行文件不区分服务端和客户端,通过配置文件来设置其工作模式。sing-box 将数据流量统一划分为入站和出站两种,分别支持相应的流量类型。

入站配置文件结构如下:

{
  "inbounds": [
    {
      "type": "",
      "tag": ""
    }
  ]
}

其中”type”键表示入站流量的类型,而”tag”是该类型流量对应的标签。入流量可以支持多种类型,不同流量类型设置不同标签即可。

入站流量类型”type”的取值如下:

类型值类型类别类型说明
directDirect入站是一个隧道服务器
mixedMixed入站是一个 socks4, socks4a, socks5 和 http 服务器
socksSOCKS入站是一个 socks4, socks4a 和 socks5 服务器
httpHTTP入站是一个 http 服务器
shadowsocksShadowsocks入站是一个 shadowsocks 服务器
vmessVMess入站是一个 vmess 服务器
trojanTrojan入站是一个 trojan 服务器
naiveNaive入站是一个 naive 服务器
hysteriaHysteria入站是一个 hysteria 服务器
shadowtlsShadowTLS入站是一个 shadowtls 服务器
tuicTUIC入站是一个 tuic 服务器
hysteria2Hysteria2入站是一个 hysteria2 服务器
vlessVLESS入站是一个 vless 服务器
tunTun入站是一个 tun 服务器
redirectRedirect入站是一个 redirect 服务器
tproxyTProxy入站是一个 tproxy 服务器

定义好流量类型后,sing-box 就可以作为入流量的服务器来工作。

同样的,出站配置文件结构如下:

{
  "outbounds": [
    {
      "type": "",
      "tag": ""
    }
  ]
}

出站流量类型”type”的取值如下:

类型值类型类别类型说明
directDirect出站直接发送请求
blockBlock出站关闭所有传入请求
socksSOCKS出站是 socks4/socks4a/socks5 客户端
httpHTTP出站是一个 HTTP
shadowsocksShadowsocks出站是一个 shadowsocks 客户端
vmessVMess出站是一个 vmess 客户端
trojanTrojan出站是一个 trojan 客户端
wireguardWireguard出站是一个 wireguard 客户端
hysteriaHysteria出站是一个 hysteria 客户端
shadowtlsShadowTLS出站是一个 shadowtls 客户端
tuicTUIC出站是一个 tuic 客户端
hysteria2Hysteria2出站是一个 hysteria2 客户端
vlessVLESS出站是一个 vless 客户端
torTor出站是一个 tor 客户端
sshSSH出站是一个 ssh 客户端
dnsDNS出站是一个 dns 客户端
selectorSelector出站是一个出站流量选择器
urltestURLTest出站流量是 url 访问测试流量

可以看到,sing-box 的出入流量类型并不完全相同,并且对于出入流量的配置就决定了 sing-box 自身的工作模式。假设入流量支持 trajon,而出流量是 direct,则 sing-box 可以理解为 trajon 的服务器;如果入流量支持 trajon,而出流量同样支持 trajon,则 sing-box 可以理解为 trajon 的中继器;如果入流量支持 mixed,而出流量支持 trajon,则 sing-box 可以理解为使用 trajon 协议的本地 socks 和 http 代理,也就是通常意义上的 trajon 客户端了。

通过对出入流量的不同组合,就可以灵活的使用 sing-box,让其充分发挥效能,这也正是 sing-box 的强大之处。

sing-box 支持的协议都是标准协议,这就让 sing-box 可以适配各种服务器及客户端。sing-box 客户端可以连接 sing-box 的服务器也可以连接 Xray 程序部署的服务器,只要客户端的出流量 vless 协议配置正确即可正常工作;同样的,Xray 的客户端也可以连接 sing-box 部署的 vless 服务器,只要 sing-box 的入流量配置同 Xray 客户端的配置匹配即可正常工作。从而大大提升了 sing-box 的适用性。

sing-box 服务器部署

示例将使用 Linux 系统,讲解如何部署一个支持 trajon 和 vless 两种代理协议的 sing-box 服务器。

首先要下载并安装 sing-box。对于 Linux 系统,sing-box 提供了预安装的软件包,分别为 deb 和 rpm 格式,对应了常用的 Linux 发行版。将软件包下载至本机后,使用系统的包管理命令安装即可。

sing-box安装部署

Debian软件仓库安装

sudo curl -fsSL https://sing-box.app/gpg.key -o /etc/apt/keyrings/sagernet.asc
sudo chmod a+r /etc/apt/keyrings/sagernet.asc
echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/sagernet.asc] https://deb.sagernet.org/ * *" | \
  sudo tee /etc/apt/sources.list.d/sagernet.list > /dev/null
sudo apt-get update
sudo apt-get install sing-box # or sing-box-beta

Redhat软件仓库安装

sudo dnf -y install dnf-plugins-core
sudo dnf config-manager --add-repo https://sing-box.app/sing-box.repo
sudo dnf install sing-box # or sing-box-beta

手动安装

#Debian手动安装
bash <(curl -fsSL https://sing-box.app/deb-install.sh)
#Redhat手动安装
bash <(curl -fsSL https://sing-box.app/rpm-install.sh)
ArchLinux手动安装
bash <(curl -fsSL https://sing-box.app/arch-install.sh)

 

 

预安装版本会在使用 systemd 系统的发行版创建一个系统服务”sing-box.service”,如果没有创建,也可自添加,内容如下:

[Unit]
Description=sing-box service
Documentation=https://sing-box.sagernet.org
After=network.target nss-lookup.target network-online.target

[Service]
CapabilityBoundingSet=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
AmbientCapabilities=CAP_NET_ADMIN CAP_NET_BIND_SERVICE CAP_SYS_PTRACE CAP_DAC_READ_SEARCH
ExecStart=/usr/bin/sing-box -D /var/lib/sing-box -C /etc/sing-box run
ExecReload=/bin/kill -HUP $MAINPID
Restart=on-failure
RestartSec=10s
LimitNOFILE=infinity

[Install]
WantedBy=multi-user.target

sing-box 的配置文件为”/etc/sing-box/config.json”,基本格式如下:

{
  "log": {},
  "dns": {},
  "inbounds": [],
  "outbounds": [],
  "route": {},
  "experimental": {}
}

其中:

  • log:用于设置日志相关内容
  • dns:用于设置 dns 规则
  • inbounds:用于设置入站流量
  • outbounds:用于设置出站流量
  • route:用于设置路由规则
  • experimental:用于设置一些实验性功能

sing-box 的配置文件并非全部必须,无内容的配置项可以删除。

对于代理服务器而言,我们不需要设置复杂的 dns 规则和路由规则,只需要设置好出入站流量规则即可正常提供服务。至于日志和实验性功能,则根据需要选择性设置即可。

现在我们修改配置文件,入流量设置支持 vless 和 naive,出流量则直接使用 direct,启用日志功能,全部配置文件内容如下:

 
{
  "log": {
    "disabled": false,
    "level": "warn",
    "timestamp": true
  },
  "inbounds": [
    {
      "type": "vless",
      "tag": "vless-in",
      "listen": "::",
      "listen_port": 1443,
      "users": [
        {
          "uuid": "uuid_for_vless",
          "flow": "xtls-rprx-vision"
        }
      ],
      "tls": {
        "enabled": true,
        "certificate_path": "path_to_crt_file",
        "key_path": "path_to_private_key_file"
      }
    },
    {
      "type": "naive",
      "tag": "naive-in",
      "listen": "::",
      "listen_port": 2443,
      "users": [
        {
          "username": "naive_user_name",
          "password": "naive_password"
        }
      ],
      "tls": {
        "enabled": true,
        "certificate_path": "path_to_crt_file",
        "key_path": "path_to_private_key_file"
      }
    }
  ],
  "outbounds": [
    {
      "type": "direct"
    }
  ]
}

示例配置中,为 sing-box 入流量配置了两种协议支持,侦听端口分别是1443和2443,修改配置文件中标红部分的内容为正确值后,就可以正常启动服务了:

# systemctl start sing-box
# systemctl status sing-box
# netstat -tnlp | grep sing-box

sing-box是什么?sing-box客户端下载以及使用教程-1

如图所示,sing-box 服务器正常启动,并按照入流量的配置侦听了对应端口,等待相应客户端的连接。

sing-box客户端

Sing-Box 客户端 是 Sing-Box 代理工具的核心部分,它允许用户在本地设备上运行 Sing-Box 代理服务,并通过多种协议如 Shadowsocks、VLESS、VMess 等加密和路由网络流量。客户端通常用于绕过网络限制、保护隐私、加速网络连接。

sing-box客户端配置

相较作为服务器,sing-box 作为代理客户端的配置则要复杂难懂的多,其主要原因就是要设置 dns 规则和路由规则。设置这些规则的原因也很直接,就是通过规则来匹配流量是否需要代理,从而达到最佳的使用效果。规则多虽然可以细分流量,精准服务,但是其结果就是配置复杂,稍有不慎,配置中存在逻辑问题,就会影响 sing-box 的工作效果,严重时甚至会造成断网、主机宕机等极端情况。

客户端 dns 和 route 的配置示例如下所示:

{
  "dns": {
    "servers": [
      {
        "tag": "remote",
        "address": "tcp://8.8.8.8",
        "detour": "proxy"
      },
      {
        "tag": "local",
        "address": "223.5.5.5",
        "detour": "direct"
      },
      {
        "tag": "block",
        "address": "rcode://success"
      },
      {
        "tag": "local_local",
        "address": "223.5.5.5",
        "detour": "direct"
      }
    ],
    "rules": [
      {
        "outbound": "any",
        "server": "local_local"
      }
    ],
    "strategy": "ipv4_only"
  },
  "route": {
    "auto_detect_interface": true,
    "rules": [
      {
        "outbound": "dns_out",
        "protocol": [
          "dns"
        ]
      },
      {
        "outbound": "block",
        "network": "udp",
        "port": [
          135,
          137,
          138,
          139,
          5353
        ]
      },
      {
        "outbound": "proxy",
        "port_range": [
          "0:65535"
        ]
      }
    ]
  }
}

从上面的配置文件中,可以清晰的理解 sing-box 的规则逻辑。

首先设置 dns 服务器,每个服务器采用不同的出流量路径,即设置不同的”detour”,其值为出流量类型的”tag”值。设置好该值,则表示访问该 dns 服务器使用该类型的出流量。dns 服务器设置完成后,就可以设置流量 dns 规则,即流量方向和使用的 dns 服务器,规则可以设置多个,匹配上就会生效。

然后设置路由规则,可以理解为定义流量类型匹配条件。例如上面配置中的”outbound”: “proxy”项,如果不设置路由规则,则只知道有一个”tag”为”proxy”的出流量路径,但是什么样的流量可以使用该路径并不知道(特别是当出流量设置多个路径时),这时路由规则”port_range”: [ “0:65535” ]就可以明确指出,连接到本站所有端口的流量都可以使用”proxy”路径,一下就将出口路径了数据流量方向联系了起来。路由规则设置的越精细,则流量控制的就越精准。

现在,假设入流量采用 tun 隧道模式,出流量采用 vless 协议,为 sing-box 客户端配置添加入流量和出流量的配置如下:

  "inbounds": [
    {
      "type": "tun",
      "tag": "tun-in",
      "interface_name": "singbox_tun",
      "inet4_address": "172.19.0.1/30",
      "inet6_address": "fdfe:dcba:9876::1/126",
      "mtu": 9000,
      "auto_route": true,
      "strict_route": true,
      "stack": "gvisor",
      "sniff": true
    }
  ],
  "outbounds": [
    {
      "type": "vless",
      "tag": "proxy",
      "server": "vless_server",
      "server_port": vless_server_port,
      "uuid": "vless_server_uuid",
      "flow": "xtls-rprx-vision",
      "packet_encoding": "xudp",
      "tls": {
        "enabled": true,
        "server_name": "vless_server_name",
        "insecure": false,
        "utls": {
          "enabled": true,
          "fingerprint": "chrome"
        },
        "reality": {
          "enabled": true,
          "public_key": "vless_server_public_key",
          "short_id": "vless_server_short_id"
        }
      }
    },
    {
      "type": "direct",
      "tag": "direct"
    },
    {
      "type": "block",
      "tag": "block"
    },
    {
      "type": "dns",
      "tag": "dns_out"
    }
  ],

可以看到,出流量设置了不同的出流量路径,可以作为对应的客户端处理对应流量,出流量路径设置了不同的”tag”,供 dns 和 route 配置项使用。

修改以上配置文件的红色部分为正确值,然后将以上全部配置项合成一个 JSON 文件,并加入 log 配置项,即完成了一个采用隧道模式的 sing-box 客户端配置文件。

当然入流量也可以设置其他多种方式,示例使用隧道模式是因为该模式可以截取主机的全部流量,让主机仿佛工作在 VPV 模式下。

现在可以总结一下 sing-box 配置的正确打开方式了,首先确定 sing-box 工作在服务器侧还是客户端侧,然后确定对应的入、出流量类型,即所支持的协议,最后根据出入流量协议类型设置 dns 及路由规则。至于每个协议的具体配置内容,则可以参考官方说明进行配置即可。

sing-box下载

图形界面sing-box客户端下载

sing-box Android客户端

sing-box for Android:https://sing-box.sagernet.org/zh/clients/android/

sing-box iOS/macOS/Apple tvOS客户端

sing-box for Apple platforms:https://sing-box.sagernet.org/zh/clients/apple/

sing-box 具有手机端和 macOS 端的 GUI 客户端,Windows 平台的 GUI 客户端暂时还没有发布,但是 v2rayN 是支持使用 sing-box 内核的,也可以理解为一个 Windows 平台的 GUI 客户端。

本文以 Android 客户端为例,讲解如何使用 sing-box 的 GUI 客户端,并且手动添加客户端配置文件以实现节点添加。

打开 sing-box 应用,点击底部左数第三个图标,进入”Profile”页面,点击底部”+”图标添加节点:

sing-box是什么?sing-box客户端下载以及使用教程-1

此时会弹出三个选项,分为导入文件、打节点二维码及手动创建三种方式。对于从机场购买的节点,可以直接通过扫描二维码方式导入,对于自建节点或已有客户端配置文件,则可以选择”Create Manually”手动创建。至于文件导入,因为手动创建时也支持从文件中导入,所以建议不使用。

示例使用手机中的配置文件,则点击”Create Manually”:

sing-box是什么?sing-box客户端下载以及使用教程-2

创建节点配置有多种方式,可以从网上下载,也可以从本机文件中导入,当然也可以直接创建配置文件,然后再编辑配置文件内容手动生成配置。如果从本机导入配置文件,则点击”Import File”按钮,然后选择配置文件进行导入,导入成功后,点击”Create”创建节点文件。

节点文件添加成功后,可以点击该节点配置文件,然后点击”Edit Content”按钮编辑配置文件内容、检查配置项错误以及格式化文件内容等操作。

最后,点击应用底部左数第一个按钮,进入控制台,就会看到所有添加成功的节点,选择节点后,点击底部的启动图标就可以启动节点了:

sing-box是什么?sing-box客户端下载以及使用教程-3

如果配置文件正确无误,则可以正常启动 sing-box 并代理上网了。

至于 sing-box Android 手机端的其他配置,则可以保持默认即可

总之,sing-box 是功能强大,适用性广的通用代理平台,充分了解它之后,就可以尽情享受无限网络的乐趣了。

Sing-Box 是一款开源的网络代理工具,广泛支持 Shadowsocks、VLESS、VMess 等多种代理协议,旨在提高网络连接速度、绕过地理限制、保护用户隐私。它具备高性能的运行效率,适用于 Windows、Linux、macOS 等多种操作系统,并能在路由器上运行,方便实现配置。通过灵活的配置选项,用户可以根据具体需求自定义代理管理,满足不同的网络环境需求。Sing-Box 的加密传输功能进一步提高了数据安全性,确保网络通信的隐私保护,特别适合需要突破网络防火墙和保护在线隐私的用户使用。

OpenWrt 23.05 路由器 Sing-Box客户端,homeproxy 配置教程

5/5 - (1 vote)

留下评论

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