External Proxy Program Mac Only
Surge Mac supports the External Proxy Program policy, which allows Surge to work with other proxy software.
The following is an SSH example.
First, the policy keyword type is external.
[Proxy]
external = external, exec = "/usr/bin/ssh", args = "11.22.33.44", args = "-D", args = "127.0.0.1:1080", local-port = 1080, addresses = 11.22.33.44
The args and addresses parameters are optional, exec and local-port are required. args and addresses fields can be repeatedly used for appending.
Surge will do the following:
- When the policy is used, Surge starts the external process with the
execandargsparameters, then forwards the request to SOCKS5127.0.0.1:[local-port]. - If the external process is terminated, Surge restarts it automatically when the policy is used.
- Surge automatically excludes the addresses in the
addressesparameter from the VIF routes when Enhanced Mode is on. Use the proxy server IP address in this field. Hostnames and domains are not supported. - Surge always uses the
DIRECTpolicy for requests from external processes. Children of external processes are handled the same way for plugin programs such asobfs-local. - Surge automatically shuts down all external processes when it exits, and automatically cleans up route table items when Enhanced Mode shuts down.
Some notes:
- The behavior of items 3 and 4 overlaps. Prefer the
addressesdeclaration to exclude VIF processing, which reduces processing overhead. Item 4 is an additional protection. - stdout and stderr of external processes are redirected to
/tmp/Surge-External-xxxxxx.logfor troubleshooting. - External processes may take a short time to start. If a connection refused error is encountered when forwarding to
127.0.0.1:[local-port], Surge automatically retries after 500 ms, up to 6 times per request. - Surge iOS does not support external proxy programs. The external policy is treated as
REJECTon iOS.