Skip to content

Hide the server name ​

Keep the server's name out of the TLS handshake. Before you start, read what these guides assume.

The same local proxy, with fragment under freedom: each site's ClientHello leaves cut into pieces, which gets past DPI that blocks by SNI without reassembling. No server is involved.

json
{
  "version": 1,
  "log": {
    "level": "info",
    "outputs": [{ "type": "stderr", "format": "human" }]
  },
  "inbounds": [
    {
      "tag": "local",
      "listen": "127.0.0.1",
      "port": 1080,
      "network": "tcp",
      "transport": [{ "type": "tcp" }],
      "protocol": {
        "type": "mixed",
        "settings": {
          "socks5": {},
          "http": {}
        }
      }
    }
  ],
  "outbounds": [
    {
      "tag": "direct",
      "transport": [{ "type": "tcp" }, { "type": "fragment" }],
      "protocol": { "type": "freedom" }
    }
  ]
}

In a proxy client, put fragment directly below tls to hide the name used to reach the server: tcp → fragment → tls → ws.