/ freebsd

FreeBSD afp shares

Недавно полностью отказался от smb (samba) шар, т.к. винды нет и не будет, но по какому-то странному стечению обстоятельств этот legacy-виндовый протокол у меня существовал и во время linux рабочих станций и freebsd, и mac.. Этот протокол не был очень удобен – подолгу приходилось ждать получения списка файлов/директорий, при не очень стабильном соединении – wi-fi (в округе очень много соседских точек доступа и свободных каналов нет, так что коннект очень нестабильный и порой не быстрый, конечно там где можно надо бы на 5Ghz переходить) больший таймауты и отваливающиеся шары.. а так же поддержка unix-прав в netatalk3/afp.. Ну и последнее что подтолкнуло – обновлял библиотеки для того чтобы установить что-то посвежее из пакетов и сломалась эта самба – и тут как раз задумался – а нафиг она вообще-то и нужна..

Так что выбор был практически однозначный – afp/netatalk3..

Собираем из портов – /usr/ports/net/avahi-app Почему именно avahi-app, а не просто avahi?.. Просто avahi тащит за собой зависимости в виде Gnome/X11, на файл сервере и позже на шлюзе нет не X11 ни тем более оконных менеджеров..

Далее собираем собственно поддержку протокола netatalk3/afp – /usr/ports/net/netatalk3, как обычно make install clean

А так же потребуется dbus..

Avahi – это поддержка Zeroconf/Bonjour для автоматического анонса системы в сети, а netatalk3 это собственно реализация протокола шаринга, в принципе можно было бы обойтись и просто netatalk3, и каждый раз прописывать путь до шары вручную, но хотелось чтобы было красиво – отображения компьютера в Network и в панели сбоку в разделе Shared (как оказалось это намного удобнее чем каждый раз тыкать CMD+K и путь к шарам вводить вручную).

Настраиваем Avahi на файлсервере – в принципе настройка не требуется, юзаем дефолтный конфиг..
Настраиваем netatalk3 afp.conf

[Global]
        mimic model = Macmini
        log level = default:info
        log file = /var/log/afpd.log
        uam list =  uams_dhx.so uams_dhx2.so uams_guest.so
        zeroconf = yes
	vol preset = default_for_all_vol
	afpstats = yes
	dbus daemon = /usr/local/bin/dbus-daemon
[someshare]
        path = /mnt/someshare
        time machine = no
        valid users = @macusers

далее правим rc.conf

#afp
dbus_enable="YES"
avahi_daemon_enable="YES"
netatalk_enable="YES"

создаем группу macusers (addgroup), и добавляем туда пользователся pw groupmod user -m macusers, при этом использовал своего системного пользователя..

и стартуем все сервисы – все.. в разделе Networks (Shift+CMD+K) должен отобразится еще один компьютер..

Но это все хорошо и удобно если все компьютер в одной сети – у меня не так, куча вланов (штук семь), L2 свичи и роутер на freebsd который управляет этим всем.. Wi-Fi так же находится в отдельном влане и подсети.. Поэтому например по Wi-Fi не видны компьютеры с ethernet и других VLAN..

Поэтому ставим на шлюз avahi-app из портов..
Настраиваем

[reflector]
        enable-reflector=yes
        reflect-ipv=yes
[server]
        deny-interfaces=em1

Это совсем базовый конфиг, здесь только запрещена трансляция в em1 (em1 у меня аплинк от провайдера), потом естественно отключил трансляцию в vlan50 (гостевой Wi-Fi)..

В итоге получилась очень удобная система обмена файлами, при открытии директории со множеством объектов время требуемое для создания списка уменьшилось как минимум вдвое.. Так же с помощью netatalk3/afp можно создать шару для Timemachine OS X, но об этом как нибудь потом..

FreeBSD afp shares
Share this

Subscribe to Somewhere Nowhere