Programming, robotics, traveling

02 Jul 2013

Бекап сервера на Time Capsule

image

Фото взято из livejournal.com

Как видно из названия, эту статью я хочу посвятить опыту настройки моего сервера под хранение бекапов на Time Capsule.

Проблема: Увеличение объёма жесткого диска сервера стоит денег, а на домашней Time Capsule есть много свободного места, следовательно возникают упущенные возможности.

Задача: Есть удаленый VPS/VDS сервер с Linux/Unix операционной системой, на котором есть система бекапов. Надо настроить выгрузку бекапов или прямое создание бекапов на домашнюю Time Capsule.

Немного больше конкретики:

  • Домашняя сеть построена на роутере ASUS RT-N12;
  • Роутер имеет встроенный VPN PPTP сервер;
  • У домашней сети один внешний динамический IP адрес;
  • Time Capsule 4G подключается к роутеру по Wi-Fi.

Начало: Первым делом я настроил DDNS. Роутер поддерживает несколько провайдеров DDNS среди которых мне понравился asuscomm.com и широко известный сервис NO-IP, исходя из своей практики asuscomm последнее время очень долго обновлял DNS записи, в связи с чем я быстро вспомнил свой пароль от второго сервиса).

Потом я просканировал порты Time Capsule с помощью nmap:

nmap -p 1 65535 192.168.1.178
PORT      STATE SERVICE
139/tcp   open  netbios-ssn
445/tcp   open  microsoft-ds
548/tcp   open  afp
5009/tcp  open  airport-admin
10000/tcp open  snet-sensor-mgmt

После сканирования стало ясно, что капсула работает с двумя файловыми протоколами Samba и AFP.

Подходы: Для решения задачи я вижу три варианта:

  1. Сделать проброс портов из Time Capsule в интернет (через настройку в роутере) и подключится к ней с сервера;
  2. Настроить vpn-туннель между моей домашней сетью и сервером, после чего подключиться к Time Capsule по Samba.
  3. Написать скрипт либо на роутер, либо на Time Capsule, который будет заходить по ssh (sftp) на сервер и выкачивать оттуда бекапы на капсулу.

Начал я с первого варианта и сразу понял, что реализовать это будет сложно из-за того, что есть несколько аспектов:

  • Samba - на сколько мне известно основана на протоколе локального уровня, поэтому она не работает в интернете;

  • AFP по умолчанию не поддерживается в CentOS, и для работы необходима установка пакета fuse-afp-0.8.1-6 из нестандартного репозитория, который содержит afpfs-ng-0.8.1 при установке которого у меня возникли пару ошибок решать которые я не захотел.

    mount_afp 'afp://login:[email protected]/Data' /mnt/time_capsule
    

Заниматься третьим вариантом я не захотел, так как в принципе не знаком с тем как подобраться к роутеру или к капсуле и написать такой скрипт.

Я остановился на втором варианте. Для установки я воспользовался статьей redhat-club.org.

По сути устанавливаем pptp-клиент через менеджер пакетов:

yum install pptp

И настраиваем. Первым дело изменяем файл /etc/ppp/chap-secrets, в который дописываем логин и пароль:

# client server secret IP addresses
USERNAME * PASSWORD *

После чего создаем файл /etc/ppp/peers/PROVIDER_NAME, в который пишем следующее:

pty "/usr/sbin/pptp VPN_SERVER --nolaunchpppd"
debug
lock
lcp-echo-interval 30
lcp-echo-failure 4
noipdefault
# defaultroute
usepeerdns
persist
refuse-eap
refuse-mschap
# Turn off compression protocols we know won't be used nobsdcomp no deflate
# Require MPPE 128-bit encryption
#mppe required,stateless
require-mope-128 #подключаем шифрование

А потом создаем следующие файл /etc/sysconfig/network-scripts/ifcfg-PROVIDER_NAME:

DEVICE=ppp0
TYPE=Modem
BOOTPROTO=dialup
ONBOOT=yes
USERCTL=yes
PEERDNS=no
PROVIDER=PROVIDER_NAME
DEFROUTE=no
PERSIST=yes
PAPNAME=USERNAME
DEMAND=no

Для управления данным туннелем есть несклько комманд:

# запуск
ifup PROVIDER_NAME
# остановка
ifdown PROVIDER_NAME
# логи
egrep '(ppp|pptp)' /var/log/messages

Примечания:

  • VPN_SERVER - доменное имя или IP-адрес VPN-сервера;
  • USERNAME - имя пользователя;
  • PASSWORD - пароль пользователя;
  • PROVIDER_NAME - название провайдера.

После запуска сервер подключается автоматически к точке доступа через протокол pptp и здесь возникает проблема, дело в том что каждый раз при подключении к vpn надо прописывать маршрут. Для дополнительных скриптов в папке /etc/ppp есть файл ip-up он запускается после поднятия соединения. Если его открыть то можно увидеть инклуд ip-up.local.

Следовательно создаем файл ip-up.local в который пишем следующее:

logger -t 'add_route_hnwu.sh' 'executing...'
route add -net 192.168.1.0/24 gw 192.168.1.1
exit 0

Посмотреть интерфейсы можно выполнив команду ifconfig. Посмотреть маршруты можно выполнив команды route -n.

После всех проделанных действий у сервера есть подключение к домашней сети, к пулу 192.168.1.0 - 192.168.1.255.

Теперь необходимо настроить команду mount для этого надо скачать пару библиотек:

yum install smbfs cifs-utils

После чего можно монтировать Time Capsule по протоколу Samba:

mount -t cifs -o user=имя,password=пароль //192.168.1.35/Data /mnt/time_capsule