Evan Pratten
Evan Pratten
Software Developer

The protomask tool suite is a collection of user space tools that translate packets between OSI layer 3 protocol versions.

protomask (the main binary) is a user space NAT64 implementation that acts as the core NAT64 translator inside AS54041 (my autonomous system). It prioritizes efficiency and ease of use from the operator's standpoint.

I began the protomask project in 2023 as a replacement for tayga (the translator I was using at the time). It has since served as a robust & reliable NAT64 translator for my network, and has been a great way for me to learn more about the inner workings of both versions of the Internet Protocol.

The tool suite

Alongside protomask itself, the project provides a handful of Rust crates that perform each of the tasks needed to build a NAT64 translator. This way, even if you don't like my implementation specifically, it is easy to build on top of my work. I hope that my protocol translation logic comes to be of use to others in the future.

The libraries exposed by this project are as follows:

Crate Info Latest Version
easy-tun A pure-rust TUN interface library crates.io docs.rs
fast-nat An OSI layer 3 Network Address Table built for speed crates.io docs.rs
interproto Utilities for translating packets between IPv4 and IPv6 crates.io docs.rs
rfc6052 A Rust implementation of RFC6052 crates.io docs.rs
rtnl Slightly sane wrapper around rtnetlink crates.io docs.rs

Additionally, a secondary binary (protomask-clat) is shipped alongside the project. This binary is a simple CLAT implementation that can be used to deploy IPv4 networks across IPv6-only links.

Learn more

The protomask tool suite is Open Source. Check it out on GitHub.