Configuring a custom fteproxy tunnel
fteproxy is a
client-server proxy.
That is, fteproxy requires two separate instances (a client and a server) to operate.
For testing purposes the client and server may be on the same machine.
This page outlines how to configure fteproxy to establish your own fteproxy tunnel.
Prerequisites
- A client: this machine may be on a restricted network.
- A server: this machine should be on an unrestricted network.
The goal: fteproxy will enable you to access the Internet from the client's machine, as if your were on the server.
Installation
See our
downloads page to acquire fteproxy for your system.
Then, you can verify that fteproxy is correctly installed and in your PATH.
$ fteproxy --mode test
...
OK
Configuration
There are six variables for configuring a fteproxy client-server tunnel:
- $CLIENT_IP (default 127.0.0.1): The client-side interface to bind to.
- $CLIENT_PORT (default 8079): The client-side port to bind to.
- $SERVER_IP (default 127.0.0.1): The server's publicly facing IP.
- $SERVER_PORT (default 8080): The server's publicly facing port.
- $PROXY_IP (default 127.0.0.1): The server's (local) interface that runs a proxy.
- $PROXY_PORT (default 8081): The server's (local) port that runs a proxy.
In a typical configuration, one can leave the client and proxy variables as default. Then, change the server ip and server port, such that then run on an open port of a publicly-facing interface.
On the client: start the fteproxy client
$ fteproxy --client_ip $CLIENT_IP --client_port $CLIENT_PORT --server_ip $SERVER_IP --server_port $SERVER_PORT
On the server: start the fteproxy server
$ fteproxy --server_ip $SERVER_IP --server_port $SERVER_PORT --proxy_ip $PROXY_IP --proxy_port $PROXY_PORT
On the server: start your proxy
A command to start a SOCKS server. As one example:
$ ssh -D 8081 [my username]@localhost
However, any TCP proxy can be used as an endpoint.
Testing
On the client
First, select a destination website:
$ curl example.com
and ensure that it can be curl'd.
Then, connect through your fteproxy connection:
$ curl --socks $CLIENT_IP:$CLIENT_PORT example.com
and ensure that you are able to connect to the remote website.