Releases: hack3ric/mimic
Releases · hack3ric/mimic
v0.7.0
- (breaking) Add window probe mechanism
- Now Mimic's fake TCP connection will never reach peer's full window size and cause link breakdown by connection-tracking firewalls
- Connection between 0.7.x and 0.6.x (or lower) will suffer from excess packet drop due to the latter's small window size and inability to reply window update on peer's request.
- Add COMPAT_LINUX_6_1 option and enable in Debian 12 (bookworm) build
- Now it will disable TCP MSS reading as window scale reading has been added and will cause Linux 6.1 eBPF verifier to fail due to large program size (unable to analyze loops and branches properly)
- Debian: disable build hack on trixie and later, since kernel packages added BPF and BTF bits
v0.6.4
- Add support for interfaces without L2, e.g. PPP or TUN by specifying
--link-type=none
- Debian: fix install on non-systemd systems via dh_installsysusers
- mimic-dkms: promote lz4, xz-utils to Depends as they are used in official kernels
- Use bubblewrap for kernel module build hack, fixing issues with Linux 6.13 on Debian
- Various bug fixes
v0.6.3
- Add libxdp support via dlopen(3)
- Add
--max-window
flag for disabling variable window mechanism (mainly for debugging purposes) - Add
--xdp-mode={skb,native}
option for forcing XDP attach mode- Some VMs may encounter errors when loading Mimic, similar to that of #11. Use
--xdp-mode=skb
to work around them. - Some Intel NICs have XDP native mode for offloading XDP programs in drivers (e1000e, igb, igc, etc.), but may sometimes experience sudden connection breaks that last for minutes.
--xdp-mode=skb
may help by disabling offload.
- Some VMs may encounter errors when loading Mimic, similar to that of #11. Use
- Allow IP free bind to enable scenarios like #7.
- Various bug fixes
v0.6.2
This is a minor release with Debian packaging fixes, in line with Debian upstream packaging effort.
Major changes in v0.6.0 include:
- Do not depend on bpf_xdp_get_buff_len for payload length; this could be larger than the actual packet length, and the real length should be retrieved from packet headers
- Add kprobe checksum hacks, along with previous kfunc implementation
- Enable XDP fragments support
- RST is now sent to peers when Mimic is shutting down
- Allow domain names in filters; they are only resolved when Mimic starts, and only resolved IPs are stored
- Allow fixed or pseudo-random padding in packets
v0.6.1
This is a minor release with Debian packaging fixes, in line with Debian upstream packaging effort.
Major changes in v0.6.0 include:
- Do not depend on bpf_xdp_get_buff_len for payload length; this could be larger than the actual packet length, and the real length should be retrieved from packet headers
- Add kprobe checksum hacks, along with previous kfunc implementation
- Enable XDP fragments support
- RST is now sent to peers when Mimic is shutting down
- Allow domain names in filters; they are only resolved when Mimic starts, and only resolved IPs are stored
- Allow fixed or pseudo-random padding in packets
v0.6.0
This version supports alternative kprobe method for checksum hacks, domain resolution support, packet padding and more!
- Do not depend on bpf_xdp_get_buff_len for payload length; this could be larger than the actual packet length, and the real length should be retrieved from packet headers
- Add kprobe checksum hacks, along with previous kfunc implementation
- Enable XDP fragments support
- RST is now sent to peers when Mimic is shutting down
- Allow domain names in filters; they are only resolved when Mimic starts, and only resolved IPs are stored
- Allow fixed or pseudo-random padding in packets
Full Changelog: v0.5.0...v0.6.0
v0.5.0
This version consists mostly of new test environments, major fixes and internal changes. Some notable are:
- Track TCP window size and send window change packets to prevent conntrack failure
- (distro packages) Tries to extract vmlinux from boot image if vmlinux is not available in module build directory
- Add passive mode, i.e. "do not initiate handshake", enabled by setting handshake interval to 0
Full Changelog: v0.4.2...v0.5.0
v0.4.2
- Fix systemd service file, adding missing [Install] section
- Fix version display in Mimic CLI
Changes in v0.4.x include:
- Variable congestion window to better mimic real TCP
- Notify supervisor when Mimic is ready (currently only systemd)
- Drop json-c dependency, lock file now uses key=value pair
- Add handshake and keepalive mechanism, as well as its settings, both global and filter-specific
- Add mimic(1) manpage
- Better logging UX, including full TCP traffic trace
v0.4.1
- Fix configuration file parsing
- Make trace output more visible on certain terminals
Changes in v0.4.x include:
- Variable congestion window to better mimic real TCP
- Notify supervisor when Mimic is ready (currently only systemd)
- Drop json-c dependency, lock file now uses key=value pair
- Add handshake and keepalive mechanism, as well as its settings, both global and filter-specific
- Add mimic(1) manpage
- Better logging UX, including full TCP traffic trace
v0.4.0
- Variable congestion window to better mimic real TCP
- Notify supervisor when Mimic is ready (currently only systemd)
- Drop json-c dependency, lock file now uses key=value pair
- Add handshake and keepalive mechanism, as well as its settings, both global and filter-specific
- Add mimic(1) manpage
- Better logging UX, including full TCP traffic trace