2024-06-24 09:41:00 +08:00
---
2024-11-06 19:02:55 +08:00
icon : material/new-box
2024-06-24 09:41:00 +08:00
---
2026-03-03 20:59:13 +08:00
!!! quote "Changes in sing-box 1.14.0"
:material-plus: [source_mac_address ](#source_mac_address )
2026-04-10 11:54:47 +08:00
:material-plus: [source_hostname ](#source_hostname )
:material-plus: [package_name_regex ](#package_name_regex )
2026-03-03 20:59:13 +08:00
2025-08-14 11:04:04 +08:00
!!! quote "Changes in sing-box 1.13.0"
:material-plus: [interface_address ](#interface_address )
:material-plus: [network_interface_address ](#network_interface_address )
2025-08-15 12:55:03 +08:00
:material-plus: [default_interface_address ](#default_interface_address )
2025-02-17 22:00:57 +08:00
:material-plus: [preferred_by ](#preferred_by )
:material-alert: [network ](#network )
2025-08-14 11:04:04 +08:00
2024-11-06 19:02:55 +08:00
!!! quote "Changes in sing-box 1.11.0"
:material-plus: [action ](#action )
2024-11-11 16:30:25 +08:00
:material-alert: [outbound ](#outbound )
:material-plus: [network_type ](#network_type )
:material-plus: [network_is_expensive ](#network_is_expensive )
:material-plus: [network_is_constrained ](#network_is_constrained )
2024-11-06 19:02:55 +08:00
2024-06-24 09:41:00 +08:00
!!! quote "Changes in sing-box 1.10.0"
2024-09-23 16:51:55 +08:00
:material-plus: [client ](#client )
2024-06-24 09:41:00 +08:00
:material-delete-clock: [rule_set_ipcidr_match_source ](#rule_set_ipcidr_match_source )
:material-plus: [rule_set_ip_cidr_match_source ](#rule_set_ip_cidr_match_source )
2024-09-15 11:42:57 +08:00
:material-plus: [process_path_regex ](#process_path_regex )
2024-06-24 09:41:00 +08:00
2023-12-01 13:24:18 +08:00
!!! quote "Changes in sing-box 1.8.0"
:material-plus: [rule_set ](#rule_set )
:material-plus: [rule_set_ipcidr_match_source ](#rule_set_ipcidr_match_source )
:material-plus: [source_ip_is_private ](#source_ip_is_private )
:material-plus: [ip_is_private ](#ip_is_private )
:material-delete-clock: [source_geoip ](#source_geoip )
:material-delete-clock: [geoip ](#geoip )
:material-delete-clock: [geosite ](#geosite )
2022-07-08 20:15:45 +08:00
### Structure
```json
{
"route" : {
"rules" : [
{
"inbound" : [
"mixed-in"
],
2022-08-16 23:46:05 +08:00
"ip_version" : 6 ,
2023-06-07 20:28:21 +08:00
"network" : [
"tcp"
],
2022-07-27 12:03:07 +08:00
"auth_user" : [
2022-07-17 15:11:26 +08:00
"usera" ,
"userb"
],
2022-07-08 20:15:45 +08:00
"protocol" : [
"tls" ,
"http" ,
"quic"
],
2024-07-07 15:45:50 +08:00
"client" : [
"chromium" ,
"safari" ,
"firefox" ,
"quic-go"
],
2022-07-08 20:15:45 +08:00
"domain" : [
"test.com"
],
"domain_suffix" : [
".cn"
],
"domain_keyword" : [
"test"
],
"domain_regex" : [
"^stun\\..+"
],
"geosite" : [
"cn"
],
"source_geoip" : [
"private"
],
"geoip" : [
"cn"
],
"source_ip_cidr" : [
2022-08-25 22:22:20 +08:00
"10.0.0.0/24" ,
"192.168.0.1"
2022-07-08 20:15:45 +08:00
],
2023-12-01 13:24:18 +08:00
"source_ip_is_private" : false ,
2022-07-08 20:15:45 +08:00
"ip_cidr" : [
2022-08-25 22:22:20 +08:00
"10.0.0.0/24" ,
"192.168.0.1"
2022-07-08 20:15:45 +08:00
],
2023-12-01 13:24:18 +08:00
"ip_is_private" : false ,
2022-07-08 20:15:45 +08:00
"source_port" : [
12345
],
2022-07-27 12:03:07 +08:00
"source_port_range" : [
"1000:2000" ,
":3000" ,
"4000:"
],
2022-07-08 20:15:45 +08:00
"port" : [
80 ,
443
],
2022-07-27 12:03:07 +08:00
"port_range" : [
"1000:2000" ,
":3000" ,
"4000:"
],
"process_name" : [
"curl"
],
2022-08-31 14:33:52 +08:00
"process_path" : [
"/usr/bin/curl"
],
2024-09-15 11:42:57 +08:00
"process_path_regex" : [
"^/usr/bin/.+"
],
2022-07-27 12:03:07 +08:00
"package_name" : [
"com.termux"
],
2026-04-10 11:54:47 +08:00
"package_name_regex" : [
"^com\\.termux.*"
],
2022-07-27 12:03:07 +08:00
"user" : [
"sekai"
],
"user_id" : [
1000
],
2022-09-10 22:42:20 +08:00
"clash_mode" : "direct" ,
2024-11-11 16:30:25 +08:00
"network_type" : [
"wifi"
],
"network_is_expensive" : false ,
"network_is_constrained" : false ,
2025-08-14 11:04:04 +08:00
"interface_address" : {
"en0" : [
"2000::/3"
]
},
"network_interface_address" : {
"wifi" : [
"2000::/3"
]
},
"default_interface_address" : [
"2000::/3"
],
2023-11-09 17:04:08 +08:00
"wifi_ssid" : [
"My WIFI"
],
"wifi_bssid" : [
"00:00:00:00:00:00"
],
2025-08-15 12:55:03 +08:00
"preferred_by" : [
"tailscale" ,
"wireguard"
],
2026-03-03 20:59:13 +08:00
"source_mac_address" : [
"00:11:22:33:44:55"
],
"source_hostname" : [
"my-device"
],
2023-12-01 13:24:18 +08:00
"rule_set" : [
"geoip-cn" ,
"geosite-cn"
],
2024-06-24 09:41:00 +08:00
// deprecated
2024-02-21 14:27:55 +08:00
"rule_set_ipcidr_match_source" : false ,
2024-06-24 09:41:00 +08:00
"rule_set_ip_cidr_match_source" : false ,
2022-07-27 12:03:07 +08:00
"invert" : false ,
2024-11-06 19:02:55 +08:00
"action" : "route" ,
2022-07-08 20:15:45 +08:00
"outbound" : "direct"
},
{
"type" : "logical" ,
"mode" : "and" ,
"rules" : [],
2022-07-27 12:03:07 +08:00
"invert" : false ,
2024-11-06 19:02:55 +08:00
"action" : "route" ,
2022-07-08 20:15:45 +08:00
"outbound" : "direct"
}
]
}
}
```
!!! note ""
You can ignore the JSON Array [] tag when the content is only one item
### Default Fields
!!! note ""
The default rule uses the following matching logic:
2023-12-01 13:24:18 +08:00
(`domain` || `domain_suffix` || `domain_keyword` || `domain_regex` || `geosite` || `geoip` || `ip_cidr` || `ip_is_private` ) &&
2022-09-14 22:03:26 +08:00
(`port` || `port_range` ) &&
2023-12-01 13:24:18 +08:00
(`source_geoip` || `source_ip_cidr` || `source_ip_is_private` ) &&
2022-09-14 22:03:26 +08:00
(`source_port` || `source_port_range` ) &&
`other fields`
2022-07-08 20:15:45 +08:00
2026-07-23 11:09:48 +08:00
When a rule-set contains only a single default rule without `invert` , its fields are considered merged into the outer rule per the logic above; otherwise, it is matched as an `other field` ; different rule-sets always keep OR semantics.
2023-12-01 13:24:18 +08:00
2022-07-08 20:15:45 +08:00
#### inbound
2023-12-14 22:23:52 +08:00
Tags of [Inbound ](/configuration/inbound/ ).
2022-07-08 20:15:45 +08:00
2022-08-16 23:46:05 +08:00
#### ip_version
4 or 6.
Not limited if empty.
2022-07-27 12:03:07 +08:00
#### auth_user
2022-07-17 15:11:26 +08:00
Username, see each inbound for details.
#### protocol
2024-07-07 15:45:50 +08:00
Sniffed protocol, see [Protocol Sniff ](/configuration/route/sniff/ ) for details.
#### client
!!! question "Since sing-box 1.10.0"
Sniffed client type, see [Protocol Sniff ](/configuration/route/sniff/ ) for details.
2022-07-17 15:11:26 +08:00
2022-07-08 20:15:45 +08:00
#### network
2025-02-17 22:00:57 +08:00
!!! quote "Changes in sing-box 1.13.0"
Since sing-box 1.13.0, you can match ICMP echo (ping) requests via the new `icmp` network.
Such traffic originates from `TUN` , `WireGuard` , and `Tailscale` inbounds and can be routed to `Direct` , `WireGuard` , and `Tailscale` outbounds.
Match network type.
`tcp` , `udp` or `icmp` .
2022-07-08 20:15:45 +08:00
#### domain
Match full domain.
#### domain_suffix
Match domain suffix.
#### domain_keyword
Match domain using keyword.
#### domain_regex
Match domain using regular expression.
#### geosite
2023-12-01 13:24:18 +08:00
!!! failure "Deprecated in sing-box 1.8.0"
2024-11-06 19:10:26 +08:00
Geosite is deprecated and will be removed in sing-box 1.12.0, check [Migration ](/migration/#migrate-geosite-to-rule-sets ).
2023-12-01 13:24:18 +08:00
2022-07-08 20:15:45 +08:00
Match geosite.
#### source_geoip
2023-12-01 13:24:18 +08:00
!!! failure "Deprecated in sing-box 1.8.0"
2024-11-06 19:10:26 +08:00
GeoIP is deprecated and will be removed in sing-box 1.12.0, check [Migration ](/migration/#migrate-geoip-to-rule-sets ).
2023-12-01 13:24:18 +08:00
2022-07-08 20:15:45 +08:00
Match source geoip.
#### geoip
2023-12-01 13:24:18 +08:00
!!! failure "Deprecated in sing-box 1.8.0"
2024-11-06 19:10:26 +08:00
GeoIP is deprecated and will be removed in sing-box 1.12.0, check [Migration ](/migration/#migrate-geoip-to-rule-sets ).
2023-12-01 13:24:18 +08:00
2022-07-08 20:15:45 +08:00
Match geoip.
#### source_ip_cidr
2023-12-01 13:24:18 +08:00
Match source IP CIDR.
#### ip_is_private
!!! question "Since sing-box 1.8.0"
Match non-public IP.
2022-07-08 20:15:45 +08:00
#### ip_cidr
2023-12-01 13:24:18 +08:00
Match IP CIDR.
#### source_ip_is_private
!!! question "Since sing-box 1.8.0"
Match non-public source IP.
2022-07-08 20:15:45 +08:00
#### source_port
Match source port.
2022-07-27 12:03:07 +08:00
#### source_port_range
Match source port range.
2022-07-08 20:15:45 +08:00
#### port
Match port.
2022-07-27 12:03:07 +08:00
#### port_range
Match port range.
#### process_name
2023-11-09 17:04:08 +08:00
!!! quote ""
2022-07-27 12:03:07 +08:00
Only supported on Linux, Windows, and macOS.
Match process name.
2022-08-31 14:33:52 +08:00
#### process_path
2023-11-09 17:04:08 +08:00
!!! quote ""
2022-08-31 14:33:52 +08:00
Only supported on Linux, Windows, and macOS.
Match process path.
2024-09-15 11:42:57 +08:00
#### process_path_regex
!!! question "Since sing-box 1.10.0"
!!! quote ""
Only supported on Linux, Windows, and macOS.
Match process path using regular expression.
2022-07-27 12:03:07 +08:00
#### package_name
Match android package name.
2026-04-10 11:54:47 +08:00
#### package_name_regex
!!! question "Since sing-box 1.14.0"
Match android package name using regular expression.
2022-07-27 12:03:07 +08:00
#### user
2023-11-09 17:04:08 +08:00
!!! quote ""
2022-07-27 12:03:07 +08:00
2022-08-09 16:36:17 +08:00
Only supported on Linux.
2022-07-27 12:03:07 +08:00
Match user name.
#### user_id
2023-11-09 17:04:08 +08:00
!!! quote ""
2022-07-27 12:03:07 +08:00
Only supported on Linux.
Match user id.
2022-09-10 22:42:20 +08:00
#### clash_mode
Match Clash mode.
2024-11-11 16:30:25 +08:00
#### network_type
!!! question "Since sing-box 1.11.0"
!!! quote ""
Only supported in graphical clients on Android and Apple platforms.
Match network type.
Available values: `wifi` , `cellular` , `ethernet` and `other` .
#### network_is_expensive
!!! question "Since sing-box 1.11.0"
!!! quote ""
Only supported in graphical clients on Android and Apple platforms.
Match if network is considered Metered (on Android) or considered expensive,
such as Cellular or a Personal Hotspot (on Apple platforms).
#### network_is_constrained
!!! question "Since sing-box 1.11.0"
!!! quote ""
Only supported in graphical clients on Apple platforms.
Match if network is in Low Data Mode.
2025-08-14 11:04:04 +08:00
#### interface_address
!!! question "Since sing-box 1.13.0"
!!! quote ""
Only supported on Linux, Windows, and macOS.
Match interface address.
#### network_interface_address
!!! question "Since sing-box 1.13.0"
!!! quote ""
Only supported in graphical clients on Android and Apple platforms.
Matches network interface (same values as `network_type` ) address.
#### default_interface_address
!!! question "Since sing-box 1.13.0"
!!! quote ""
Only supported on Linux, Windows, and macOS.
Match default interface address.
2023-11-09 17:04:08 +08:00
#### wifi_ssid
Match WiFi SSID.
2025-12-22 04:51:27 +08:00
See [Wi-Fi State ](/configuration/shared/wifi-state/ ) for details.
2023-11-09 17:04:08 +08:00
2025-12-22 04:51:27 +08:00
#### wifi_bssid
2023-11-09 17:04:08 +08:00
Match WiFi BSSID.
2025-12-22 04:51:27 +08:00
See [Wi-Fi State ](/configuration/shared/wifi-state/ ) for details.
2025-08-15 12:55:03 +08:00
#### preferred_by
!!! question "Since sing-box 1.13.0"
Match specified outbounds' preferred routes.
2026-07-08 11:14:42 +08:00
| Type | Match |
|-------------|----------------------------------------------------|
| `tailscale` | Match MagicDNS domains and peers' allowed IPs |
| `wireguard` | Match peers's allowed IPs |
| `bridge` | Match all addresses except local addresses of the machine, only in [pre-match ](/configuration/shared/pre-match/ ) |
2025-08-15 12:55:03 +08:00
2026-03-03 20:59:13 +08:00
#### source_mac_address
!!! question "Since sing-box 1.14.0"
!!! quote ""
2026-03-06 21:43:21 +08:00
Only supported on Linux, macOS, or in graphical clients on Android and macOS. See [Neighbor Resolution ](/configuration/shared/neighbor/ ) for setup.
2026-03-03 20:59:13 +08:00
Match source device MAC address.
#### source_hostname
!!! question "Since sing-box 1.14.0"
!!! quote ""
2026-03-06 21:43:21 +08:00
Only supported on Linux, macOS, or in graphical clients on Android and macOS. See [Neighbor Resolution ](/configuration/shared/neighbor/ ) for setup.
2026-03-03 20:59:13 +08:00
Match source device hostname from DHCP leases.
2023-12-01 13:24:18 +08:00
#### rule_set
!!! question "Since sing-box 1.8.0"
2024-06-26 00:45:10 +08:00
Match [rule-set ](/configuration/route/#rule_set ).
2023-12-01 13:24:18 +08:00
#### rule_set_ipcidr_match_source
!!! question "Since sing-box 1.8.0"
2024-06-24 09:41:00 +08:00
!!! failure "Deprecated in sing-box 1.10.0"
`rule_set_ipcidr_match_source` is renamed to `rule_set_ip_cidr_match_source` and will be remove in sing-box 1.11.0.
2024-06-26 00:45:10 +08:00
Make `ip_cidr` in rule-sets match the source IP.
2024-06-24 09:41:00 +08:00
#### rule_set_ip_cidr_match_source
!!! question "Since sing-box 1.10.0"
2024-06-26 00:45:10 +08:00
Make `ip_cidr` in rule-sets match the source IP.
2023-12-01 13:24:18 +08:00
2022-07-27 12:03:07 +08:00
#### invert
Invert match result.
2024-11-06 19:02:55 +08:00
#### action
2022-07-08 20:15:45 +08:00
2022-07-27 12:03:07 +08:00
==Required==
2024-11-06 19:02:55 +08:00
See [Rule Actions ](../rule_action/ ) for details.
#### outbound
!!! failure "Deprecated in sing-box 1.11.0"
Moved to [Rule Action ](../rule_action#route ).
2022-07-08 20:15:45 +08:00
### Logical Fields
#### type
`logical`
#### mode
2023-06-07 20:28:21 +08:00
==Required==
2022-07-08 20:15:45 +08:00
`and` or `or`
#### rules
2022-07-27 12:03:07 +08:00
==Required==
2023-12-01 13:24:18 +08:00
Included rules.