← Back

Shadowsoccks 开启 UDP over TCP

Shadowsoccks 开启 UDP over TCP

1. 什么是 UDP over TCP

科学上网 Shadowsocks 原版只支持 udp 的原生代理,即想要代理 udp,只能使用加密的 udp 流量承载,整个链路必须都是 udp 流量。而国内网络对 udp 极不友好,Qos丢包严重,更不要说防火墙的干扰了。

udp_over_tcp 就是通过把 UDP 数据封装进 TCP 流,来包装成 TCP 流量,从而绕过 UDP 封锁。

原版的 shadowsocks-libev go-shadowsocks shadowsocks-rust 均不支持 UDP over TCP,目前只有 V2ray 和 Xray 支持 UDP over TCP,并且存在 V1 和 V2 两个版本。

2. 适用场景

  • Tiktok 直播
  • DNS 查询
  • 网络时间协议 (NTP)

3. UDP over TCP v1 与 v2 的区别

特性 v1 v2
封装方式 简单在 TCP 流中包 UDP 数据,协议较老 新版本封装,头部更小,效率更高,稳定性优化
兼容性 旧版客户端/服务端都支持 需要新版本(Xray-core 1.8.0+)才能完全使用
性能 额外开销稍多,延迟略高 头部简短,延迟更低,吞吐更高
推荐场景 老旧设备、旧版本内核 新客户端、新服务端环境,追求延迟和稳定性

4. 服务器端配置

docker-compose.yml

services:
  xray:
    image: teddysun/xray
    container_name: xray-ss
    restart: unless-stopped
    ports:
      - "8388:8388/tcp"
      # - "8388:8388/udp"
    volumes:
      - ./config.json:/etc/xray/config.json
    command: ["/usr/bin/xray", "-c", "/etc/xray/config.json"]

config.json

{
  "log": {
    "access": "",
    "error": "/var/log/xray/error.log",
    "loglevel": "error"
  },
  "inbounds": [
    {
      "port": 8388,
      "protocol": "shadowsocks",
      "settings": {
        "method": "chacha20-ietf-poly1305",
        "password": "MyStrongPassword",
        "network": "tcp,udp",
        "udp_over_tcp": {
          "enabled": true,
          "version": 2
        }
      }
    }
  ],
  "outbounds": [
    {
      "protocol": "freedom",
      "settings": {}
    }
  ]
}

其中 udp_over_tcp.version 就是配置 UDP over TCP 的版本,建议使用 v2。

...
 "udp_over_tcp": {
    "enabled": true,
    "version": 2
  }
...

5.客户端配置

OpenClash 配置示例(客户端)

在你的代理节点配置中(配置文件编辑模式),Shadowsocks 部分这样写:


proxies:
  - name: "MyShadowsocks"
    type: ss
    server: your-server-ip
    port: 8388
    cipher: chacha20-ietf-poly1305
    password: MyStrongPassword
    udp: true
    udp-over-tcp: true
    udp-over-tcp-ver: 2

注意

  • udp: true 表示需要支持 UDP(比如玩游戏、DNS 查询)
  • udp-over-tcp: true 表示启用 UDP 通过 TCP 封装
  • udp-over-tcp-ver: 2 对应服务端的 version 配置(1 或 2 要匹配服务端)

Shadowrocket (客户端)

  • 编辑节点 打开 UDP转发
  • 编辑节点 UDP over TCP 选项选择对应版本(1 或 2 要匹配服务端)

6.测试

UDP IP 查询:https://ip.skk.moe/stun