Een schreeuw om commentaar op dit artikel is hier gepost: http://www.macminds.net/viewtopic.php?id=4792

Het bouwen van een Fake Time Capsule.

Draft 31 maart 2008
—————————————-

1. Inleiding
2. Waarom
3. Tekortkomingen Apple Time Capsule in een thuis/soho omgeving
4. Tekortkomingen Apple Time Capsule in een zakelijke omgeving
5. Hoe deze tekortkomingen te overwinnen
6. Benodigdheden
7. Uitwerking
8. Resultaat en conclusie
9. Voetnoten

—————————————-

1. Inleiding
Omdat uit onderzoek van Apple bleek dat men niet of te weinig aan backups doet, ontwikkelde
Apple de Time Machine functionaliteit voor gebruik in Mac OS X Leopard (10.5).
Dit is een zeer makkelijke manier van backuppen, en daarbij nog gestoken in een leuk jasje ook.
Om gebruikers nog meer bij te staan, ontwikkelde Apple de Time Capsule. Dit apparaat is eigenlijk
de Airport Extreme in combinatie met een harde schijf. Dit apparaat is verkrijgbaar als 0.5 of 1.0TB,
zodat je nooit je gegevens kwijt hoeft te raken.

Schrijfconventie: een cijfer tussen blokhaken duidt op een voetnoot, voorbeeld: [1].

2. Waarom
Hoewel de Time Machine functionaliteit makkelijk in gebruik is, zijn er veel gebruikers die
graag de functionaliteit voor het backuppen naar een netwerkshare of NAS hadden gezien.
Enkele zijn hierin al geslaagd door een externe schijf in te stellen als backup medium, en
daarna deze schijf aan een Airport te hangen. Dit is echter nog steeds niet het gewenste
resultaat.

Waarom een draft publicatie ? Simpel genoeg, ik heb geen tijd om een makkelijk installatie script
te schrijven, en deze te onderhouden onder de vele mogelijke scenario’s waarin men de Fake Time Capsule
kan na bouwen. Ik probeer echter te de community te stimuleren om zelf onderzoek te voeren, en
deze informatie te delen waarop anderen verder kunnen werken.

3. Tekortkomingen Apple Time Capsule in een thuis/soho omgeving
Eigenlijk is het apparaat perfect geschikt voor deze omgeving, ware het niet dat een geavanceerde
gebruiker meer zou kunnen willen instellen. Zo zijn er geen opties om bijvoorbeeld vanaf de
Time Capsule een waarschuwing te geven voordat de schijf te vol begint te raken. (Time Machine
geeft echter een waarschuwing als de schijf daadwerkelijk vol is, naar mijn idee te laat).

4. Tekortkomingen Apple Time Capsule in een zakelijke omgeving
Indien men het gemak van de Time Capsule wil gebruiken in een zakelijke omgeving, zijn er een
aantal zaken waarin de Time Capsule tekortschiet. De eerste ontbrekende functionaliteit is
het veilig stellen van de data op een RAID systeem, het gaat tenslotte hier om een backup systeem.
Daarnaast ontbreekt ook functionaliteit voor Accounting, dit houdt in dat men op dit moment
geen mogelijkheid heeft om quota’s in te stellen voor het diskgebruik van een Time Capsule.
De Time Capsule voorziet in basis authenticatie, maar men zou dit willen kunnen koppelen aan
een radius server, of een andere vorm van authenticatie.

5. Hoe deze tekortkomingen te overwinnen
Men kan de meeste van deze tekortkomingen overwinnen door zelf een file-server te bouwen, en
deze geschikt te maken voor gebruik in Apple’s Time Machine. Het bouwen van een file-server
wordt hier later besproken.
Een file-server kan men bouwen in een BSD/Unix/Linux omgeving, ik heb zelf gekozen voor een
systeem dat gebruik maakt van FreeNAS, een BSD distributie bij uitstek geschikt voor file-serving.
De meeste van de voorgenoemde tekortkomingen kan men al overwinnen door standaard disk quota’s
te implementeren op het filesystem, en het delen van authenticatie met een radius server.

6. Benodigdheden
In dit gedeelte zal ik globaal uitleggen wat je nodig hebt om een Fake Time Capsule te bouwen,
ik limiteer mij hier niet aan een platform. Na dit gedeelte zal ik een korte implementatie
uitleggen, en wil daarbij jou (de lezer) vragen hier creatief mee om te springen om je eigen
Fake Time Capsule te bouwen.

De benodigdheden:
* Een server (al dan niet gevirtualiseerd)
* Een schone installatie van een BSD/Unix/Linux besturingssysteem
* Kennis van het besturingssysteem, en netwerken in het algemeen
* Lokale dns-server
* Implementatie van bonjour (bijvoorbeeld Avahi)

7. Uitwerking
In dit gedeelte ga ik puur in op de algemene implementatie van de Fake Time Capsule, met als
leidraad mijn werkende FreeNAS image in Kju (Q-emu). Ik voeg hier nog geen extra’s aan toe
zoals radius authenticatie.

— Stap 1
Installeer een schone installatie van je besturingssysteem op je server (bijvoorbeeld Ubuntu server,
FreeNAS of FreeBSD). Zorg bij deze installatie dat je pakketten installeerd voor een dns-server,
fileserver (AFP en SMB!!), en ondersteuning voor diskquota’s.
Het bestandssysteem voor je server is niet van belang, alhoewel ik een ext3 schijf in de meeste
gevallen het handigst vindt. Als je wilt dat gebruikers beperkte ruimte kunnen gebruiken, dan
kun je in de meeste gevallen tijdens de installatie bij het partitioneren aangeven dat je quota’s
of disk accounting wilt gebruiken.

— Stap 2
De shares configureren. Zorg dat je je Samba en AFP shares werkend krijgt. Dit is in de meest
recente distributies een kwestie van een service starten, en je kunt vrijwel altijd je home
directories na authenticatie benaderen.

— Stap 3
Apple houdt er van om voor Time Machine te zoeken naar het bestand .com.apple.timemachine.supported
deze word automatisch aangemaakt als je een supported schijf of share hebt. Zo ook op de Time Capsule.
Let op deze moet binnen je share staan. Stel dat ik mijn thuismap op de fileserver share, dan
zou ik via ssh in mijn thuismap dit bestand kunnen aanmaken (het bestand behoord leeg te zijn).
Dit doe je als volgt:

touch /home/martijn/.com.apple.timemachine.supported

Als je dit bestand automatisch wilt laten creeren, dan kan je op de meeste distributies het
bestand aanmaken in /etc/skel . Deze map word als basis gebruikt voor een nieuw account op het
systeem. Dit doet men als volgt:

touch /etc/skel/.com.apple.timemachine.supported

— Stap 4
Het installeren van een implementatie van bonjour. Op vele distributies zal het mogelijk zijn
om Avahi te installeren. Avahi implementeerd Multicast DNS, net zoals bonjour dit doet.
Eigenlijk is men met Avahi vrijwel gelijk klaar.

Avahi announced zonder extra configuratie alle services die bij hem bekend zijn. Op ubuntu server
worden bijvoorbeeld de AFP en SMB shares gelijk na installatie al geannounced.
Nu ontbreekt er echter 1 stap. Om Time Machine aan de praat te krijgen, moet men de service
_adisk._tcp [1] announcen.

Om Avahi de service te laten announcen, kan men het commando avahi-publish als volgt gebruiken:

avahi-publish -s adisk _adisk._tcp 9 |TXT RECORD DATA|

In plaats van |TXT RECORD DATA| moet je de volgende waarden comma gescheiden invoeren:

sys=
waMA=xx:xx:xx:xx:xx:xx <– Mac Address van je netwerkkaart
dkX= <– waar de X de fysieke partitie is, meestal is dit 1, voor de Time Capsule is dit 2 vanwege de recovery partitie.
VF=0x83 <– ik geloof dit de FileSystem identifier is, 0x83 overeenkomt met Linux Native. [2]
adVN=xxxxxxxxxxxx <– de naam van je apparaat, meestal zal dit je Hostname zijn
adVU=GUID <– een unieke identifier, te genereren met diverse tools [3],[4]

Voor mij word de regel dus als volgt:

avahi-publish -s adisk _adisk._tcp 9 sys=waMA=00:1E:52:xx:xx:xx,dk2=,adVF=0x83,adVN=Fake Time Capsule,adVU=f06a38eb-ea01-5e97-95f9-1a834612c42

8. Resultaat en conclusie
Hoewel enige technische kennis vereist is, kan men dus vrij eenvoudig een robuuste backup mogelijkheid
bouwen, en zelfs uitbreiden met geavanceerde authenticatie en disk accounting.
Een must voor in een zakelijke omgeving met Mac’s.

Dit document is geschreven uit nieuwsgierigheid, en heeft slechts de intentie om de nieuwsgierige
tweakers onder ons te voorzien van informatie over de werking van de Time Capsule en Time Machine.

Time Capsule en Time Machine zijn door Apple geregistreerde merknamen.

9. Voetnoten
[1] _adisk._tcp:
Automatic Disk Recovery
Defined TXT keys: sys, dkX
Bron: http://www.dns-sd.org/ServiceTypes.html

[2] partitie typen
Bron: http://www.win.tue.nl/~aeb/partitions/partition_types-1.html

[3] globally unique identifier
Bron: http://en.wikipedia.org/wiki/Globally_Unique_Identifier

[4] een webbased generator
Bron: http://www.hoskinson.net/GuidGenerator/default.asp

Content written by Martijn de Boer. All content here may be quoted, linked to or summarized when linking to the original materials.