global { # tproxy port to listen. tproxy_port: 12345 # Log level: error, warn, info, debug, trace log_level: info # Node connectivity check. # Url and dns should have both IPv4 and IPv6. tcp_check_url: 'http://cp.cloudflare.com' udp_check_dns: 'cloudflare-dns.com:53' check_interval: 30s # Now only support udp://IP:Port. Empty value '' indicates as-is. # Please make sure DNS traffic will go through and be forwarded by dae. # The upstream DNS answer MUST NOT be polluted. # The request to dns upstream follows routing defined below. dns_upstream: 'udp://8.8.8.8:53' # The LAN interface to bind. Use it if you only want to proxy LAN instead of localhost. # Multiple interfaces split by ",". # lan_interface: docker0 # The WAN interface to bind. Use it if you want to proxy localhost # Multiple interfaces split by ",". wan_interface: wlp5s0 } # Subscriptions defined here will be resolved as nodes and merged as a part of global node pool. subscription { # Add your subscription links here. } # Nodes defined here will be merged as a part of global node pool. node { # Add your node links here. # Support socks5, http, https, ss, ssr, vmess, vless, trojan, trojan-go 'socks5://localhost:1080' 'ss://LINK' } # Node group (outbound). group { my_group { # Filter nodes from global node pool defined by subscription and node section above. # Pass node names as input of keyword/regex filter. filter: name(regex:'HK|SG|TW', keyword:'JP', keyword: SH) && !name(keyword:"GCP") # Randomly select a node from the group for every connection. # policy: random # Select the first node from the group for every connection. # policy: fixed(0) # Select the node with min last latency from the group for every connection. policy: min } group2 { # Filter nodes from global node pool defined by subscription and node section above. # Pass node names as input of keyword/regex filter. filter: name(keyword: netflix) # Select the node with min average of the last 10 latencies from the group for every connection. policy: min_avg10 } } # See routing.md for full examples. routing { ip(geoip:private, 224.0.0.0/3, 'ff00::/8') -> direct # Put it first unless you know what you're doing. # Write your rules below. # dae arms DNS rush-answer filter so we can use 8.8.8.8 regardless of DNS pollution. ip(8.8.8.8) && port(53) -> direct pname(firefox) && domain(ip.sb) -> direct pname(curl) && domain(ip.sb) -> my_group ip(geoip:cn) -> direct domain(geosite:cn) -> direct final: my_group }