Gentoo Network Appliance (GNAP)

Thierry Carrez  Author

Updated April 20, 2006

1.  Introduction to GNAP

What is GNAP ?

The acronym GNAP stands for Gentoo Network APpliance. It's an easy way to build Gentoo-based network appliance systems, ready for use in old PCs or embedded devices without the need for a full installation.

Using GNAP, you can build in a few minutes target systems geared toward network services like routing, firewalling, traffic profiling, VPN and network monitoring, that will run directly from a LiveCD or a disk device (including CompactFlash cards or DiskOnModules).

Specific configuration files are added to the LiveCD or disk to customize its behaviour. Those systems can run stateless, making them easy to restart, and impossible to permanently compromise. They can also save their modified configuration so that they don't need to be rebuilt all the time.

But why GNAP ?

I had a bunch of old PCs with fragile components, and wanted to use them as internal routers and firewalls. I wanted to be able to easily switch PCs in case of failure. Using removable media with a burned-on configuration is the most flexible way I found. When it fails, just put the media on another machine. I started by using LEAF Bering-uClibc floppy-based firewalls but was quickly undermined by problems: media fragility, difficulty to automate creation of floppies and lack of easy extensibility. I switched to LEAF Bering-uClibc CDROM-based configurations, with a web-based automated ISO generation. This solved most of the problems but the extensibility problems remain, and maintaining the web-app was becoming a nightmare.

I finally chose to leverage Gentoo Catalyst power to build custom LiveCDs, solving both the extensibility problem and the non-standard solution maintenance. The idea was to have a generic LiveCD core that I could build once and use everywhere, and burn on the CD a specific configuration overlay to customize the appliance role. This simplifies CD generation as you don't have to go through the whole Catalyst process to customize a specific LiveCD.

Fast to build, easy to maintain up to date

To create a GNAP system, use the provided GNAP Core and create configuration overlays detailing your specific needs. Using the gnap_overlay script, in a few seconds your overlays are combined to the GNAP Core to produce a new LiveCD ISO file. Burn this file to a CD, put it inside an old box (no hard disk or mouse needed), and boot. Alternatively, use the same script to initialize a disk device with a complete bootable filesystem, put the disk in its target environment, and boot.

To completely update a GNAP configuration, just modify your saved overlay and combine it to the latest GNAP Core to produce an updated GNAP system. Reboot the appliance with the new system. You're done.

2.  Documentation

GNAP User Guide

The GNAP User Guide covers everything you need to know to produce and customize GNAP systems. Read it and start using GNAP today !

GNAP Advanced User Guide

The GNAP Advanced User Guide gives information for power users that want to further customize and modify what their GNAP systems can do. You should be familiar with GNAP systems and Gentoo systems in general before reading this guide.

3.  Standard features

4.  Resources

CVS and Bugs database

GNAP CVS repository can be browsed here.

GNAP uses Gentoo Bugzilla as its bugsystem. Please select the "Gentoo-hosted projects" product and the "GNAP" component when opening a GNAP bug. Alternatively you can click here.

Communication channels

The GNAP project is part of Gentoo Linux's Embedded Project and shares communication channels with it. You can subscribe to the gentoo-embedded@gentoo.org mailing-list or discuss on the #gentoo-embedded official IRC channel.

A GNAP-specific IRC channel has also be created for GNAP users to meet, it is located at #gentoo-gnap on FreeNode.

5.  Changelog

GNAP 2.0 (2006/04/20)

GNAP 1.8.2 (2005/10/21)

GNAP 1.8.1 (2005/08/30)

GNAP 1.8 (2005/08/10)

GNAP 1.7.1 (2005/06/23)

GNAP 1.7 (2005/05/31)

GNAP 1.6 (2005/05/17)

GNAP 1.5.1 (2005/04/20)

GNAP 1.5 (2005/04/06)

GNAP 1.2.1 (2005/03/21)

GNAP 1.2 (2005/02/15)

GNAP 1.1 (2005/01/06)

GNAP 1.0 (2004/12/03)