Categories

Introducere

Scopul acestui proiect a fost implementarea in reteaua locala a unui server Linux care sa permita:

  • centralizarea si consolidarea spatiului de stocare necesar pentru efectuara de backup-uri de pe mai multe Mac-uri.
  • eliminarea discurilor externe suplimentare folosite de fiecare utilizator de Mac pentru a face backup-uri.
  • optimizarea costurilor necesare pentru asigurarea backup-urilor pentru Mac-urile folosite in reteaua locala.

Time Capsule este un hardware wireless comercializat de Apple care include un dispozitiv de stocare conectat in retea (NAS) cu capacitate de pina la 3TB, in functie de model, si un gateway rezidential pentru conectarea retelei locale la internet.

Conform descrierii Apple, Time Capsule este un dispozitiv proiectat sa functioneze in tandem cu software-ul utilitar „Time Machine”, care a fost introdus incepind cu MacOS X 10.5, pentru a permite utilizatorilor efectuarea de backup-uri de pe un calculator care ruleaza MacOS X.

Pe parcursul implementarii initiale am considerat ca serviciile puse la dispozitie de serverul Linux vor fi folosite cel putin doi utilizatori (cel putin doua persoane diferite) avand unul sau mai multe Mac-uri care vor sa le configureze sa-si faca backup pe server in acelasi fel in care isi fac backup-uri pe propriul Time Capsule.

Configurarea serverului Linux

Hardware + distributia de Linux folosita

Pe post de server am folosit urmatoare configuratie hardware si software:

  • Un PC (reconditionat) cu un procesor dual core, 1GB RAM si 4 porturi SATA II
  • CentOS 6.5 (optiunea de instalare „Basic Server”) cu interfata de retea configurata astfel incit sa fie conectata/activata dupa fiecare restart
  • Hostname-ul pentru acest server l-am configurat cu numele „Linux-TimeCapsule”.
  • 3 discuri noi, de 2 TB fiecare, incluse intr-o matrice RAID 5 software (md1)

Instalarea pachetelor necesare

MacOS X foloseste „Bonjour”, implementarea Apple a setului de tehnologii zero-configuration networking (zero-conf), pentru a localiza atit echipamentele din retea (calculatoare sau imprimante) cit si a serviciilor furnizate de acestea. Bonjour foloseste inregistrari mDNS pentru name resolution.

In Linux, aceasta functionalitate este furnizata de pachetul/daemon-ul avahi.

Netatalk este implementarea open-source a protocolului Apple Filing Protocol folosit in sistemele de operare Linux/Unix pentru a partaja de fisiere/imprimante si pentru a furniza servere de sincronizare a ceasurilor pentru calculatoarele din reteaua locala care ruleaza MacOS.

Pachetul netatalk, se gaseste in repo-ul EPEL pentru CentOS 6. Instalarea si activarea acestui repository am facut-o folosind comanda:

yum -y install http://mirror.de.leaseweb.net/epel/6/i386/epel-release-6-8.noarch.rpm

Dupa instalarea si activarea repo-ului EPEL, am instalat cele doua pachete folosind comanda:

yum -y install avahi netatalk

Activarea serviciilor pentru a fi pornite dupa fiecare restart

Configurarea serviciilor netatalk si avahi pentru a fi pornite automat dupa fiecare restart se face cu urmatoarele comenzi:

chkconfig netatalk on

chkconfig avahi-daemon on

Firewall

Pentru ca un sistem extern sa poata sa beneficieze de serviciile instalate anterior este necesara reconfigurarea firewall-ului in asa fel incit Linux-ul pe care ruleaza aceste doua servicii sa permita/accepte comunicarea pe porturile udp/5353 (folosit de avahi-daemon) si tcp/548 (folosit de netatalk).

In CentOS 6, system-config-firewall-tui este comanda pentru a accesa interfata text care permite configurarea/reconfigurarea regulilor implicite de firewall intr-un mod simplu si cu garantia ca regulile generate vor fi corecte din punct de vedere sintactic.

Dupa reconfigurarea firewall-ului (folosind system-config-firewall-tui) in /etc/sysconfig/iptables s-au adaugat urmatoarele doua reguli de firewall:

-A INPUT -m state –state NEW -m udp -p udp –dport 5353 -d 224.0.0.251 -j ACCEPT

-A INPUT -m state –state NEW -m tcp -p tcp –dport 548 -j ACCEPT

Utilizatorii folositi pentru autentificare

Doi utilizatori (mac_user_01 si mac_user_02) vor putea sa foloseasca acest server pentru backup-urile Mac-urilor lor. Acesti utilizatori au fost creati pe server cu urmatoarele comenzi:

adduser mac_user_01

usermod -s /sbin/nologin mac_user_01

passwd mac_user_01

adduser mac_user_02

usermod -s /sbin/nologin mac_user_02

passwd mac_user_02

Spatiul de stocare si structura de directoare folosite

Pe matricea RAID dedicata (md1) am definit un volum logic in care am creat un sistem de fisiere ext4 care va fi folosit pentru a pastra backup-urile tuturor utilizatorilor.

pvcreate /dev/md1

vgcreate TimeCapsule_VG /dev/md1

lvcreate -n volume_01_lv -L 1T TimeCapsule_VG

mkfs -t ext4 -m 0 /dev/TimeCapsule_VG/volume_01_lv

 

Sistemul de fisiere l-am montat in „/data/TimeCapsule/volume_01” si am adaugat in /etc/fstab configuratia necesara pentru a fi montat automat la fiecare repornire a serverului.

mkdir -p /data/TimeCapsule/volume_01

mount /dev/TimeCapsule_VG/volume_01_lv /data/TimeCapsule/volume_01

echo “/dev/TimeCapsule_VG/volume_01_lv /data/TimeCapsule/volume_01 ext4 defaults 1 1” >> /etc/fstab

 

Din motive de securitate si pentru o mai buna separare a datelor utilizatorilor, backup-urile fiecarui utilizator vor fi pastrate in directoare diferite de pe server avind permisiunile setate in asa fel incit sa nu poata sa fie accesate de alti utilizatori de pe acelasi server:

mkdir -p /data/TimeCapsule/volume_01/mac_user_01

chown mac_user_01:mac_user_01 /data/TimeCapsule/volume_01/mac_user_01

chmod 700 /data/TimeCapsule/volume_01/mac_user_01

mkdir -p /data/TimeCapsule/volume_01/mac_user_02

chown mac_user_02:mac_user_02 /data/TimeCapsule/volume_01/mac_user_02

chmod 700 /data/TimeCapsule/volume_01/mac_user_02

Configurarea afpd (Apple Filing Protocol)

Pentru a configura afpd-ul am folosit urmatoarea comanda:

echo “- -tcp -noddp -uamlist uams_dhx2.so -nosavepassword” >> /etc/netatalk/afpd.conf

 

Nota: Versiunile mai noi de Mac OS X refuza sa contacteze sau sa foloseasca servicii care nu au „uams_dhx2.so” in lista de optiuni pentru serviciul afpd.

Configurea volumelor (share-urilor) oferite utilizatorilor

Fiecarui utilizator ii este pus la dispozitie un volum (share), avind acelasi nume cu numele utilizatorului, volum care exporta continutul directorului dedicat acestui utilizator si care poate fi accesat de un singur utilizator.

mv /etc/netatalk/AppleVolumes.default /etc/netatalk/AppleVolumes.default.orig

sed s/^~/#\ ~/g /etc/netatalk/AppleVolumes.default.orig >/etc/netatalk/AppleVolumes.default

echo “/data/TimeCapsule/volume_01/mac_user_01 \”mac_user_01\” cnidscheme:dbd options:usedots,upriv,tm volsizelimit:15360 allow:mac_user_01″ >> /etc/netatalk/AppleVolumes.default

echo “/data/TimeCapsule/volume_01/mac_user_02 \”mac_user_02\” cnidscheme:dbd options:usedots,upriv,tm volsizelimit:30720 allow:mac_user_02″ >> /etc/netatalk/AppleVolumes.default

In comenzile de mai sus, optiunea „volsizelimit” definieste dimensiunea (in MB) care va fi raportata pentru fiecare volum iar optiunea „allow” defineste numele de utilizator care are access la volumul respectiv.

Repornirea serviciilor

Serviciile configurate pina acum trebuie repornite pentru a „citi” noua configuratie:

service iptables restart

service avahi-daemon restart

service netatalk restart

 

Dupa repornirea serviciilor serverul Linux este pregatit pentru a putea fi folosit in acelasi fel ca un dispozitiv TimeCapsule cumparat de la un reprezentant Apple.

 

Configurarea unui Mac OS X

In System Preferences, click pe “Time Machine”

01

 

Click pe butonul “Select Backup Disk”

02

 

Alege volumul (share-ul) care sa fie folosit si apoi click pe butonul “Use Disk”
03

 

Username-ul si parola pentru autentificare care au fost definite pe serverul Linux
04

 

Dupa autentificarea cu success, MacOS X identifica volumul, pregateste datele pentru backup si le copiaza prin retea in acelasi fel in care sint copiate pe orice Time Capsule

05
06
07

Leave a Reply

 

 

 

You can use these HTML tags

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>