tinc 1.1 on Ubuntu 22.04 LTS (incl. ARM64)

As you may have noticed, I'm a huge fan of tinc. I've been running it for over a decade on my networks between my servers and my routers. However, as most of my routers run tinc 1.1, I was looking for a straight forward way to get tinc 1.1 on my Ubuntu servers - and finally found a solution - including support for arm64!

Installing tinc 1.1

Following a discussion on Github, we got automated builds for tinc 1.1 including arm64 support, and it only takes a few commands to add the repository and install the latest tinc:

echo 'deb http://download.opensuse.org/repositories/home:/cromulent/xUbuntu_22.04/ /' | sudo tee /etc/apt/sources.list.d/home:cromulent.list
curl -fsSL https://download.opensuse.org/repositories/home:cromulent/xUbuntu_22.04/Release.key | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/home_cromulent.gpg > /dev/null
sudo apt update
sudo apt install tinc

We'll also need the following for the tinc-up script later on: apt install net-tools

With the repo added, you can now configure the tinc node on your machine.

Configuring tinc 1.1

Let's start with creating your configuration for your desired netname: tinc -n netname init

Next,  go ahead and configure the tinc-up script that's  been created. It will contain an example line of what you need to add in there.

Then, create the tinc-down script with the following content:

ifconfig $INTERFACE down

Don't forget to make it executable: chmod +x tinc-down

tinc host files

Next up, we'll edit the host file that has been created for us. We'll add the following lines — make sure you adjust your IP address and host address:

Address = tinc.foo.bar
Subnet = 10.123.123.123/32

Last but not least, copy over one of your existing host files to which you want to connect.

tinc.conf file

Now that we have all of the nodes configured, let's configure the tinc.conf file, adding the following:

AddressFamily = ipv4
Device = /dev/net/tun
ConnectTo = anothertincnode

Launching it all

One last command to go to start it all: systemctl enable --now tinc@netname

That's it! Your node should now be connected to your remaining tinc nodes.