layer4-proxy/README.md
Jacob Kiers a140748647
All checks were successful
continuous-integration/drone/push Build is passing
Correct attribution to fourth
Search and replace accidentally also renamed the original crate, called
fourth. But attributions should be correct.

Signed-off-by: Jacob Kiers <code@kiers.eu>
2024-06-19 21:59:19 +02:00

65 lines
1.6 KiB
Markdown

# l4p
> Hey, now we are on level 4!
![CI](https://drone-ci.kiers.eu/api/badges/jjkiers/layer4-proxy/status.svg)
`l4p` is a layer 4 proxy implemented by Rust to listen on specific ports and transfer TCP data to remote addresses (only TCP) according to the configuration.
## Features
- Listen on specific port and proxy to local or remote port
- SNI-based rule without terminating TLS connection
- DNS-based backend with periodic resolution
## Installation
To gain best performance on your computer's architecture, please consider build the source code. First, you may need [Rust tool chain](https://rustup.rs/).
```bash
$ cd l4p
$ cargo build --release
```
Binary file will be generated at `target/release/l4p`, or you can use `cargo install --path .` to install.
Or you can use Cargo to install `l4p`:
```bash
$ cargo install l4p
```
Or you can download binary file form the Release page.
## Configuration
`l4p` will read yaml format configuration file from `/etc/l4p/l4p.yaml`, and you can set custom path to environment variable `L4P_CONFIG`, here is an minimal viable example:
```yaml
version: 1
log: info
servers:
proxy_server:
listen:
- "127.0.0.1:8081"
default: remote
upstream:
remote: "tcp://www.remote.example.com:8082" # proxy to remote address
```
There are two upstreams built in:
* Ban, which terminates the connection immediately
* Echo, which reflects back with the input
For detailed configuration, check [this example](./config.yaml.example).
## Thanks
- [`fourth`](https://crates.io/crates/fourth), of which this is a heavily modified fork.
## License
`l4p` is available under terms of Apache-2.0.