Surge配置文件详解¶
本文主要介绍Surge的配置文件,带大家手撸配置文件,具体的懒人配置、用法移步 懒人配置。
Macos 和 iOS 相同的配置项¶
- loglevel
loglevel = notify
作用
日志级别,不建议在日常使用中启用详细,因为这会显著降低性能。 可选参数:verbose, info, notify, warning
- ipv6
ipv6 = false
作用
IPv6协议, 启用完整的 IPv6 支持,具体来说,开启该选项后,访问域名时会查询该域名的AAAA记录。即使未启用此选项,也可以通过直接访问 IPv6 地址来访问 IPv6 站点。
- ipv6-vif
ipv6-vif = false
作用
允许 IPv6 通过 Surge VIF。当您希望 Surge 处理连接到 IPv6 地址的原始 TCP 连接时很有用。 off :切勿使用 IPv6 设置 Surge VIF auto :仅当本地网络具有有效的 IPv6 网络时,才使用 IPv6 设置 Surge VIF always :始终使用 IPv6 设置 Surge VIF
- dns-server
dns-server = system, 223.5.5.5, 119.29.29.29, 1.1.1.1, 1.0.0.1, 8.8.8.8, 8.8.4.4, 9.9.9.9:995
作用
dns服务器,上游DNS服务器的IP地址
- skip-proxy
skip-proxy = localhost, *.local, 0.0.0.0/8, 10.0.0.0/8, 17.0.0.0/8, 100.64.0.0/10, 127.0.0.0/8, 169.254.0.0/16, 172.16.0.0/12, 192.0.0.0/24, 192.0.2.0/24, 192.168.0.0/16, 192.88.99.0/24, 198.18.0.0/15, 198.51.100.0/24, 203.0.113.0/24, 224.0.0.0/4, 240.0.0.0/4, 255.255.255.255/32
作用
跳过代理,在 iOS 版本中,此选项强制与这些域/IP 范围的连接由 Surge VIF 而不是 Surge 代理处理。在 macOS 版本中,当启用“设置为系统代理”时,这些设置将应用于系统。此选项用于修复某些应用的兼容性问题。 apple.com、apple.com、192.168.2. or 192.168.2.0/24 注意:如果输入 IP 地址或地址范围,则只有在使用该地址连接到该主机时才能绕过代理,而不能在通过解析为该地址的域名连接到主机时绕过代理。
- exclude-simple-hostnames
exclude-simple-hostnames = true
作用
排除简单主机名,就像 skip-proxy 参数一样。此选项允许请求使用由 Surge VIF 而不是 Surge 代理处理的简单主机名(不带点)。 比如:mysql01、redis01
- external-controller-access
external-controller-access = mima1234@0.0.0.0:6166
作用
外部控制器访问,此选项允许外部控制器控制 Surge,例如 Surge Dashboard (macOS) 和 Surge iOS 遥控器 (iOS)。例如:key@0.0.0.0:6166
- http-api-tls
http-api-tls = False
作用
使用 HTTPS 协议而不是 HTTP必须先配置 MitM CA 证书。您需要在客户端设备上手动安装证书。
- http-api-web-dashboard
http-api-web-dashboard = false
作用
启用此功能后,您可以通过 Web 浏览器控制 Surge。
- show-error-page-for-reject
show-error-page-for-reject = true
作用
显示错误页面拒绝,如果请求是纯 HTTP 请求,则显示 REJECT 策略的错误网页。
- tun-excluded-routes
tun-excluded-routes = 22.0.0.0/8
作用
Surge VIF只能处理 TCP 和 UDP 协议。使用此选项可绕过特定 IP 范围,以允许所有流量通过。 注意:此选项仅适用于Surge VIF。Surge Proxy Server 处理的请求不受影响。合并 skip-proxy 并确保 tun-excluded-routes 特定 HTTP 流量绕过 Surge。
- tun-included-routes
tun-included-routes = 192.18.0.0/16
作用
默认情况下,Surge VIF 接口将自身声明为默认路由。但是,由于 Wi-Fi 接口的路由较小,因此某些流量可能无法通过浪涌 VIF 接口。使用此选项可添加较小的路由。
- internet-test-url
internet-test-url = http://223.6.6.6
作用
国内Internet 连接测试的 URL, 以及,DIRECT 策略的测试 URL
- proxy-test-url
proxy-test-url = http://1.0.0.1/generate_204
作用
代理、策略组的默认测试 URL
- test-timeout
test-timeout = 5
作用
连接测试超时(秒)
- always-real-ip
always-real-ip = *.test.com
作用
始终真实的 IP 此选项要求 Surge 在 Surge VIF 处理 DNS 问题时返回真实 IP 地址而不是虚假 IP 地址 DNS数据包将被转发到上游DNS服务器 此参数属于主机列表类型,详细规则请参见:https://manual.nssurge.com/others/host-list.html
1.使用前缀 - 排除主机名
2.支持通配符 * 和 ?
3.使用后缀 :port 匹配其他端口,如果未提供端口号,则 Surge 将自动为该参数附加标准端口号,就像 force-http-engine-hosts 参数一样,如果仅配置了主机名,则仅对端口 80 有效。对于 MITM 功能,它仅对端口 443 有效。
4.使用后缀 :0 以匹配所有端口
5.使用
- hijack-dns
hijack-dns = *:53
作用
劫持DNS,默认情况下,Surge 仅返回发送到 Surge DNS 地址 (198.18.0.2) 的 DNS 查询的虚假 IP 地址。发送到标准 DNS 的查询将被转发。某些设备或软件始终使用硬编码的 DNS 服务器。(例如,Google Speakers始终使用 8.8.8.8)。您可以使用此选项劫持查询以获取虚假地址。您可以使用 hijack-dns = *:53 劫持所有DNS查询
- force-http-engine-hosts
force-http-engine-hosts = *.test.com
作用
使 Surge 将 TCP 连接视为 HTTP 请求。Surge HTTP 引擎将处理请求,并且所有高级功能都将可用,例如捕获、重写和脚本编写。此参数属于主机列表类型,详细规则请参见:https://manual.nssurge.com/others/host-list.html
- encrypted-dns-follow-outbound-mode
encrypted-dns-follow-outbound-mode = true
作用
加密 DNS 跟随出站模式,默认情况下,加密的 DNS 查找使用直接出站。启用该选项将使 DOH 遵循出站模式设置和规则。
- encrypted-dns-server
encrypted-dns-server =
作用
加密的 DNS 服务器,加密的 DNS 服务器的 URL。如果配置了加密 DNS,则传统 DNS 将仅用于测试连接并解析加密 DNS URL 中的域。
- encrypted-dns-skip-cert-verification
encrypted-dns-skip-cert-verification = false
作用
跳过加密的DNS服务器证书验证,这是不安全的。
- use-local-host-item-for-proxy
use-local-host-item-for-proxy = true
作用
使用本地主机代理,默认情况下,如果使用代理策略,则始终在远程服务器上执行 DNS 查找。启用此选项后,如果存在目标域的本地 DNS 映射结果,则 Surge 会使用 IP 地址而不是域来设置代理连接。
- geoip-maxmind-url
geoip-maxmind-url = https://github.com/Hackl0us/GeoIP2-CN/raw/release/Country.mmdb
作用
要更新的 GeoIP 数据库的 URL
- disable-geoip-db-auto-update
disable-geoip-db-auto-update = false
作用
禁用 GeoIP 数据库的自动更新
- allow-dns-svcb
allow-dns-svcb = false
作用
iOS 系统可能会执行 SVCB 记录 DNS 查找,而不是标准 A 记录查找。这会导致 Surge 无法返回虚拟 IP 地址。因此,默认情况下,禁止 SVCB 记录查找,以强制系统执行 A 记录查找。
- udp-policy-not-supported-behaviour
udp-policy-not-supported-behaviour = REJECT
作用
UDP 流量与不支持 UDP 中继的策略匹配时的回退行为,可能的值: DIRECT 、 REJECT, 如果没有代理服务器支持 UDP 转发,可修改为「 direct 」或注释下条,但需注意同一目标主机名 TCP 请求与 UDP 请求的源地址不同所造成的隐私及安全风险。
- proxy-test-udp
proxy-test-udp = apple.com@8.8.8.8
作用
代理的默认 UDP 测试参数, 例如: apple.com@8.8.8.8
- udp-priority
udp-priority = false
作用
当系统负载非常高且数据包处理延迟时,启用将优先处理 UDP 数据包。也称为游戏模式
- always-raw-tcp-hosts
always-raw-tcp-hosts = *.baidu.com
作用
Surge 将自动嗅探发送到端口 80 和 443 的 TCP 请求的协议,从而在优化性能的同时启用高级 HTTP/HTTPS 功能。但是,这可能会导致一些兼容性问题。如果遇到问题,可以在此处添加主机名,Surge 不会嗅探这些请求的协议。此参数属于主机列表类型,详细规则请参见:https://manual.nssurge.com/others/host-list.html
iOS 独有的配置项¶
- allow-wifi-access
allow-wifi-access = false
作用
允许 wifi 访问,允许 Surge 代理服务从 LAN 中的其他设备访问。
- wifi-access-http-port
wifi-access-http-port = 6152
作用
Surge HTTP 代理服务的端口号
- wifi-access-socks5-port
wifi-access-socks5-port = 6153
作用
Surge SOCKS5 代理服务的端口号
- wifi-access-http-auth
wifi-access-http-auth = surge:mima1234
作用
要求对 Surge HTTP 代理服务进行身份验证。例如:用户名:密码
- wifi-assist
wifi-assist = false
作用
启用 Wi-Fi 助手 (在 Wi-Fi 网络不佳时尝试使用数据网络建立连接,请仅当使用不限量的数据流量时开启)
- hide-vpn-icon
hide-vpn-icon = false
作用
隐藏状态栏中的 VPN 图标
- all-hybrid
all-hybrid = false
作用
当 Wi-Fi 网络较差时,不要设置与蜂窝数据的连接,而是始终同时设置与 Wi-Fi 和蜂窝数据的连接 此选项可以在 Wi-Fi 较差或 Wi-Fi 网络切换时显著改善网络体验 此功能将应用于所有 TCP 连接和 DNS 查找。仅当您拥有无限的蜂窝数据计划时才启用它
- allow-hotspot-access
allow-hotspot-access = ture
作用
允许在“个人热点”打开时从其他设备访问 Surge 代理服务
- include-all-networks
include-all-networks = false
作用
包含所有网络,默认情况下,某些请求可能不会被 Surge 接管。例如,应用程序可以绑定到物理网络接口以绕过浪涌 VIF。启用“包括所有网络”选项,以确保所有请求都由 Surge 处理而不会泄漏。当您使用 Surge 作为防火墙时,此选项很有用。(需要 iOS 14.0 或以上版本),启用此选项可能会导致 AirDrop 和 Xcode 调试问题、通过 USB 的 Surge Dashboard 无法正常工作以及其他意外的副作用。请谨慎使用。
- include-local-networks
include-local-networks = false
作用
包含本地网络,启用此选项可使 Surge VIF 处理发送到 LAN 的请求。(需要 iOS 14.2 或更高版本)启用此选项可能会导致 AirDrop 和 Xcode 调试问题、通过 USB 的 Surge Dashboard 无法正常工作以及其他意外的副作用。请谨慎使用。必须与 include-all-networks=true 结合使用。
- include-apns
include-apns = false
作用
启用此选项可使 Surge VIF 处理 Apple 推送通知服务 (APNs) 的网络流量。必须与 include-all-networks=true 结合使用。
- include-cellular-services
include-cellular-services = false
作用
启用此选项可使 Surge VIF 处理蜂窝服务的 Internet 可路由网络流量。(VoLTE、Wi-Fi 通话、IMS、彩信、可视语音信箱等).请注意,某些蜂窝运营商会绕过互联网,将蜂窝网络服务流量直接路由到运营商网络。此类蜂窝服务流量始终被排除在隧道之外。必须与 include-all-networks=true 结合使用。
- compatibility-mode
compatibility-mode = 1
作用
兼容性模式,此选项用于控制 Surge iOS 的工作模式。
0:自动,在 5.8.0 之前的 Surge iOS 版本中,这相当于 1,从 5.8.0 开始,它相当于 3
1:代理接管 + VIF,在此模式下,代理接管的优先级高于 VIF 接管,提供最佳性能,但某些应用程序可能会检查代理设置并拒绝工作。
2:仅代理接管
3:VIF Takeover Only:最新版本的默认工作模式。
4:代理接管 + VIF,但代理使用 VIF 地址而不是环回地址。
5:代理接管+VIF,但VIF路由使用多个较小的路由进行接管,没有配置默认路由,可以用来绕过一些特殊问题。(例如,HomeKit 安防摄像头)
Macos 独有的配置¶
- use-default-policy-if-wifi-not-primary
use-default-policy-if-wifi-not-primary = false
作用
如果禁用,即使 Wi-Fi 不是主网络接口,SSID/BSSID 模式仍可匹配。
- read-etc-hosts
read-etc-hosts = true
作用
遵循 /etc/hosts 中的本地 DNS 映射项
- http-listen
http-listen = 0.0.0.0
作用
Surge HTTP 代理服务的端口号
- socks5-listen
socks5-listen = 0.0.0.0
作用
Surge SOCKS5 代理服务的端口号
- debug-cpu-usage
debug-cpu-usage = false
作用
启用 CPU 调试模式。这可能会降低性能
- debug-memory-usage
debug-memory-usage = false
作用
启用内存调试模式。这可能会降低性能
- vif-mode
vif-mode = v3
作用
vif模式
auto :让Surge自动选择最合适的工作模式。
v1 :传统模式,TCP协议栈完全由Surge管理。由于 Surge 运行在用户空间中,这意味着每个数据包都需要从内核空间传输到用户空间进行处理。
v2 :在 5.0 版本中引入,它使用 macOS 中的数据包过滤器机制,利用 macOS 的 TCP 协议栈,从而避免了在内核空间和用户空间之间切换的开销,从而显着提高了性能。但是,由于它需要修改 pf 设置,因此它与虚拟机网络和网络共享功能不兼容。
v3 :在 5.2 版中引入,它绕过了数据包过滤器,并采用另一种技术来使用 macOS 的 TCP 协议栈。性能略低于 v2,但避免了因调整 pf 设置而导致的兼容性问题。