Чтобы проверить работу DECnet, и посмотреть как оно работает, предлагаю запустить две виртуальные машины с Ubuntu 16.04. Одна из них уже создана в предыдущей части, а вторую можно создать копированием. Например я пользуюсь VirtualBox и там в меню есть пункт "Клонировать".
В decnet отсутсвует аналог протокола ARP и вместо этого используються MAC адреса сгенерированные на основе адреса. Можно подсчитать адрес самому или воспользоваться сервисом, например этим. Как подсчитать самому я описал здесь.
Далее я буду использовать такие адреса для примера:
1.522 - declin AA-00-04-00-0A-06
1.523 - dectst AA-00-04-00-0B-06
Склонировав первую виртуалку, я прописал на обеих нужные MAC адреса, задав их в свойствах вирт. машины. Затем на хосте declin создаём файл /etc/decnet.conf со следующим содержимым:
#
# DECnet hosts file
#
#Node Node Name Node Line Line
#Type Address Tag Name Tag Device
#----- ------- ----- ------- ----- ----
executor 1.522 name declin line enp0s3
node 1.523 name dectst
А на хосте dectst этот же файл /etc/decnet.conf уже с другим содержанием:
#
# DECnet hosts file
#
#Node Node Name Node Line Line
#Type Address Tag Name Tag Device
#----- ------- ----- ------- ----- ----
executor 1.523 name dectst line enp0s3
node 1.522 name declin
Остальное нужно сделать на обеих машинах, будет одинаково. Даём права на чтение для всех:
chmod a+r /etc/decnet.conf
Редактируем файл /etc/decnet.proxy, добавив строку “.::. */DEFAULT”
# /etc/decnet.proxy
#
# DECnet proxy database.
# The format of this file is (one entry per line)
# node::remoteuser localuser
#
# Regular expressions are allowed for node and remote user. Remember these are
# POSIX regular expressions so use .* where you would use just * on VMS.
# Also it is IMPORTANT that whole names (node and user) are enclosed
# in anchors as below.
# The entries are checked in the order they appear in this file.
# * as a local user will be replaced by the remote username.
# # is a comment.
#
# Here are some examples (commented out of course):
#
# ^tramp$::^test$ chrissie # Explicitly convert 'test' on tramp to 'chrissie'
# ^zaphod$::.* none # Disable proxies from zaphod (assuming you don't have
# # a user called 'none')
.*::.* */DEFAULT
# .*::.* decnet # Like a default DECnet account
# .*::.* * # Equivalent to VMS *::* * proxy (make this last
# # if you use it)
Это работает если на обеих машинах есть пользователь с одинаковой учёткой, иначе придеться здесь много всего добавлять. Необходимо создать файл /etc/default/decnet
# DNET_INTERFACES specifies the names of ethernet interfaces whose
# MAC address is to be set to the DECnet node address
#DNET_INTERFACES="all"
DNET_INTERFACES="enp0s3"
# DNET_DAEMONS lists the daemons to start when dnet-progs is installed.
#
DNET_DAEMONS="dnetd phoned"
dnetd_FLAGS="-vvvv"
dnroute_FLAGS="-v -2"
# The following two lines enable routing, note that if you are
# being a router, then add dnroute to the DNET_DAEMONS too
#ROUTING=1
PRIORITY=32
А так же понадобиться создать файл /etc/dnet.conf
# /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
После этого всё должно заработать, запускаем скрипт из первой части в обеих виртуалках и можем попробовать пинг, не забыв указать правильные логин и пароль к удаленной машине :
$ sudo ./decnet.sh
1.522 For test, type: dnping HOST -u USER -p PASS
$ dnping dectst -u USER -p PASS
Sent 10 packets, Received 10 packets
Как видно 10 из 10 пакетов дошли, decnet работает. Не забудьте указать свои USER/PASS.
Ранее были установлены все необходимые утилиты, вот их назначение:
dneigh - выводит все узлы в сети, но работает только после запуска "phone"
dnping - проверка удаленнного узла, работает не так как пинг в tcp/ip а подключаеться к спец. сервису
phone - вызов удаленного узла для чата
sethost - подключение к удалённому узлу, как telnet
dndir - вывод содержимого каталога на удалённом узле: dndir dectst::[home.USER]*.*
dncopy - копирование файлов через DECnet, например dncopy -s test.txt 'dectst"USER PASS"::home:[USER]'
dntype - вывод содержимого файла на уд. узле
dndel - удаление файла на уд. узле
dntask - выполнение удаленно команды
dnsubmit - отправить пакетное задание
dnprint - печать на удаленной системе