|
|
|
@ -11,26 +11,31 @@ cargo build --release |
|
|
|
|
|
|
|
## Setup |
|
|
|
A standard setup, which would route all traffic from your system through the tunnel interface, could look as follows: |
|
|
|
``` |
|
|
|
# Create a tunnel interface named tun0 which your user can bind to. |
|
|
|
```shell |
|
|
|
# Define the proxy endpoint. |
|
|
|
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. |
|
|
|
sudo ip tuntap add name tun0 mode tun user $USER |
|
|
|
sudo ip link set tun0 up |
|
|
|
|
|
|
|
# To prevent a loop, replace 1.2.3.4 with the IP address of the proxy server. |
|
|
|
# This will add a route to the proxy server that behaves like the default route. |
|
|
|
sudo ip route add 1.2.3.4 $(ip route | grep '^default' | cut -d' ' -f2-) |
|
|
|
# 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 |
|
|
|
|
|
|
|
# Again, replace 1.2.3.4 with the IP address of the proxy server. |
|
|
|
./target/release/tun2proxy --tun tun0 --socks5 1.2.3.4 |
|
|
|
./target/release/tun2proxy --tun tun0 --socks5 "$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 |
|
|
|
`$USER` with `$SUDO_USER`. |
|
|
|
|
|
|
|
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 |
|
|
|
``` |
|
|
|
tun2proxy 0.1.0 |
|
|
|
@ -47,4 +52,9 @@ OPTIONS: |
|
|
|
-h, --http <IP:PORT> HTTP server to use |
|
|
|
-s, --socks5 <IP:PORT> SOCKS5 server to use |
|
|
|
-t, --tun <TUN> Name of the tun interface |
|
|
|
``` |
|
|
|
``` |
|
|
|
|
|
|
|
## TODO |
|
|
|
- Authentication for SOCKS (plain) and HTTP (base64) |
|
|
|
- UDP support for SOCKS |
|
|
|
- Virtual DNS |
|
|
|
|