Linux For Network Engineers (LFNE) – AlmaLinux & Alpine Editions

After the release of the Ubuntu 24.04 edition of Linux For Network Engineers (LFNE) I’ve got some questions from the community. Here are two new flavors of LFNE based on your requests.

LFNE AlmaLinux 10 OS

For Red Hat fans who prefer a RHEL-style environment. Since CentOS is no longer maintained, AlmaLinux is the closest drop-in replacement and offers the same look and feel many engineers are used to.

docker pull ipnetxyz/lfne:almalinux-10

LFNE Alpine 3.22 OS

A lightweight edition designed for speed and efficiency. Alpine has a very small footprint, making it ideal for environments where resources are tight or for users who prefer a minimal base to build upon.

docker pull ipnetxyz/lfne:alpine-3.22

Same Tools, Different Base

All editions come with the same curated toolset of networking utilities, Python libraries, and automation tools. The main difference is the base operating system:

EditionBase OSBest ForNotes
Ubuntu 24.04Ubuntu LTSGeneral use, widest compatibilityEasiest to get started with
AlmaLinux 10RHEL-style OSRed Hat fans, enterprise-like environmentsDrop-in CentOS successor
Alpine 3.22Alpine LinuxLightweight setups, minimal footprintVery small and fast

If you’re new to LFNE, check out the Ubuntu 24.04 post for the full list of included tools and usage details.

Linux For Network Engineers (LFNE) – Now on Ubuntu 24.04

The Linux For Network Engineers (LFNE) Docker container has been refreshed and is now built on Ubuntu 24.04 LTS.

For those new to it, LFNE is a ready-to-use Linux environment preloaded with the most popular tools used by network engineers—from packet capture and traffic analysis utilities to configuration helpers and scripting support. Instead of spending time installing and configuring everything manually, LFNE provides a consistent containerized lab environment you can run anywhere.

What’s New in This Release

This upgrade ensures LFNE benefits from the latest long-term support release of Ubuntu, bringing:

  • Updated system libraries and security patches
  • Better compatibility with modern networking tools
  • Some changes for the network tools included

Key Changes

While most workflows remain the same, there are a few important updates under the hood:

  • Python 2 support: Ubuntu 24.04 no longer provides Python 2 packages via apt. To maintain compatibility, Python 2.7.18 is compiled from source inside the container.
  • Python 3 libraries: due to new restrictions, they are installed via pip inside a dedicated Python virtual environment /root/.venv.
    Please activate the virtual environment to use them source /root/.venv/bin/activate
  • New Docker Hub location: To align with the blog name (ipnet.xyz), the images are now published under the username ipnetxyz.

Tools Included

LFNE comes preinstalled with a curated set of tools and libraries that network engineers use most often, including:

  • Core networking tools:
    • OpenSSL
    • Net-tools (ifconfig, etc.)
    • IPutils (ping, arping, traceroute, etc.)
    • Socat
    • Host (DNS lookup tool)
    • MTR (advanced traceroute)
    • Telnet / SSH client
    • IProute2
    • IPerf (traffic generator)
    • TCPDump
    • Nmap
    • OpenSSH Server
  • Automation & Infrastructure-as-Code tools:
    • Ansible
  • Python environments & libraries:
    • Python 2
    • Python 3
    • Paramiko
    • Netmiko
    • Pyntc
    • Napalm

Contribute & Feedback

LFNE is meant to be a handy toolbox for network engineers, but I know I haven’t included every useful tool out there. If there’s something you use all the time and think it belongs in LFNE, let me know! I’m always open to adding tools that make the container more useful for the community.

Getting Started

Pull the latest updated image with:

docker pull ipnetxyz/lfne:ubuntu-24.04

Then start a container interactively with:

docker run -it ipnetxyz/lfne:ubuntu-24.04 /bin/bash

This will drop you into a shell inside LFNE, ready with all the tools you need.

Additional LNFE based on different OS

Additional images have been added (after this blog was posted) based on AlmaLinux OS and Alpine OS. Please find more details here: https://ipnet.xyz/2025/09/linux-for-network-engineers-lfne-almalinux-alpine-editions/

Deprecation Notice

The old images under yotis/lfne:distro-version will remain available but will no longer be updated. Going forward, please switch to the new naming convention:

yotis/lfne:distro-version   ->   ipnetxyz/lfne:distro-version

This ensures you get the latest updates, security patches, and new features.

LFNE GNS3 Appliances

This post will be a very short one, more like a note :)

Based on the LFNE Docker images (explained here https://ipnet.xyz/2023/11/lfne-linux-for-network-engineers) I’ve created the GNS3 Appliances for easy import into GNS3.

The GNS3 Appliances can be downloaded here https://github.com/yotis1982/lfne and imported into GNS3.

Have fun!

LFNE – Linux For Network Engineers

Formerly known as PFNE – Python For Network Engineer, the images developed to be more than just for Python learning. My choice was to call the new one more generic and pick the Linux For Network Engineers (LFNE)

Linux images build with all tools need by network engineers to perform various tasks ranging from simple python script to automation and testing.
Below is the list of installed applications on LFNE images. Pull one and start experimenting.

I’m using two main distributions to build these images – Ubuntu and AlmaLinux – pick your favorite flavor. I picked AlmaLinux as is the closest distribution to now (almost) defunct Centos.

LFNE based on Ubuntu 22.04

Pull the image:
docker pull yotis/lfne:ubuntu-22.04
Use the image:
docker run -i -t yotis/lfne:ubuntu-22.04 /bin/bash
If used with Portainer don’t forget to activate the option for Console : Interactive & TTY

LFNE based on AlmaLinux 9.2

Pull the image:
docker pull yotis/lfne:almalinux-9.2
Use the image:
docker run -i -t yotis/lfne:almalinux-9.2 /bin/bash
If used with Portainer don’t forget to activate the option for Console : Interactive & TTY

Some of the installed packages:

Openssl
Net-tools (ifconfig…)
IPutils (ping, arping, traceroute…)
Socat
Host (DNS lookup tool)
Mtr (traceroute tool)
Telnet / SSH client
IProute2
IPerf (traffic generator)
TCPDump
Nmap
Python 2 (only on Ubuntu variant)
Python 3
Paramiko
Netmiko
Ansible
Pyntc
Napalm
Openssh Server

To use remote ssh connection to container

  • Enable it with “service ssh start”
  • Expose the desired port for the container (tcp/22 default)

MicroStack installation fails on Ubuntu 20.04

I needed an instance of Openstack in my home lab for some tests and the first attempt was to deploy it with DevStack all-in-one. Is one of the most common methods out there. However it kept on failing (still need to find out why), so I turned to MicroStack.

MicroStack describe itself as the most straightforward way to install Openstack. I don’t say this is the way to go for Enterprise grade installation, but would do if you want something simple like one or two nodes for testing, learning purposes.

MicroStack uses two commands to have an Openstack instance up and running:

sudo snap install microstack --beta
$
sudo microstack init --auto --control

You can read a more detailed “how-to” on the Ubuntu or MicroStack page. One note, the entire topic is in Beta stage.

I’ve tried deploying multiple time on fresh Ubuntu 20.04 installation and everytime I’ve ended up with the error below. I’m adding the entire text, just in case you encounter an error at certain installation stage and want to check if is the same like mine:

sudo microstack init --auto --control
2022-11-02 20:21:19,950 - microstack_init - INFO - Configuring clustering ...
2022-11-02 20:21:20,454 - microstack_init - INFO - Setting up as a control node.
2022-11-02 20:21:24,066 - microstack_init - INFO - Generating TLS Certificate and Key
2022-11-02 20:21:26,187 - microstack_init - INFO - Configuring networking ...
2022-11-02 20:21:42,675 - microstack_init - INFO - Opening horizon dashboard up to *
2022-11-02 20:21:43,807 - microstack_init - INFO - Waiting for RabbitMQ to start ...
Waiting for 172.31.82.163:5672
2022-11-02 20:21:56,629 - microstack_init - INFO - RabbitMQ started!
2022-11-02 20:21:56,629 - microstack_init - INFO - Configuring RabbitMQ ...
2022-11-02 20:21:58,753 - microstack_init - INFO - RabbitMQ Configured!
2022-11-02 20:21:58,953 - microstack_init - INFO - Waiting for MySQL server to start ...
Waiting for 172.31.82.163:3306
2022-11-02 20:23:08,775 - microstack_init - INFO - Mysql server started! Creating databases ...
2022-11-02 20:23:14,509 - microstack_init - INFO - Configuring Keystone Fernet Keys ...
2022-11-02 20:26:07,658 - microstack_init - INFO - Bootstrapping Keystone ...
2022-11-02 20:26:21,999 - microstack_init - INFO - Creating service project ...
2022-11-02 20:26:27,938 - microstack_init - INFO - Keystone configured!
2022-11-02 20:26:28,257 - microstack_init - INFO - Configuring the Placement service...
2022-11-02 20:26:49,572 - microstack_init - INFO - Running Placement DB migrations...
2022-11-02 20:27:09,282 - microstack_init - INFO - Configuring nova control plane services ...
2022-11-02 20:27:22,369 - microstack_init - INFO - Running Nova API DB migrations (this may take a lot of time)...
2022-11-02 20:29:02,089 - microstack_init - INFO - Running Nova DB migrations (this may take a lot of time)...
Waiting for 172.31.82.163:8774
2022-11-02 20:39:31,994 - microstack_init - INFO - Creating default flavors...
2022-11-02 20:39:59,738 - microstack_init - INFO - Configuring nova compute hypervisor ...
2022-11-02 20:39:59,738 - microstack_init - INFO - Checking virtualization extensions presence on the host
2022-11-02 20:39:59,756 - microstack_init - WARNING - Unable to determine hardware virtualization support by CPU vendor id "GenuineIntel": assuming it is not supported.
2022-11-02 20:39:59,756 - microstack_init - WARNING - Hardware virtualization is not supported - software emulation will be used for Nova instances
2022-11-02 20:40:06,690 - microstack_init - INFO - Configuring the Spice HTML5 console service...
2022-11-02 20:40:08,564 - microstack_init - INFO - Configuring Neutron
Waiting for 172.31.82.163:9696
Traceback (most recent call last):
  File "/snap/microstack/245/bin/microstack", line 11, in <module>
    load_entry_point('microstack==0.0.1', 'console_scripts', 'microstack')()
  File "/snap/microstack/245/lib/python3.8/site-packages/microstack/main.py", line 44, in main
    cmd()
  File "/snap/microstack/245/lib/python3.8/site-packages/init/main.py", line 60, in wrapper
    return func(*args, **kwargs)
  File "/snap/microstack/245/lib/python3.8/site-packages/init/main.py", line 228, in init
    question.ask()
  File "/snap/microstack/245/lib/python3.8/site-packages/init/questions/question.py", line 210, in ask
    self.yes(awr)
  File "/snap/microstack/245/lib/python3.8/site-packages/init/questions/__init__.py", line 887, in yes
    check('openstack', 'network', 'create', 'test')
  File "/snap/microstack/245/lib/python3.8/site-packages/init/shell.py", line 69, in check
    raise subprocess.CalledProcessError(proc.returncode, " ".join(args))
subprocess.CalledProcessError: Command 'openstack network create test' returned non-zero exit status 1.

I’ve did some research and I found some hints about the need to manually install Python on a fresh Ubuntu 20.04 instance:

sudo apt install python python-dev

After installing Python all worked like a charm:

sudo microstack init --auto --control
# Skipped text #
2022-11-02 21:18:18,159 - microstack_init - INFO - Configuring the Spice HTML5 console service...
2022-11-02 21:18:19,503 - microstack_init - INFO - Configuring Neutron
Waiting for 172.31.82.163:9696
2022-11-02 21:19:21,615 - microstack_init - INFO - Configuring Glance ...
Waiting for 172.31.82.163:9292
2022-11-02 21:20:53,119 - microstack_init - INFO - Adding cirros image ...
2022-11-02 21:20:57,002 - microstack_init - INFO - Creating security group rules ...
2022-11-02 21:21:09,046 - microstack_init - INFO - Configuring the Cinder services...
2022-11-02 21:22:10,868 - microstack_init - INFO - Running Cinder DB migrations...
2022-11-02 21:23:31,155 - microstack_init - INFO - restarting libvirt and virtlogd ...
2022-11-02 21:23:42,260 - microstack_init - INFO - Complete. Marked microstack as initialized!

For some reason the MicroStack initialization process doesn’t detect Python installation or more like it the lack of.

If you have this error during installation, let me know if manual Python installation does the job.