Resurrecting AppleTalk

Computer networks were revolutionary in the 1980s, but they’re required today.

Old Macs could do file sharing among themselves very easily back in the day, over LocalTalk, but today ethernet is ubiquitous and everything is on the internet. So, it got me thinking, is there a way to route AppleTalk over the internet?

abridge

After much digging, I came upon Rob Braun’s abridge project. It was perfect, it did exactly what I wanted. I had some trouble compiling it, so I made a few tweaks to get it to build on a Raspberry Pi and put it on github.

appletalk-bridge

Things were good, but I was still concerned by the limitations of abridge. I wanted encryption and authentication to protect my networks. So I embarked on a quest to add these features to abridge. Then, I started trying to build a server using OpenSSL for the transport security. Then, I took a step back.

It occurred to me, use something that already exists and is meant for distributing packets (aka messages) to clients that supports authentication and security. A RabbitMQ fanout topology is exactly what I need to relay packets between distinct AppleTalk networks.

So, I built a new AppleTalk bridge that uses any RabbitMQ server as a backend, over SSL or not. All props to to Ron’s original work, because all the pcap code is borrowed from him.

It is not blazing fast over the internet, but it is certainly usable.

BasiliskII Emulator

What else would you want, besides bridging disparate AppleTalk networks together? In the BasiliskII emulator, setting up the sheep_net driver to allow the emulated Macintosh system to access the outside is a pain (kernel modules = ick). So why not just add a new network driver that directly reads and writes to the network via the RabbitMQ AMQP interface used in the appletalk-bridge?

So, I forked the original BasiliskII repository on github and to my own fork that adds just that.

In the $HOME/.basilisk_ii_prefs file, change your ether driver to an AMQP URL, i.e.

ether amqp://guest:guest@localhost:5671/?appleshare

or with SSL:

ether amqps://guest:guest@localhost:5671/?appleshare

where the ?appleshare defines that it should use the appleshare exchange.

Hints to compile BasiliskII with the AMQP driver

  • On a Mac, run brew install sdl gtk+ rabbitmq-c
  • On ubuntu, run sudo apt install -y librabbitmq-dev

Check the Compilation Guide for general information on how to compile BasiliskII, but the gist of the guide is:

cd macemu/BasiliskII/src/Unix/
make clean
NO_CONFIGURE=1 ./autogen.sh
./configure --enable-sdl-video --enable-sdl-audio --disable-vosf --disable-jit-compiler --with-x --with-gtk
make -j 32
AppleTalk