Skip to content

Sower is a cross-platform intelligent transparent proxy solution.

License

Notifications You must be signed in to change notification settings

sower-proxy/sower

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

sower

GitHub release Actions Status GitHub issue GitHub star GitHub license

中文介绍见 Wiki

Sower is a cross-platform intelligent transparent proxy tool. It provides both socks5 proxy and DNS-based proxy. All these kinds of proxies support intelligent routing.

If you already have another proxy solution, you can use its socks5(h) service as a parent proxy to enjoy sower's intelligent routing.

Installation

To enjoy sower, you need to deploy sower on both server-side(sowerd) and client-side(sower).

Sowerd

If you want to use sower as a secondary proxy to provide intelligent routing, you can skip sowerd.

On the server-side, sowerd runs just like a web server proxy. It will bind two ports 80 / 443.

You can use your own certificate or the certificate automatically applied for by sowerd from Let's Encrypt.

There are two ways to run the sowerd service:

  1. Run the command with root permission

    # sowerd -password XXX -fake_site 127.0.0.1:8080
  2. Install as a systemd service

    [Unit]
    Description=sower server service
    After=network.target
    
    [Service]
    Type=simple
    ExecStart=/usr/local/bin/sowerd
    Environment="FAKE_SITE=127.0.0.1:8080"
    Environment="PASSWORD=XXX"
    
    [Install]
    WantedBy=multi-user.target

Sower

A config file is required on the sower client side. Here is a usable example in China.

Sower will bind 4 ports by default with root permission. They are: udp(53) / tcp(80) / tcp(443) / tcp(1080).

After doing the next three steps, you can enjoy the intelligent transparent proxy solution:

  1. Run the command with root permission:

    # sower -f sower.hcl
  2. Change your DNS server to 127.0.0.1.

  3. Set your proxy to socks5h://127.0.0.1:1080.

Architecture

Architecture diagram