https://github.com/ewpratten/protomask
Fast & reliable user space NAT64
https://github.com/ewpratten/protomask
clat linux-networking nat64
Last synced: 5 months ago
JSON representation
Fast & reliable user space NAT64
- Host: GitHub
- URL: https://github.com/ewpratten/protomask
- Owner: ewpratten
- License: gpl-3.0
- Created: 2023-07-14T15:44:32.000Z (about 2 years ago)
- Default Branch: master
- Last Pushed: 2024-06-04T16:03:49.000Z (over 1 year ago)
- Last Synced: 2025-04-11T11:26:43.239Z (6 months ago)
- Topics: clat, linux-networking, nat64
- Language: Rust
- Homepage:
- Size: 622 KB
- Stars: 14
- Watchers: 3
- Forks: 0
- Open Issues: 8
-
Metadata Files:
- Readme: README.md
- License: LICENSE
- Codeowners: CODEOWNERS
Awesome Lists containing this project
README
# `protomask`: Fast & reliable user space NAT64
[](https://github.com/ewpratten/protomask/releases/latest)
[](https://github.com/ewpratten/protomask/actions/workflows/build.yml)
[](https://github.com/ewpratten/protomask/actions/workflows/audit.yml)> The protomask tool suite is a collection of user space tools that translate packets between OSI layer 3 protocol versions
This repository (referred to as the *protomask tool suite*) contains the following sub-projects:
Crate
Info
Latest Version
protomask
User space NAT64 implementation
![]()
protomask-clat
User space Customer-side transLATor (CLAT) implementation
![]()
easy-tun
A pure-rust TUN interface library
![]()
![]()
fast-nat
An OSI layer 3 Network Address Table built for speed
![]()
![]()
interproto
Utilities for translating packets between IPv4 and IPv6
![]()
![]()
rfc6052
A Rust implementation of RFC6052
![]()
![]()
rtnl
Slightly sane wrapper around rtnetlink
![]()
![]()
## Installation
Protomask can be installed using various methods:
### Debian
Head over to the [releases](https://github.com/ewpratten/protomask/releases) page and download the latest release for your architecture.
Then, install with:
```sh
apt install /path/to/protomask__.deb# You can also edit the config file in /etc/protomask.json
# And once ready, start protomask with
systemctl start protomask
```### Using Cargo
```bash
cargo install protomask
```## Usage
The `protomask` and `protomask-clat` binaries are mostly self-sufficient.
### Nat64
To start up a NAT64 server on the Well-Known Prefix (WKP), run:
```bash
protomask --pool-prefix
```Where `` is some block of addresses that are routed to the machine running protomask.
For more information, run `protomask --help`. Configuration may also be supplied via a JSON file. See the [example config](./config/protomask.json) for more information.
### CLAT
To start up a CLAT server on the Well-Known Prefix (WKP), run:
```bash
protomask-clat --customer-prefix
```Where `` is some block of addresses that are routed to the machine running protomask. This would generally be the address range of a home network when run on CPE. It may also be an individual client address if run on a client device instead of a router.
For more information, run `protomask-clat --help`. Configuration may also be supplied via a JSON file. See the [example config](./config/protomask-clat.json) for more information.