Getting started with dn42

2024-02-11 - How to register your resources and get your first peers

This is meant to be supplementary post to the dn42 wiki articles on how to get started and provide a more high level overview on the required resources:

Why join dn42?

If you are interested in experimenting with internet technologies such as BGP or DNS at a lower level, you can do just that in dn42.

Requirements

You should have:

How do I register my resources?

Before you can get your first BGP peers, you need to create a pull request to the dn42 registry. For that, create the following objects:

Optionally, you can also register a domain by creating a dns object. Refer to the wiki for more information: https://dn42.cc/wiki/howto/getting-started/#dns-and-domain-registration

Note: it is possible to run a single stack IPv6 network in dn42! There are more IPv6 routes than IPv4 announced currently.

For more examples on how registry objects can look, refer to the wiki https://dn42.cc/wiki/howto/getting-started/#fill-in-the-registry and existing registry objects. Also, see the registry schema.

Not all properties listed here are required for the objects, but I recommend including them anyways.

mntner

Registry path: data/mntner

The name of the mntner MUST be all uppercase and end in -MNT. Example: FOO-MNT

mntner:             Name of your mntner
mnt-by:             Name of the mntner maintaining this mntner object (this is yourself usually)
admin-c:            Name of the person who is the administrator contact
tech-c:             Name of the person who is the technical contact
auth:               An authentication for verifying your changes, you can use for example PGP (pgp-fingerprint <fingerprint>) or ssh (ssh-type <key>)
source:             DN42

person

Registry path: data/person

The name of the person object / nic-hdl MUST be all uppercase and end in -DN42. Example: FOO-DN42

person:             Name of the person (doesn't have to be the same as the file name)
nic-hdl:            Name of the person (object)
mnt-py:             Name of the mntner
e-mail:             The email address you are reachable under
source:             DN42

Note: for more contact options use the contact field and the following syntax: <medium>:<handle>, for example for XMPP:

contact:            xmpp:<jid>

aut-num

Registry path: data/auth-num

Note: You should allocate your AS in the 4242420000-4242423999 range, the name of the file and content of the aut-num field should be in the format of AS<number>.

aut-num:            Your AS number
as-name:            The name of the AS (doesn't have to be the same as the file name)
mnt-by:             Name of the mntner
admin-c:            Name of the person who is the administrator contact
tech-c:             Name of the person who is the technical contact
source:             DN42

inet6num

Registry path: data/inet6num

The name of this file should is in the format of <IP address>_<block size>.

inet6num:           <First address of the IP block> - <Last address of the IP block>
cidr:               The IP block in CIDR notation
mnt-by:             The name of the mntner
admin-c:            Name of the person who is the administrator contact
tech-c:             Name of the person who is the technical contact
netname:            The name of the IP block (doesn't have to be the same as the file name)
status:             ASSIGNED
source:             DN42

route6

Registry path: data/route6

The name of this file is in the format of <IP address>_<block_size>

route6:             The IP block in CIDR notation
origin:             The AS number this route is originating from
max-length:         IP block size
mnt-by:             The mntner of this object
admin-c:            Name of the person who is the administrator contact
tech-c:             Name of the person who is the technical contact
source:             DN42

It is RECOMMENDED that IPv6 prefixes conform to RFC4193.

dn42regsrv can be used to generate a random ASN, IPv6 and IPv4: https://explorer.dn42.dev/free

The syntax for inetnum / route objects is very similar to inet6num / route6, but as stated previously: it is possible to run an IPv6 only dn42 network.

Creating a pull request to the registry

There are multiple scripts in the registry to help with creating the final commit:

The pull request should contain a single, signed commit.

The commit can be signed using for example:

Getting your first peers

After your pull request is merged, you can get your first peers. I recommend using the peer finder to find people near your server or peer with lemon and my network :)

For further information on tunnels, BGP routing daemons etc. check the wiki:

Also check out #dn42 on the hackint.org IRC for further help.