访问 https://github.com/gfreezy/seeker/releases 下载最新 release
chmod +x seeker-osx # or chmod+x seeker-linux
-
启动
seeker
Seeker 0.2.0 gfreezy <gfreezy@gmail.com> Tun to Shadowsockets proxy. https://github.com/gfreezy/seeker USAGE: seeker [FLAGS] [OPTIONS] FLAGS: --encrypt Encrypt config file and output to terminal -h, --help Prints help information -V, --version Prints version information OPTIONS: -c, --config <FILE> Sets config file. Sample config at https://github.com/gfreezy/seeker/blob/master/sample_config.yml --config-url <CONFIG_URL> URL to config --key <KEY> Key for encryption/decryption -l, --log <PATH> Log file -u, --uid <UID> User id to proxy
本地配置文件启动
sudo seeker --config path/to/config.yml
远程配置文件启动
sudo seeker --config-url https://pastebin.com/raw/config --key encrypt-key
生成远程配置文件
sudo seeker --config path/to/config.yml --encrypt --key encrypt-key
-
seeker
启动的时候会自动将本机 DNS 修改为127.0.0.1
,退出的时候将 DNS 设置为默认值
-
seeker
直接使用的 clash 的规则。目前支持DOMAIN
DOMAIN-KEYWORD
DOMAIN-SUFFIX
MATCH
规则,不支持IP
相关的规则。 -
支持的
Action
: -
PROXY
走代理 -
DIRECT
直连 -
REJECT
拒绝 -
PROBE
默认尝试直连,如果超时,则走代理。由direct_connect_timeout
控制超时时间 -
确保系统没有重复的
tun_name
-
确保 TUN 的网络
tun_ip
和tun_cidr
与当前所处网络环境不在一个网段 -
seeker
支持 socks5 代理、http 代理和 shadowsocks 代理。优先级为 socks5 代理 > shadowsocks 代理 > http 代理。
verbose: false
dns_start_ip: 10.0.0.10
dns_servers:
- 223.5.5.5:53
- 114.114.114.114:53
- tcp://114.114.114.114:53
dns_timeout: 1s
tun_name: utun4
tun_ip: 10.0.0.1
tun_cidr: 10.0.0.0/16
dns_listen: 0.0.0.0:53
gateway_mode: true
ping_timeout: 2s
probe_timeout: 30ms # probe_timeout 时间内如果 TCP 可以直接连接,则直连;否则走代理
connect_timeout: 1s
read_timeout: 30s
write_timeout: 5s
max_connect_errors: 2 # ss 服务器重试次数,到达重试次数后会自动选择下一个最快的服务器
servers:
- name: socks5 proxy server
addr: domain-or-ip-to-socks5-server:port
protocol: Socks5 # Https or Http or Socks5 or Shadowsocks
- name: http proxy server
addr: domain-or-ip-to-socks5-server:port
username: username
password: pass
protocol: Https # Https or Http or Socks5 or Shadowsocks
- name: https proxy server
addr: domain-or-ip-to-socks5-server:port
username: username
password: pass
protocol: Https # Https or Http or Socks5 or Shadowsocks
- name: server1
addr: domain-or-ip-to-ss-server:port
method: chacha20-ietf
password: password
protocol: Shadowsocks
- name: server2
addr: domain-or-ip-to-ss-server:port
method: chacha20-ietf
password: password
protocol: Shadowsocks
rules:
- 'DOMAIN,audio-ssl.itunes.apple.com,DIRECT'
- 'DOMAIN,gspe1-ssl.ls.apple.com,REJECT'
- 'DOMAIN-SUFFIX,aaplimg.com,DIRECT'
- 'DOMAIN-SUFFIX,apple.co,DIRECT'
- 'DOMAIN-KEYWORD,bbcfmt,PROXY'
- 'DOMAIN-KEYWORD,uk-live,PROXY'
- 'DOMAIN-SUFFIX,snssdk.com,DIRECT'
- 'DOMAIN-SUFFIX,toutiao.com,PROBE'
- 'MATCH,PROBE'
使用 socks5 代理的时候,需要将所有直连的域名设置在配置文件里面,如果使用 ss 或者 vmess 之类的,需要将 ss 或 vmess server 的域名也加入配置文件。否则有可能会导致死循环,没法正常使用。
CONNECT
协议,而且不支持 UDP 协议。
修改路由表,将希望走代理的 IP 或者网段路由到虚拟网卡。如果使用了本机 socks5 代理,则必须确保 socks5 不会直连加入路由表的网段,否则会死循环。
比如我希望 8.8.8.8
这个 IP 所有流量都走代理,且使用本地 ClashX 创建的 socks5 代理:
-
将
8.8.8.8
路由到 utun4sudo route -n add -net 8.8.8.8 utun4
-
修改 clashx 的规则,增加下面一条
- 'IP-CIDR,8.8.8.8/32,rixCloud'
-
打开
gateway_mode
。gateway_mode
开启后,dns_server
会自动覆盖为0.0.0.0:53
gateway_mode: true
-
查看本地 IP
ifconfig
-
打开希望走代理的手机或者电脑的网络设置,将 DNS 与 网关 修改为步骤2获取到的 IP
-
If you encountered
"seeker" cannot be opened because the developer cannot be verified.
, you can go toSystem Preferences
→Security & Privacy
→General
and enable any blocked app from Allow apps downloaded from pane at the bottom of the window. -
Ubuntu 提示
Address already used
, 查看这里 https://unix.stackexchange.com/questions/304050/how-to-avoid-conflicts-between-dnsmasq-and-systemd-resolved
seeker
参考了 Surge for Mac
的实现原理,基本如下:
-
seeker
会在本地启动一个 DNS server,并自动将本机 DNS 修改为seeker
的 DNS 服务器地址 -
seeker
会创建一个 TUN 设备,并将 IP 设置为10.0.0.1
,系统路由表设置10.0.0.0/16
网段都路由到 TUN 设备 -
有应用请求 DNS 的时候,
seeker
会为这个域名返回10.0.0.0/16
网段内一个唯一的 IP -
seeker
从 TUN 接受到 IP 包后,会在内部组装成 TCP/UDP 数据 -
seeker
会根据规则和网络连接的 uid 判断走代理还是直连 -
如果需要走代理,将 TCP/UDP 数据转发到 SS 服务器/ socks5 代理,从代理接受到数据后,在返回给应用;如果直连,则本地建立直接将数据发送到目标地址
Licensed under either of
-
Apache License, Version 2.0 ([LICENSE-APACHE](LICENSE-APACHE) or http://www.apache.org/licenses/LICENSE-2.0)
-
MIT license ([LICENSE-MIT](LICENSE-MIT) or http://opensource.org/licenses/MIT)
at your option.