Skip to content

Proxy protocols

Note: dae currently supports the following proxy protocols

ProtocolSupport detailsURI format
HTTP(S), naiveproxyHTTP(S)
SocksVersion: Socks4 / Socks4a / Socks5Socks
VMess / VLESSVMess: AEAD, alterID=0
Transport: TCP / WS / gRPC / Meek / HTTPUpgrade
TLS: Reality
v2rayN
DuckSoft
ShadowsocksCiphers: AEAD / Stream Ciphers
Plugins: simple-obfs / shadow-tls (SIP003)
Plugin notes
SIP002
SIP008
ShadowsocksR
TrojanTrojan-gfw / Trojan-gotrojan/trojan-go
TuicVersion: v5Tuic
JuicityJuicity
Hysteria2Hysteria2
AnyTLSAnyTLS
Proxy chain (flexible protocol)Proxy chain

All protocols listed above are supported. “—” means the source lists no further details or URI reference.

URI examples

HTTP(S)

https://[[user:]pass@]hostname:port/

Socks

socks4://[[user:]pass@]hostname:port/
socks5://[[user:]pass@]hostname:port/

ShadowTLS and Shadowsocks plugins

The source leaves v2ray-plugin unchecked while checking its Websocket (+TLS) sub-item. These two statuses are preserved here.

ShadowTLS v3 links can also be used directly with shadowtls://. For nodes that require a browser-like TLS fingerprint, set global.tls_implementation: utls and keep global.utls_imitate at the default chrome_auto, or append tlsImplementation=utls&utlsImitate=chrome in the link query. If the provider expects no custom SNI, omit sni or keep it explicitly empty.

External proxy programs

For other requirements, one way to expand protocol support is by using external proxy programs. Below is an example of using the external naiveproxy.

Although dae and other proxy programs support the HTTPS protocol, using them does not utilize the chromium networking stack, which weakens the camouflage effect of naiveproxy. Therefore, using an external naiveproxy program is recommended.

  1. Start naiveproxy:

    The example uses naiveproxy to open an HTTP listening port. Note that HTTP proxy does not support proxying UDP traffic, so if you are using an external proxy program, it is advisable to prioritize using the socks5 port.

    bash
    naiveproxy --listen=http://127.0.0.1:1090 --proxy=https://yourlink
  2. In the section of dae's configuration related to nodes, add the following line: http://127.0.0.1:1090, and remember to use this node in the group you are using.

  3. If you have bound the WAN interface, meaning you have filled in the global.wan_interface field, make sure to add the following line near the top in the routing section to prevent traffic from flowing back to dae after passing through naiveproxy, causing a loop:

    shell
    pname(naiveproxy) -> must_direct

    Here, pname refers to the process name. You can determine the process name of naiveproxy by examining the command used to start it, running the ps -ef command at runtime, or observing the dae logs. The meaning of must_direct is to allow all traffic, including DNS queries, to pass through directly without redirecting to dae.

    Users who only bind the LAN interface do not need to perform this step.


Source: dae upstream · AGPL-3.0 license.