v0.1.3
edit: Due to rust-lang/rust#115010 which triggers an error on Rust 1.80, it's required to build einat v0.1.3 with Rust >= 1.81. (fixed with 9e7bb8d which is not included in v0.1.3)
Highlights
- Fix a bug that might cause silent packet drop, which has been observed on PPPoE interface for large packets.
- Use pure-rust Aya loader by default, einat now has zero native dependency except libc on target platform.
This should make einat be built more easily especially for cross-compilation. - Allow attaching eBPF programs with new TCX interface, aya loader only.
- Allow do SNAT for specified internal network only
# do SNAT for internal packets with source of 192.168.1.0/24 only
einat -i extern0 --hairpin-if intern0 lo --internal 192.168.1.0/24
🚀 Features
- Add pure-Rust aya loading backend support
- Add config option to toggle TCX interface usage
- Allow do NAT for specified internal network only
- Add CLI options for snat_internals and bpf_loader
🐛 Bug Fixes
- Workaround an unroll failure
- (ebpf) Always pull first header bytes
- Split EINAT_BPF_CFLAGS args
Improve
- Increase log level of libbpf netlink error to DEBUG
- Describe NAT44 enabling more specifically
- Log eBPF loader used
- Enable bpf_fib_lookup_external by default on kernel>=6.7