Skip to content
/ znail Public
forked from znailnetem/znail

Network emulator intended to run on a Raspberry Pi.

License

Notifications You must be signed in to change notification settings

andni233/znail

This branch is 9 commits behind znailnetem/znail:master.

Folders and files

NameName
Last commit message
Last commit date

Latest commit

1a35177 · Aug 23, 2021

History

85 Commits
Mar 20, 2021
Feb 26, 2019
Aug 22, 2021
Mar 20, 2021
Mar 20, 2021
Mar 20, 2021
Mar 20, 2021
Feb 20, 2019
Feb 20, 2019
Aug 23, 2021
Mar 20, 2021
Aug 22, 2021
Aug 23, 2020
Mar 20, 2021
Mar 20, 2021
Sep 11, 2019

Repository files navigation

Znail

Znail Logo

Znail is a network emulator inteded to run on a computer with two network interfaces. Equipped with two network interfaces, Znail acts as a network bridge. Znail can then control network traffic passing through the bridge.

With a system under test connected to the network through this bridge, Znail can help you answer question about how that system behaves under various network conditions.

Features

  • Emulate packet delay
  • Emulate packet loss
  • Emulate packet duplication
  • Emulate packet reordering
  • Emulate packet corruption
  • Control packet rate
  • Capture network packets
  • Emulate a disconnect (by powering down one of its network interfaces)
  • Override answers to DNS queries (by redirecting DNS traffic to its internal DNS server)
  • Redirect IP traffic from one host to another
  • Not apply any of the above for certain hosts using a whitelist

Znail can be managed in one of two ways, using its web interface or its REST API.

Getting Started

The easiest way to get started with Znail is to download an image with Znail pre-installed.

The image can then be installed on a suitable target system, for example a Raspberry Pi.

Raspberry Pi

The default SSH username for the pre-built image is pi and the password is raspberry.

NanoPi R2S

The default SSH username for the pre-built image is root and the password is 1234.

Generating Custom Images

To set up the environment on an Ubuntu 20.04 system, run the following commands:

sudo apt update
sudo apt install -y coreutils quilt parted qemu-user-static debootstrap zerofree zip dosfstools bsdtar libcap2-bin grep rsync xz-utils file git curl

To generate an image:

make image

The resulting images can be found in the dist/image directory.

Generating the different images can take quite some time. If you are looking to only build one specific kind of image more narrow make targets are available. See make help for more information.

Development

The Python environment requires that the pip tool is installed.

To set up the development environment on an Ubuntu 20.04 system, run the following commands:

sudo apt update
sudo apt install -y python3-pip python3-venv

To build and activate the virtual Python environment:

source ./activate

To automatically format the code:

make format

To run tests and static code analysis:

make check

More information about what targets the build system provides:

make help

Special Thanks

Special thanks to Alice Persson for contributing the Znail logotype.

License

Distributed under the terms of the Apache License 2.0.

About

Network emulator intended to run on a Raspberry Pi.

Resources

License

Stars

Watchers

Forks

Packages

No packages published

Languages

  • Python 72.4%
  • HTML 22.3%
  • Makefile 2.3%
  • Shell 2.2%
  • CSS 0.8%