# Requirements

## Client side Requirements

- sudo, or root access on your client machine. (The server doesn’t need admin access.)
- Python 2.7 or Python 3.5.

### Linux with NAT method

Supports:

- IPv4 TCP
- IPv4 DNS

Requires:

- iptables DNAT, REDIRECT, and ttl modules.

### Linux with TPROXY method

Supports:

- IPv4 TCP
- IPv4 UDP (requires `recmsg` - see below)
- IPv6 DNS (requires `recmsg` - see below)
- IPv6 TCP
- IPv6 UDP (requires `recmsg` - see below)
- IPv6 DNS (requires `recmsg` - see below)

Full UDP or DNS support with the TPROXY method requires the `recvmsg()` syscall. This is not available in Python 2, however is in Python 3.5 and later. Under Python 2 you might find it sufficient installing PyXAPI to get the `recvmsg()` function.

### MacOS with PF method

Supports:

- IPv4 TCP
- IPv4 DNS

Requires:

- You need to have the pfctl command.

## Server side Requirements

Python 2.7 or Python 3.5.

## Additional Suggested Software

- You may want to use autossh, available in various package management systems