Sposób na starsze serwery AFP (dyski sieciowe, TimeMachine itp.)

AFP bez DHX2
Wielu z nas doświadczyło problemów z dostępem przez sieć do starszych serwerów i dysków sieciowych po przesiadce na OS 10.7 Lion. Często skutkowało to brakiem dostępu do naszego sieciowego dysku Time Machine. Nawet jeżeli mamy już urządzenie NAS zgodne z Lwem to często musimy znacznie dłużej oczekiwać na autoryzację dostępu. Jest na to elegancki sposób bez czekania na aktualizację oprogramowania urządzeń sieciowych.



Używam w domu (i firmie) od paru tygodni taniego QNAP TS-11x z oprogramowaniem w wersji 3.5, które to już wspiera AFP dla Mac OS 10.7 Lion. Niestety czas logowania (autoryzacji dostępu) do zasobów sieciowych czy Time Machine w tym QNAP'ie znacząco się wydłużył (z kilku do kilkuset sekund nawet). Nie mogę powiedzieć abym był z tego powodu zadowolony, więc zacząłem szukać jakiegoś rozwiązania (poza pożaleniem się w dziale wsparcia QNAP'a). Z pomocą przyszedł sam Apple, który kilka dni temu przyznał się, że to częściowo jego wina ;-)
Chodzi o to, że Apple wymusza ponoć najbezpieczniejszą metodę autoryzacji do zasobów AFP w OS 10.7 Lion: DHX2. Na szczęście jest to tylko zablokowanie, a nie usunięcie z systemu starszych sposobów autoryzacji.

Aby odblokować dostęp do starszych urządzeń sieciowych po AFP lub przyśpieszyć znacząco logowanie do tych już zaktualizowanych należy postąpić tak (uwaga, dalej będą zaklęcia terminalowe, osoby wrażliwe proszone są o odejście od komputera):

Otwórz Terminal.
Aby zobaczyć listę zablokowanych protokołów wpisz lub wklej:
defaults read /Library/Preferences/com.apple.AppleShareClient afp_disabled_uams

Jeżeli nic nie było zmieniane to powinieneś zobaczyć tam typową listę: Cleartxt Passwrd, MS2.0, 2-Way Randnum exchange oraz DHCAST128.

Aby usunąć z listy zablokowanych protokołów autoryzacji któryś z nich, tworzymy po prostu nową listę już bez niego. Np. aby zezwolić na wszystkie poza najbardziej niebezpiecznym Cleartxt Passwrd (hasło wysyłane otwartym tekstem) tworzymy listę tylko z nim:
sudo defaults write /Library/Preferences/com.apple.AppleShareClient afp_disabled_uams -array "Cleartxt Passwrd"
(po tej komendzie musimy podać hasło administratora).

Aby wykluczyć z listy (czyli dopuścić do używania) tyko DHCAST128 wpisujemy:
sudo defaults write /Library/Preferences/com.apple.AppleShareClient afp_disabled_uams -array "Cleartxt Passwrd" "MS2.0" "2-Way Randnum exchange"

Najlepiej było by przeprowadzić test z jakiego z tych protokołów wymaga nasze urządzenie doświadczalnie i nie odblokowywać wszystkich protokołów hurtowo.

Jeżeli ww. komendy nie zadziałały lub lista zablokowanych protokołów wyglądała inaczej niż wyżej podana typowa, należy zresetować listę do standardowych wartości:

Odblokowanie dostępu do bibliotek:
sudo chmod o+w /Library/Preferences

Wymuszenie standardowych ustawień:
sudo defaults write /Library/Preferences/com.apple.AppleShareClient afp_host_prefs_version -int 1
(terminal będzie nas pytał o hasło administratora)

Teraz należy połączyć się do jakiegoś serwera (np. innego komputera z Mac OS) po AFP ale koniecznie na konto z hasłem (nie jako Gość).

Potem należy wykonać polecenia podane na początku (wyświetlenie i zmianę listy) i na koniec przywrócić wcześniejsze przywileje dostępu do biblioteki:
sudo chmod o-w /Library/Preferences

Po tych zabiegach możemy połączyć się do starszych serwerów lub wyłączyć obsługę uwierzytelniania DHX2 aby znacznie przyśpieszyć logowanie do nowszych. Np. w QNAP robi się to tak „odhaczając” DHX2 w ustawieniach Sieć Apple:
Obsługa uwierzytelniania DHX2
Wyłączenie tej funkcji przyśpieszy również logowanie z Mac OS 10.5 i 10.6.

Mi te zabiegi oddały kilka minut dziennie czasu traconego na logowanie do serwera, mam nadzieję, że i Wam się przydadzą.


Jeżeli będziemy chcieli powrócić do normalnych dla 10.7 Lion ustawień wystarczy skasować plik (zostanie odtworzony przez system):
/Library/Preferences/com.apple.AppleShareClient
lub wpisać do niego typową listę zablokowanych protokołów:
sudo defaults write /Library/Preferences/com.apple.AppleShareClient afp_disabled_uams -array "Cleartxt Passwrd" "MS2.0" "2-Way Randnum exchange" "DHCAST128"