LinuxCommandLibrary

meshnamed

Configure IEEE 802.11s mesh network interfaces

TLDR

Start a local meshname DNS server

$ meshnamed
copy

Convert an IPv6 address into a meshname
$ meshnamed -getname [200:6fc8:9220:f400:5cc2:305a:4ac6:967e]
copy

Convert a meshname to an IPv6 address
$ meshnamed -getip [aiag7sesed2aaxgcgbnevruwpy]
copy

SYNOPSIS


meshnamed [-c config_file] [-p pid_file] [-g group] [-u user] [-d] [-v]

PARAMETERS

-c config_file
    Specifies the path to the JSON configuration file. By default, it looks for /etc/meshnamed/config.json.

-p pid_file
    Sets the path for the PID file, which stores the process ID of the daemon. The default is /run/meshnamed.pid.

-g group
    Specifies the group name to which the daemon will drop privileges after startup. Defaults to nogroup.

-u user
    Specifies the user name to which the daemon will drop privileges after startup. Defaults to nobody.

-d
    Enables debug mode. When this option is used, meshnamed will not daemonize and will log debug messages to standard error (stderr).

-v
    Displays the version information of the meshnamed utility and then exits.

DESCRIPTION

meshnamed is a lightweight, specialized DNS resolver designed primarily for mesh networks, such as those used by the Freifunk project. Its core function is to provide name resolution services within a mesh-VPN environment. Unlike general-purpose DNS servers like BIND, meshnamed is configured to resolve specific hostnames to IP addresses that are part of the mesh network's addressing scheme. It typically runs as a daemon, listening for DNS queries (usually on UDP port 53) and responding with configured mesh IPs for known names, while potentially forwarding other queries to an upstream resolver. This makes it crucial for services and devices within a mesh network to locate each other by name rather than just IP address.

CAVEATS

meshnamed is a highly specialized DNS resolver intended for specific use cases within mesh networking environments (e.g., Freifunk). It is not a general-purpose DNS server replacement for services like BIND or dnsmasq. Its functionality is heavily dependent on its JSON configuration file, which defines the specific hostname-to-IP mappings for the mesh network. Without proper configuration, it will not function as expected for resolving mesh-specific names. It might not be available in standard distribution repositories and often needs to be installed from community-maintained packages or compiled from source.

CONFIGURATION FILE

meshnamed's operation is primarily driven by its JSON configuration file (defaulting to /etc/meshnamed/config.json). This file defines the specific hostname-to-IP mappings for the mesh network, allowing it to resolve names that are internal to the mesh. It also specifies upstream DNS servers for forwarding queries for non-mesh-related names. Without a correctly structured and populated configuration, meshnamed will not be able to perform its intended resolution tasks within the mesh.

DAEMONIZATION

By default, meshnamed runs as a background daemon, making it suitable for continuous operation on a server or router within the mesh network. The -d (debug) option prevents daemonization, which is useful for troubleshooting and testing purposes as it keeps the process in the foreground and outputs logs to stderr.

HISTORY

meshnamed emerged from community-driven mesh networking projects, most notably Freifunk. It was developed to address the specific need for name resolution within dynamically evolving mesh network topologies where traditional DNS setups might be cumbersome or ineffective. Its development aligns with the open-source ethos of these projects, providing a dedicated, lightweight solution for internal mesh network services to discover each other via DNS names. It is typically part of utility packages like freifunk-lachs or mesh-vpn-dns.

SEE ALSO

named(8), dnsmasq(8), resolvconf(8), nsswitch.conf(5)

Copied to clipboard