diff --git a/content/en/posts/sing-box/get-my-config/client-macos.json b/content/en/posts/sing-box/get-my-config/client-macos.json new file mode 100644 index 0000000..1c3e456 --- /dev/null +++ b/content/en/posts/sing-box/get-my-config/client-macos.json @@ -0,0 +1,193 @@ +{ + "log": { + "level": "info", + "timestamp": true + }, + "dns": { + "servers": [ + { + "tag": "dns_proxy", + "address": "https://1.1.1.1/dns-query", + "address_resolver": "dns_resolver", + "strategy": "prefer_ipv6", + "detour": "proxy" + }, + { + "tag": "dns_direct", + "address": "https://dns.alidns.com/dns-query", + "address_resolver": "dns_resolver", + "strategy": "prefer_ipv6", + "detour": "direct" + }, + { + "tag": "dns_resolver", + "address": "223.5.5.5", + "detour": "direct" + } + ], + "rules": [ + { + "outbound": "any", + "server": "dns_resolver" + }, + { + "rule_set": "geosite-geolocation-!cn", + "server": "dns_proxy" + }, + { + "rule_set": "geosite-cn", + "server": "dns_direct" + } + ], + "final": "dns_proxy" + }, + "route": { + "rule_set": [ + { + "tag": "geosite-geolocation-!cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs", + "download_detour": "proxy" + }, + { + "tag": "geoip-cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs", + "download_detour": "proxy" + }, + { + "tag": "geosite-cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs", + "download_detour": "proxy" + } + ], + "rules": [ + { + "protocol": "dns", + "outbound": "dns-out" + }, + { + "port": 853, + "network": "tcp", + "outbound": "block" + }, + { + "port": [ + 443, + 853 + ], + "network": "udp", + "outbound": "block" + }, + { + "type": "logical", + "mode": "and", + "rules": [ + { + "rule_set": "geoip-cn", + "invert": true + }, + { + "rule_set": "geosite-geolocation-!cn" + } + ], + "outbound": "proxy" + }, + { + "type": "logical", + "mode": "and", + "rules": [ + { + "rule_set": "geoip-cn" + }, + { + "rule_set": "geosite-cn" + } + ], + "outbound": "direct" + }, + { + "rule_set": "geoip-cn", + "outbound": "direct" + }, + { + "ip_is_private": true, + "outbound": "direct" + } + ], + "final": "proxy", + "auto_detect_interface": true + }, + "inbounds": [ + { + "type": "tun", + "tag": "tun-in", + "interface_name": "tun0", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, + "auto_route": true, + "strict_route": true, + "stack": "mixed", + "sniff": true + } + ], + "outbounds": [ + { + "type": "vless", + "tag": "proxy", + "server": "154.17.5.35", + "server_port": 443, + "uuid": "9337d5ec-b489-4bf4-a22c-19f7f6e8fbbd", + "flow": "xtls-rprx-vision", + "tls": { + "enabled": true, + "server_name": "portfolio.newschool.edu", + "utls": { + "enabled": true, + "fingerprint": "chrome" + }, + "reality": { + "enabled": true, + "public_key": "dpU-LTUuyoCyox_4fh5n-h5NCsSSUKXayFsOsfcIzRA", + "short_id": "7fcff4362963e98e" + } + }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, + "packet_encoding": "xudp" + }, + { + "type": "direct", + "tag": "direct" + }, + { + "type": "block", + "tag": "block" + }, + { + "type": "dns", + "tag": "dns-out" + } + ], + "experimental": { + "cache_file": { + "enabled": true, + "path": "cache.db" + } + } +} \ No newline at end of file diff --git a/content/en/posts/sing-box/get-my-config/index.md b/content/en/posts/sing-box/get-my-config/index.md index 944fdb0..0646880 100644 --- a/content/en/posts/sing-box/get-my-config/index.md +++ b/content/en/posts/sing-box/get-my-config/index.md @@ -60,7 +60,7 @@ This is my personal configuration. Obviously, exposing it to the public network { "type": "vless", "tag": "vless-in", - "listen": "0.0.0.0", + "listen": "::", "listen_port": 443, "users": [ { @@ -109,7 +109,7 @@ This is my personal configuration. Obviously, exposing it to the public network ```json { "type": "vless", - "tag": "vless-out", + "tag": "proxy", "server": "154.17.5.35", "server_port": 443, "uuid": "9337d5ec-b489-4bf4-a22c-19f7f6e8fbbd", @@ -127,6 +127,18 @@ This is my personal configuration. Obviously, exposing it to the public network "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" } ``` @@ -145,14 +157,14 @@ This is my personal configuration. Obviously, exposing it to the public network "tag": "dns_proxy", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "proxy" }, { "tag": "dns_direct", "address": "https://dns.alidns.com/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "direct" }, { @@ -263,11 +275,29 @@ This is my personal configuration. Obviously, exposing it to the public network "type": "tun", "tag": "tun-in", "interface_name": "tun0", - "inet4_address": "172.28.0.1/30", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, "auto_route": true, "strict_route": true, - "stack": "system", + "stack": "mixed", "sniff": true + }, + { + "type": "mixed", + "tag": "mixed-in", + "listen": "::", + "listen_port": 1080, + "tcp_fast_open": true, + "tcp_multi_path": true, + "udp_fragment": true, + "udp_timeout": "5m", + "sniff": false, + "sniff_override_destination": false, + "sniff_timeout": "300ms", + "domain_strategy": "prefer_ipv6", + "udp_disable_domain_unmapping": false, + "set_system_proxy": false } ], "outbounds": [ @@ -291,6 +321,18 @@ This is my personal configuration. Obviously, exposing it to the public network "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" }, { @@ -329,14 +371,14 @@ This is my personal configuration. Obviously, exposing it to the public network "tag": "dns_proxy", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "proxy" }, { "tag": "dns_direct", "address": "https://dns.alidns.com/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "direct" }, { @@ -446,14 +488,14 @@ This is my personal configuration. Obviously, exposing it to the public network { "type": "tun", "tag": "tun-in", - "inet4_address": "172.16.0.1/30", - "inet6_address": "fd00::1/126", - "mtu": 1400, + "interface_name": "tun0", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, "auto_route": true, "strict_route": true, - "stack": "gvisor", - "sniff": true, - "sniff_override_destination": false + "stack": "mixed", + "sniff": true } ], "outbounds": [ @@ -477,6 +519,18 @@ This is my personal configuration. Obviously, exposing it to the public network "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" }, { @@ -526,7 +580,7 @@ Download [client-windows.json](client-windows.json) Run the client ```bash -sing-box -c client-windows.json +sing-box run -c client-windows.json ``` For WSL2 @@ -541,6 +595,15 @@ Change the host to your own value which is the first hop of your route in WSL2. mtr jamesflare.com ``` +### Run sing-box MacOS Client + +```bash +brew install sing-box +wget -c https://www.jamesflare.com/en/get-my-proxy/client-macos.json -O ~/sing-box/config.json + +sing-box run -c ~/sing-box/config.json +``` + ### Run sing-box Android Client Remote: https://www.jamesflare.com/en/get-my-proxy/client-android.json diff --git a/content/zh-cn/posts/sing-box/get-my-config/client-macos.json b/content/zh-cn/posts/sing-box/get-my-config/client-macos.json new file mode 100644 index 0000000..1c3e456 --- /dev/null +++ b/content/zh-cn/posts/sing-box/get-my-config/client-macos.json @@ -0,0 +1,193 @@ +{ + "log": { + "level": "info", + "timestamp": true + }, + "dns": { + "servers": [ + { + "tag": "dns_proxy", + "address": "https://1.1.1.1/dns-query", + "address_resolver": "dns_resolver", + "strategy": "prefer_ipv6", + "detour": "proxy" + }, + { + "tag": "dns_direct", + "address": "https://dns.alidns.com/dns-query", + "address_resolver": "dns_resolver", + "strategy": "prefer_ipv6", + "detour": "direct" + }, + { + "tag": "dns_resolver", + "address": "223.5.5.5", + "detour": "direct" + } + ], + "rules": [ + { + "outbound": "any", + "server": "dns_resolver" + }, + { + "rule_set": "geosite-geolocation-!cn", + "server": "dns_proxy" + }, + { + "rule_set": "geosite-cn", + "server": "dns_direct" + } + ], + "final": "dns_proxy" + }, + "route": { + "rule_set": [ + { + "tag": "geosite-geolocation-!cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-geolocation-!cn.srs", + "download_detour": "proxy" + }, + { + "tag": "geoip-cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geoip/rule-set/geoip-cn.srs", + "download_detour": "proxy" + }, + { + "tag": "geosite-cn", + "type": "remote", + "format": "binary", + "url": "https://raw.githubusercontent.com/SagerNet/sing-geosite/rule-set/geosite-cn.srs", + "download_detour": "proxy" + } + ], + "rules": [ + { + "protocol": "dns", + "outbound": "dns-out" + }, + { + "port": 853, + "network": "tcp", + "outbound": "block" + }, + { + "port": [ + 443, + 853 + ], + "network": "udp", + "outbound": "block" + }, + { + "type": "logical", + "mode": "and", + "rules": [ + { + "rule_set": "geoip-cn", + "invert": true + }, + { + "rule_set": "geosite-geolocation-!cn" + } + ], + "outbound": "proxy" + }, + { + "type": "logical", + "mode": "and", + "rules": [ + { + "rule_set": "geoip-cn" + }, + { + "rule_set": "geosite-cn" + } + ], + "outbound": "direct" + }, + { + "rule_set": "geoip-cn", + "outbound": "direct" + }, + { + "ip_is_private": true, + "outbound": "direct" + } + ], + "final": "proxy", + "auto_detect_interface": true + }, + "inbounds": [ + { + "type": "tun", + "tag": "tun-in", + "interface_name": "tun0", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, + "auto_route": true, + "strict_route": true, + "stack": "mixed", + "sniff": true + } + ], + "outbounds": [ + { + "type": "vless", + "tag": "proxy", + "server": "154.17.5.35", + "server_port": 443, + "uuid": "9337d5ec-b489-4bf4-a22c-19f7f6e8fbbd", + "flow": "xtls-rprx-vision", + "tls": { + "enabled": true, + "server_name": "portfolio.newschool.edu", + "utls": { + "enabled": true, + "fingerprint": "chrome" + }, + "reality": { + "enabled": true, + "public_key": "dpU-LTUuyoCyox_4fh5n-h5NCsSSUKXayFsOsfcIzRA", + "short_id": "7fcff4362963e98e" + } + }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, + "packet_encoding": "xudp" + }, + { + "type": "direct", + "tag": "direct" + }, + { + "type": "block", + "tag": "block" + }, + { + "type": "dns", + "tag": "dns-out" + } + ], + "experimental": { + "cache_file": { + "enabled": true, + "path": "cache.db" + } + } +} \ No newline at end of file diff --git a/content/zh-cn/posts/sing-box/get-my-config/index.md b/content/zh-cn/posts/sing-box/get-my-config/index.md index ea41149..5d337d9 100644 --- a/content/zh-cn/posts/sing-box/get-my-config/index.md +++ b/content/zh-cn/posts/sing-box/get-my-config/index.md @@ -60,7 +60,7 @@ repost: { "type": "vless", "tag": "vless-in", - "listen": "0.0.0.0", + "listen": "::", "listen_port": 443, "users": [ { @@ -109,7 +109,7 @@ repost: ```json { "type": "vless", - "tag": "vless-out", + "tag": "proxy", "server": "154.17.5.35", "server_port": 443, "uuid": "9337d5ec-b489-4bf4-a22c-19f7f6e8fbbd", @@ -127,6 +127,18 @@ repost: "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" } ``` @@ -145,14 +157,14 @@ repost: "tag": "dns_proxy", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "proxy" }, { "tag": "dns_direct", "address": "https://dns.alidns.com/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "direct" }, { @@ -263,11 +275,29 @@ repost: "type": "tun", "tag": "tun-in", "interface_name": "tun0", - "inet4_address": "172.28.0.1/30", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, "auto_route": true, "strict_route": true, - "stack": "system", + "stack": "mixed", "sniff": true + }, + { + "type": "mixed", + "tag": "mixed-in", + "listen": "::", + "listen_port": 1080, + "tcp_fast_open": true, + "tcp_multi_path": true, + "udp_fragment": true, + "udp_timeout": "5m", + "sniff": false, + "sniff_override_destination": false, + "sniff_timeout": "300ms", + "domain_strategy": "prefer_ipv6", + "udp_disable_domain_unmapping": false, + "set_system_proxy": false } ], "outbounds": [ @@ -291,6 +321,18 @@ repost: "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" }, { @@ -329,14 +371,14 @@ repost: "tag": "dns_proxy", "address": "https://1.1.1.1/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "proxy" }, { "tag": "dns_direct", "address": "https://dns.alidns.com/dns-query", "address_resolver": "dns_resolver", - "strategy": "ipv4_only", + "strategy": "prefer_ipv6", "detour": "direct" }, { @@ -446,14 +488,14 @@ repost: { "type": "tun", "tag": "tun-in", - "inet4_address": "172.16.0.1/30", - "inet6_address": "fd00::1/126", - "mtu": 1400, + "interface_name": "tun0", + "inet4_address": "172.19.0.1/30", + "inet6_address": "fdfe:dcba:9876::1/126", + "mtu": 9000, "auto_route": true, "strict_route": true, - "stack": "gvisor", - "sniff": true, - "sniff_override_destination": false + "stack": "mixed", + "sniff": true } ], "outbounds": [ @@ -477,6 +519,18 @@ repost: "short_id": "7fcff4362963e98e" } }, + "multiplex": { + "enabled": false, + "protocol": "h2mux", + "max_streams": 32, + "padding": true, + "brutal": { + "enabled": false, + "up_mbps": 1000, + "down_mbps": 100 + } + + }, "packet_encoding": "xudp" }, { @@ -526,7 +580,7 @@ sudo systemctl start sing-box 运行客户端 ```bash -sing-box -c client-windows.json +sing-box run -c client-windows.json ``` 对于 WSL2 @@ -541,6 +595,15 @@ export ALL_PROXY=http://JamesFlare-NY-B.mshome.net:1080 mtr jamesflare.com ``` +### 配置 sing-box MacOS 客户端 + +```bash +brew install sing-box +wget -c https://www.jamesflare.com/en/get-my-proxy/client-macos.json -O ~/sing-box/config.json + +sing-box run -c ~/sing-box/config.json +``` + ### 配置 sing-box Android 客户端 Remote: https://www.jamesflare.com/zh-cn/get-my-proxy/client-android.json