Here I describe how to connect two virtual Ubuntu 9.10 installations over DECnet.

Since I do not have two PC’s running Ubuntu, I use virtual installations running under VMWare Workstation. But this should not make any difference to physical Ubuntu-computers.

Using virtual installations has the advantage that you easily can clone one installation to get another network member. So backup your Ubuntu base installation BEFORE you install DECnet onto it, and later use the clone to setup a second system.


DECnet has always been part of Debian, but nowadays it’s not installed by default anymore. Here is some documentation.

Under UBUNTU, use the “Synaptic Package Manager” and install the packages “dnet-common” and “dnet-progs”. You will be asked for a node name and a node address.

DECnet addressing and MAC-ID

Under “DECnet Phase IV”, a computer (node) address in the network is given in the form "area.node", with area 1..63 and node 1..1023. Here I choosed the address “2.10”. A computer is also identified by a six-letter name, I use “linux1” in this example.

Setting a DECnet address changes the MAC-ID of your network card. Here is a MAC-ID calculator. So before installation, “ifconfig” shows something like

eth0     Link encap:Ethernet  Hardware Adresse 00:0c:29:ef:18:55
inet Adresse: Bcast:  Maske:

and after installation, this changes to

eth0     Link encap:Ethernet  Hardware Adresse aa:00:04:00:0a:08 
inet Adresse: Bcast:  Maske:

Attention: To force the new MAC-ID, I had also to edit /etc/network/interfaces (as described here):

$ sudo gedit /etc/network/interfaces

Add the two lines beginning with “iface”

auto eth0 
iface eth0 inet dhcp
hwaddress ether AA:00:04:00:0A:08

Then execute:

$ sudo /etc/init.d/networking restart

Twiddling with the MAC-ID maybe confuse your network router, so Reboot!


Setting up a 2nd Ubuntu.

To test this setup, we need a second node in the DECnet. Use a copy of your original Ubuntu installation. Give the copy another hostname! I called this node “linux2”, and gave it a DECnet address of “2.11”, so it’s MAC-id is AA:00:04:00:0B:08.

DECnet setup

DECnet is configured with three configuration files, each must be edited on both Ubuntu installations. They are pretty simple and self-explanatory

1) “/etc/decnet.conf” is like “/etc/hosts” for TCP/IP. It lists all nodes in the network and specifes the “localhost”

Here is /etc/decnet.conf on node “linux1”. It lists the other Ubuntu “linux” and a two nodes “simvax” and “vx3200”, wich we will add later.

# DECnet hosts file
#Node      Node     Name     Node    Line   Line
#Type      Address  Tag      Name    Tag    Device
#-----     -------  -----    -------   ----- ----
executor   2.10     name     linux1  line   eth0
node       2.11     name     linux2
node       2.20     name     simvax
node       2.21     name     vx3200

And here the same for node “linux2”. Now “linux2” is “executor” and “linux1” is just a normal node.

# DECnet hosts file
#Node      Node     Name     Node    Line   Line
#Type      Address  Tag      Name    Tag    Device
#-----     -------  -----    -------   ----- ----
executor   2.11     name     linux2  line   eth0
node       2.10     name     linux1
node       2.20     name     simvax
node       2.21     name     vx3200

All users must read decnet.conf:

# chmod a+r /etc/decnet.conf

2) “/etc/decnet.proxy” . This file controls access to the local machine and maps remote users to local users. Here it is for both “linux1” and “linux2”:

#     /etc/decnet.proxy
# DECnet proxy database.
# The format of this file is (one entry per line)
# node::remoteuser localuser
# ...
# ^tramp$::^test$ chrissie # Explicitly convert 'test' on tramp to chrissie
# ^zaphod$::.*   none     # Disable proxies from zaphod
.*::.* */DEFAULT
# associate all remote users with a
# similarly named user on the local VMS machine

#                          #   a user called 'none')
# .*::.* decnet            # Like a default DECnet account
# .*::.* *                 # Equivalent to VMS *::* * proxy (make this last
#                          #   if you use it)

I added only the rule: “.*::.* */DEFAULT”. This means, that each remote user is authenticated by his remote username and password. So if a user has an identical account on local host and remote host, everything is fine and there is no need to give user name and password for each command (see below).

3) “/etc/dnet.conf” specifies services (“objects”) for remote users. It’s like the old “/etc/inetd.conf” for TCP/IP. The default configuration is fine:

# /etc/dnetd.conf 
# Define DECnet objects
# Fields
# name:    object name (or * for any named object, number must be 0)
# number:  object number (or 0 for a named object)
# options: auth[,auto accept]:
#  auth:        Whether to authenticate users: Y or N
#  auto accept: Should we accept incoming connections
#                This is needed for non-decnet daemons
#                (not calling dnet_accept)
# user:    If auth is N then use this user
# daemon:  program to run or 'internal'
# name         number    options  user       daemon
FAL            17        Y,N      none       fal
MIRROR         25        Y,N      root     internal
MAIL           27        N,N      vmsmail    vmsmaild
CTERM          42        N,N      root       ctermd
DTERM          23        N,N      root       rmtermd
NML            19        N,N      nobody     dnetnml
*              *        Y,R      none       internal

“FAL” is the “File Access Listener”, the service for remote file access. “CTERM” and “DTERM” are two flavours of remote login. “MIRROR” is used for DECnet-Ping.