In my previous post I showed how to install ZeroTier on the EdgeRouter, after installing we need to rename the ZeroTier interface to ethx interface to show up in EdgeOS.
Now I adopted EdgeOS (which is basically VyOS/Vyatta running on the EdgeRouter) to support ZeroTier from the native CLI with tab completion.
Demo
Install
I have tested this only with EdgoOS version 2.0.6, I have not tested it with other versions of EdgeOS. So be warned especially with 1.x version.
Install ZeroTier as described in my previous post but skip the interface mapping.
After that create a backup of the Interface.pm file. This is the only file that wil be modified so it is good to keep a backup.
root@edgerouter:~# cp /opt/vyatta/share/perl5/Vyatta/Interface.pm /opt/vyatta/share/perl5/Vyatta/Interface.pm.backup
Download the tgz from https://github.com/dkruyt/resources/raw/master/zerotier-edgeos.tgz
Extract all files to their absolute path.
root@edgerouter:/# tar -C / -xvzf /home/admin/zerotier-edgeos.tgz
opt/
opt/vyatta/
opt/vyatta/share/
opt/vyatta/share/vyatta-op/
opt/vyatta/share/vyatta-op/templates/
opt/vyatta/share/vyatta-op/templates/disconnect/
opt/vyatta/share/vyatta-op/templates/disconnect/zerotier/
opt/vyatta/share/vyatta-op/templates/disconnect/zerotier/node.tag/
opt/vyatta/share/vyatta-op/templates/disconnect/zerotier/node.tag/node.def
opt/vyatta/share/vyatta-op/templates/disconnect/zerotier/node.def
opt/vyatta/share/vyatta-op/templates/connect/
opt/vyatta/share/vyatta-op/templates/connect/zerotier/
opt/vyatta/share/vyatta-op/templates/connect/zerotier/node.tag/
opt/vyatta/share/vyatta-op/templates/connect/zerotier/node.tag/node.def
opt/vyatta/share/vyatta-op/templates/connect/zerotier/node.def
opt/vyatta/share/vyatta-op/templates/show/
opt/vyatta/share/vyatta-op/templates/show/zerotier/
opt/vyatta/share/vyatta-op/templates/show/zerotier/info/
opt/vyatta/share/vyatta-op/templates/show/zerotier/info/node.def
opt/vyatta/share/vyatta-op/templates/show/zerotier/peers/
opt/vyatta/share/vyatta-op/templates/show/zerotier/peers/node.def
opt/vyatta/share/vyatta-op/templates/show/zerotier/moons/
opt/vyatta/share/vyatta-op/templates/show/zerotier/moons/node.def
opt/vyatta/share/vyatta-op/templates/show/zerotier/node.def
opt/vyatta/share/vyatta-op/templates/show/zerotier/networks/
opt/vyatta/share/vyatta-op/templates/show/zerotier/networks/node.def
opt/vyatta/share/vyatta-op/templates/show/interfaces/
opt/vyatta/share/vyatta-op/templates/show/interfaces/zerotier/
opt/vyatta/share/vyatta-op/templates/show/interfaces/zerotier/node.def
opt/vyatta/share/vyatta-cfg/
opt/vyatta/share/vyatta-cfg/templates/
opt/vyatta/share/vyatta-cfg/templates/interfaces/
opt/vyatta/share/vyatta-cfg/templates/interfaces/zerotier/
opt/vyatta/share/vyatta-cfg/templates/interfaces/zerotier/node.tag/
opt/vyatta/share/vyatta-cfg/templates/interfaces/zerotier/node.tag/description/
opt/vyatta/share/vyatta-cfg/templates/interfaces/zerotier/node.tag/description/node.def
opt/vyatta/share/vyatta-cfg/templates/interfaces/zerotier/node.def
opt/vyatta/share/perl5/
opt/vyatta/share/perl5/Vyatta/
opt/vyatta/share/perl5/Vyatta/Interface.pm
Thats it, now you can use ZeroTier als0 in the CLI on the router and also it shows up correctly as a ZeroTier interface in the GUI.