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.
Installation
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"
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:192.168.1.187 Bcast:192.168.1.255 Maske:255.255.255.0
and after installation, this changes to
eth0 Link encap:Ethernet Hardware Adresse aa:00:04:00:0a:08
inet Adresse:192.168.1.196 Bcast:192.168.1.255 Maske:255.255.255.0
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.