sing-box/docs/configuration/rule-set/adguard.md
2024-09-13 10:10:05 +08:00

2.2 KiB

icon
material/new-box

AdGuard DNS Filter

!!! question "Since sing-box 1.10.0"

sing-box supports some rule-set formats from other projects which cannot be fully translated to sing-box, currently only AdGuard DNS Filter.

These formats are not directly supported as source formats, instead you need to convert them to binary rule-set.

Convert

Use sing-box rule-set convert --type adguard [--output <file-name>.srs] <file-name>.txt to convert to binary rule-set.

Performance

AdGuard keeps all rules in memory and matches them sequentially, while sing-box chooses high performance and smaller memory usage. As a trade-off, you cannot know which rule item is matched.

Compatibility

Almost all rules in AdGuardSDNSFilter and rules in rule-sets listed in adguard-filter-list are supported.

Supported formats

AdGuard Filter

Basic rule syntax

Syntax Supported
@@ :material-check:
|| :material-check:
| :material-check:
^ :material-check:
* :material-check:

Host syntax

Syntax Example Supported
Scheme https:// :material-alert: Ignored
Domain Host example.org :material-check:
IP Host 1.1.1.1, 10.0.0. :material-close:
Regexp /regexp/ :material-check:
Port example.org:80 :material-close:
Path example.org/path/ad.js :material-close:

Modifier syntax

Modifier Supported
$important :material-check:
$dnsrewrite=0.0.0.0 :material-alert: Ignored
Any other modifiers :material-close:

Hosts

Only items with 0.0.0.0 IP addresses will be accepted.

Simple

When all rule lines are valid domains, they are treated as simple line-by-line domain rules which, like hosts, only match the exact same domain.