#proxy #tor #http #socks5

app cleartor

Clearnet to Tor proxy

7 releases

0.1.6 Feb 26, 2019
0.1.5 Feb 21, 2019

#21 in #socks5

AGPL-3.0-or-later

15KB
137 lines

cleartor

Crates.io

A simple proxy to forward clearnet traffic to an onion URL.

The use case for this is to host a server behind a firewall that's only exposed with an onion address and hosting a (anonymous) lightweight VPS that forwards all traffic received on a regular DNS address to the server.

It's similar to web2tor except it only forwards to 1 specific onion link.

cleartor doesn't log anything except when run in debug mode.

Install

You need at least libc, pkg-config and openssl to build, and tor to run

sudo apt install build-essential pkg-config libssl-dev tor

To install cleartor just run

cargo install cleartor

The following should be added to /etc/tor/torrc

# The port cleartor will bind on
SocksPort 9050
# Only allow local traffic
SocksPolicy accept 127.0.0.1/16
SocksPolicy reject *

Restart the Tor service after changing the config

sudo service tor restart

Usage

Using the config in /etc/cleartor.toml

./cleartor

Using another config

./cleartor -c other-location/cleartor.toml

Run it on the background and never quit

nohup cleartor > /dev/null 2>&1 &

Run it as a non-root user and still be able to bind to port 80

sudo apt install libcap2-bin
sudo setcap 'cap_net_bind_service=+ep' ~/.cargo/bin/cleartor

Example Config

/etc/cleartor.toml:

# The address and port to listen on
# 0.0.0.0 to listen to all connections
# 127.0.0.1 to listen to local only connections
listen_ip = "0.0.0.0"
# Set the port to 0 to receive a port from the OS
listen_port = 80
# The socks port as defined as 'SocksPort' in /etc/tor/torrc, without the address
tor_socks_port = 9050

# This section is optional
[log]
# Where to save the log
file = "/var/log/cleartor.log"
# What to log
file_level = "DEBUG"
# What to print to the console
print_level = "INFO"

[[routes]]
# The LOCATION HTTP header will be replaced with this instead of the .onion URL when you receive a response
# This field is probably misconfigured if forms aren't working
domain = "torproject.org"
# The onion address to forward all traffic to
onion = "expyuzz4wqqyqhjn.onion"

[[routes]]
# Alternatively you can also add an IP here to route specific traffic (or to test when the DNS is not available)
domain = "127.0.0.1"
onion = "expyuzz4wqqyqhjn.onion"

Run with

sudo cleartor -c /etc/cleartor.toml

License

Licensed under AGPLv3.

Dependencies

~11MB
~183K SLoC