

GitHub - Dreamacro/clash: A rule based proxy in Go.
source link: https://github.com/Dreamacro/clash
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

README.md
Clash
A rule based proxy in Go.
Features
- HTTP/HTTPS and SOCKS proxy
- Surge like configuration
- GeoIP rule support
- Support Vmess/Shadowsocks/Socks5
- Support for Netfilter TCP redirect
Discussion
Install
You can build from source:
go get -u -v github.com/Dreamacro/clash
Pre-built binaries are available: release
Requires Go >= 1.10.
Daemon
Unfortunately, there is no native elegant way to implement golang's daemon.
So we can use third-party daemon tools like pm2, supervisor, and so on.
In the case of pm2, we can start the daemon this way:
pm2 start clash
If you have Docker installed, you can run clash directly using docker-compose
.
Config
NOTE: after v0.7.1, clash using yaml as configuration file
Configuration file at $HOME/.config/clash/config.yml
Below is a simple demo configuration file:
# port of HTTP port: 7890 # port of SOCKS5 socks-port: 7891 # redir proxy for Linux and macOS redir-port: 7892 allow-lan: false # Rule / Global/ Direct mode: Rule # set log level to stdout (default is info) # info / warning / error / debug log-level: info # A RESTful API for clash external-controller: 127.0.0.1:9090 Proxy: # shadowsocks # The types of cipher are consistent with go-shadowsocks2 # support AEAD_AES_128_GCM AEAD_AES_192_GCM AEAD_AES_256_GCM AEAD_CHACHA20_POLY1305 AES-128-CTR AES-192-CTR AES-256-CTR AES-128-CFB AES-192-CFB AES-256-CFB CHACHA20-IETF XCHACHA20 # after v0.7.1 clash support chacha20 rc4-md5 - { name: "ss1", type: ss, server: server, port: 443, cipher: AEAD_CHACHA20_POLY1305, password: "password" } - { name: "ss2", type: ss, server: server, port: 443, cipher: AEAD_CHACHA20_POLY1305, password: "password", obfs: tls, obfs-host: bing.com } # vmess # cipher support auto/aes-128-gcm/chacha20-poly1305/none - { name: "vmess1", type: vmess, server: server, port: 443, uuid: uuid, alterId: 32, cipher: auto } - { name: "vmess2", type: vmess, server: server, port: 443, uuid: uuid, alterId: 32, cipher: auto, tls: true } # socks5 - { name: "socks", type: socks5, server: server, port: 443 } Proxy Group: # url-test select which proxy will be used by benchmarking speed to a URL. - { name: "auto", type: url-test, proxies: ["ss1", "ss2", "vmess1"], url: http://www.gstatic.com/generate_204, delay: 300 } # fallback select an available policy by priority. The availability is tested by accessing an URL, just like an auto url-test group. - { name: "fallback-auto", type: fallback, proxies: ["ss1", "ss2", "vmess1"], url: http://www.gstatic.com/generate_204, delay: 300 } # select is used for selecting proxy or proxy group # you can use RESTful API to switch proxy, is recommended for use in GUI. - { name: "Proxy", type: select, proxies: ["ss1", "ss2", "vmess1", "auto"] } Rule: - DOMAIN-SUFFIX,google.com,Proxy - DOMAIN-KEYWORD,google,Proxy - DOMAIN-SUFFIX,ad.com,REJECT - GEOIP,CN,DIRECT # note: there is two "," - FINAL,,Proxy
Thanks
License
TODO
- Complementing the necessary rule operators
- Redir proxy
- UDP support
- Connection manager
Recommend
About Joyk
Aggregate valuable and interesting links.
Joyk means Joy of geeK