{
  "listen": "::",
  "listen_port": 5353,
  "tcp_fast_open": false,
  "tcp_multi_path": false,
  "udp_fragment": false,
  "udp_timeout": "5m",
  "detour": "another-in",
  "sniff": false,
  "sniff_override_destination": false,
  "sniff_timeout": "300ms",
  "domain_strategy": "prefer_ipv6",
  "udp_disable_domain_unmapping": false
}
| Field | Available Context | 
|---|---|
listen | 
Needs to listen on TCP or UDP. | 
listen_port | 
Needs to listen on TCP or UDP. | 
tcp_fast_open | 
Needs to listen on TCP. | 
tcp_multi_path | 
Needs to listen on TCP. | 
udp_timeout | 
Needs to assemble UDP connections. | 
udp_disable_domain_unmapping | 
Needs to listen on UDP and accept domain UDP addresses. | 
==Required==
Listen address.
Listen port.
Enable TCP Fast Open.
!!! warning ""
Go 1.21 required.
Enable TCP Multi Path.
Enable UDP fragmentation.
UDP NAT expiration time in seconds.
5m is used by default.
If set, connections will be forwarded to the specified inbound.
Requires target inbound support, see Injectable.
Enable sniffing.
See Protocol Sniff for details.
Override the connection destination address with the sniffed domain.
If the domain name is invalid (like tor), this will not work.
Timeout for sniffing.
300ms is used by default.
One of prefer_ipv4 prefer_ipv6 ipv4_only ipv6_only.
If set, the requested domain name will be resolved to IP before routing.
If sniff_override_destination is in effect, its value will be taken as a fallback.
If enabled, for UDP proxy requests addressed to a domain, the original packet address will be sent in the response instead of the mapped domain.
This option is used for compatibility with clients that do not support receiving UDP packets with domain addresses, such as Surge.