Uki

Uki (pronounced ookee) is a fast, simple and cross-platform packet forwarder and encryptor. It allows you to forward UDP and TCP packets between two or more hosts, and encrypts the packets to protect your data from prying eyes (you read "firewalls"!). Uki is easy to use, and can be configured with a simple command line interface.

Here are some of the features of Uki:

Usage

IPs and ports are just for illustration. Both IPv4 and IPv6 are supported. For globally listen on IPv4, use 0.0.0.0, and for IPv6, use [::].

Here's an example configuration:

text Client Traffic <==> Uki Client <==> <Uki Traffic> <==> Uki Server <==> Remote Traffic | | | | listen: 127.0.0.1:1111 listen: 127.0.0.1:2222 remote: 127.0.0.1:2222 remote: 127.0.0.1:3333

For Uki Client you run:

sh uki --listen 127.0.0.1:1111 --remote 127.0.0.1:2222 --protocol udp client

And for Uki Server you run:

sh uki --listen 127.0.0.1:2222 --remote 127.0.0.1:3333 --protocol udp server

Please consult uki --help for more options.

Supported Protocols

Supported Encryptions

Installation

Install the Uki by running cargo install uki or use the latest prebuild binaries from Releases.

TODO

Contributions are so welcome.

Command Line

```text Usage: uki [OPTIONS] --listen --remote --protocol

Commands: client server help Print this message or the help of the given subcommand(s)

Options: -l, --listen Listen address. e.g. '0.0.0.0:8080' or '[::]:8080' for dual stack listen -r, --remote Remote address. Both IPv4 and IPv6 is supported --protocol Protocol of choice. (uot: udp over tcp) [possible values: udp, tcp, uot] --deadline Enable deadline on open connections. An open connection will be forcibly closed after provided seconds --timeout Connections that fail or are idle for timeout seconds will be closed. (udp related protocols only) [default: 20] --encryption Enable encryption. Usage format: ':', e.g. 'xor:mysecurekey'. This should be enabled on both server and client. Currently only XOR is supported --custom-handshake Enable sending custom handshake data. Format: ','. When enabled, it should be enabled on both server and client with the same request and response file --daemonize Run the app as a daemon --log-level Log level. Possible values from most to least priority: trace, debug, info, warn, error [default: ERROR] --log-path Path of the log file --mtu Maximum datagram size [default: 4096] -h, --help Print help -V, --version Print version ```

License

Licensed under either of

at your option.

Contribution

Unless you explicitly state otherwise, any contribution intentionally submitted for inclusion in the work by you, as defined in the Apache-2.0 license, shall be dual licensed as above, without any additional terms or conditions.