2 changed files with 20 additions and 39 deletions
@ -12,22 +12,25 @@ cargo build --release |
|||
## Setup |
|||
A standard setup, which would route all traffic from your system through the tunnel interface, could look as follows: |
|||
```shell |
|||
# Define the proxy endpoint. |
|||
# The proxy type can be either SOCKS5 or HTTP. |
|||
PROXY_TYPE=SOCKS5 |
|||
PROXY_IP=1.2.3.4 |
|||
PROXY_PORT=1080 |
|||
|
|||
# Create a tunnel interface named tun0 which your user can bind to, so we don't need to run tun2proxy as root. |
|||
# Create a tunnel interface named tun0 which your user can bind to, |
|||
# so we don't need to run tun2proxy as root. |
|||
sudo ip tuntap add name tun0 mode tun user $USER |
|||
sudo ip link set tun0 up |
|||
|
|||
# To prevent a routing loop, we add a route to the proxy server that behaves like the default route. |
|||
# To prevent a routing loop, we add a route to the proxy server that behaves |
|||
# like the default route. |
|||
sudo ip route add "$PROXY_IP" $(ip route | grep '^default' | cut -d ' ' -f 2-) |
|||
|
|||
# Route all your traffic through tun0 without interfering with the default route. |
|||
sudo ip route add 128.0.0.0/1 dev tun0 |
|||
sudo ip route add 0.0.0.0/1 dev tun0 |
|||
|
|||
./target/release/tun2proxy --tun tun0 --proxy socks5 --addr "$PROXY_IP:$PROXY_PORT" |
|||
./target/release/tun2proxy --tun tun0 --proxy "$PROXY_TYPE://$PROXY_IP:$PROXY_PORT" |
|||
``` |
|||
|
|||
Note that if you paste these commands into a shell script, which you then run with `sudo`, you might want to replace |
|||
@ -36,49 +39,27 @@ Note that if you paste these commands into a shell script, which you then run wi |
|||
For DNS to work, you might need an additional tool like [dnsproxy](https://github.com/AdguardTeam/dnsproxy) that is |
|||
configured to listen on a local UDP port and communicates with the upstream DNS server via TCP. |
|||
|
|||
## CLI |
|||
======= |
|||
When you end the running of this program and want to eliminate the impact caused by the above several commands, |
|||
you can execute the following commands. |
|||
When you terminate this program and want to eliminate the impact caused by the above several commands, |
|||
you can execute the following command. The routes will be automatically deleted with the tunnel device. |
|||
```shell |
|||
sudo ip route del 0.0.0.0/1 dev tun0 |
|||
sudo ip route del 128.0.0.0/1 dev tun0 |
|||
sudo ip link set tun0 down |
|||
sudo ip tuntap del tun0 mode tun |
|||
sudo ip link del tun0 |
|||
``` |
|||
|
|||
## CLI |
|||
``` |
|||
Tunnel interface to proxy. |
|||
|
|||
Usage: tun2proxy [OPTIONS] --tun <name> --proxy <type> --addr <ip:port> |
|||
Usage: tun2proxy [OPTIONS] --proxy <URL> |
|||
|
|||
Options: |
|||
-t, --tun <name> |
|||
Name of the tun interface |
|||
|
|||
-p, --proxy <type> |
|||
What proxy type to run |
|||
|
|||
Possible values: |
|||
- socks5: SOCKS5 server to use |
|||
- http: HTTP server to use |
|||
|
|||
-a, --addr <ip:port> |
|||
Server address with format ip:port |
|||
|
|||
--username <username> |
|||
Username for authentication |
|||
|
|||
--password <password> |
|||
Password for authentication |
|||
|
|||
-h, --help |
|||
Print help (see a summary with '-h') |
|||
|
|||
-V, --version |
|||
Print version |
|||
-t, --tun <name> Name of the tun interface [default: tun0] |
|||
-p, --proxy <URL> The proxy URL in the form proto://[username[:password]@]host:port |
|||
-h, --help Print help |
|||
-V, --version Print version |
|||
``` |
|||
Currently, tun2proxy supports two proxy protocols: HTTP and SOCKS5. A proxy is supplied to the `--proxy` argument in the |
|||
URL format. For example, an HTTP proxy at 1.2.3.4:1080 with a username of `john.doe` and a password of `secret` is |
|||
supplied as `--proxy http://john.doe:[email protected]:1080`. This works analogously to curl's `--proxy` argument. |
|||
|
|||
## TODO |
|||
- UDP support for SOCKS |
|||
|
|||
Loading…
Reference in new issue