Домашний Мак-сервер. Часть 2: Удалённый доступ, настройка роутера и скачивание торрентов

После вступительной статьи нашего нового цикла об организации домашнего сервера на платформе Mac OS X читатели требуют от нас конкретных инструкций к действию, поэтому перейдём от слов к делам и начнём рассказ о практике решения обозначенных ранее задач. Готовьтесь к самой сложной из всех статей данного цикла, потому что сегодня речь пойдёт о двух важных технических темах:

  • первым делом нужно будет организовать удобный доступ к нашему серверу при отсутствии у него монитора, клавиатуры и мыши (причём доступ не только с Маков, но и мобильных гаджетов, например, iPad)
  • во-вторых, нужно будет потратить вагон времени на настройку доступа к вашему домашнему серверу извне (прописать все IP-адреса, организовать проброс портов и привязку к стороннему доменному имени)

Ну а в качестве способа проверки правильности всех перечисленных настроек мы расскажем про организацию управления торрентами через веб-интерфейс Transmission.

Мы не будем заострять внимание на установке Mac OS X Server — сейчас в этом нет смысла. Во-первых, те задачи, о которых мы пока что будем рассказывать, не требуют наличия именно серверной разновидности «макоси», вполне можно обойтись и обычной. Во-вторых, через несколько дней выйдет OS X Lion, где вся установка серверной версии будет сводиться к скачиванию специального приложения от Apple через Mac App Store. В общем, особых премудростей тут нет. Если вы всё-таки решите самостоятельно поставить себе Mac OS X Leopard Server или Snow Leopard Server, то обнаружите, что никаких существенных отличий процесса установки от клиентской версии не существует: просто система спросит у вас серийный номер и задаст ещё ряд дополнительных вопросов, на которые можно отвечать всё, что душе угодно.

Куда важнее вопрос взаимодействия с сервером, который с большой долей вероятности будет использоваться без монитора, клавиатуры и мыши (для первоначальной установки системы и то, и другое, и третье вполне желательны :). Собственно, вариант тут один — удалённый доступ по протоколу VNC. И хотя протокол один, решений, использующих его — масса. Самое простое (потому что встроенное в Mac OS X) — это утилита «Общий экран». Порядок работы с ней таков:

  • убеждаетесь, что любой Мак и ваш сервер находятся в одной (например, беспроводной) сети
  • в сайдбаре Finder находите ваш сервер и кликаете по нему
  • в чёрной панели нажимаете на кнопку «Общий экран» и вводите логин/пароль учётной записи на сервере:

Откроется отдельное окошко, которое будет служить вам монитором к домашнему серверу. Делайте в нём всё, что хотите.


Всем хорош «Общий экран», но вот прямое перетаскивание файлов из вашего Мака прямо в окно сервера он не поддерживает. Если это для вас принципиально, то нужно использовать более серьёзные решения, например, Apple Remote Desktop — куда более продвинутое (а для домашнего пользователя — даже передвинутое) решение с кучей дополнительных возможностей, ориентированных на корпоративные сети.

В удалённом управлении Маком нет ничего сложного, хотя поначалу это кажется непривычным, а тем, кто накопил опыт работы с виртуальными машинами (Parallels или VMWare), подобный подход покажется знакомым. Главная проблема здесь — это сеть, потому что только от неё зависит возможность контролировать ваш сервер. Если по каким-либо причинам сервер не сможет подключиться к сети, то никакое взаимодействие с ним будет невозможно. Поэтому основное правило при работе с сервером сформулируем так: все настройки, которые связаны с вашей домашней сетью, должны осуществляться до того, как вы отключите монитор, клавиатуру и мышь от него. При несоблюдении данного правила разнообразные мытарства вам гарантированы.

Что касается удалённого доступа к серверу с iOS-гаджетов Apple, то здесь выбор софта куда обширнее. При этом, к большому сожалению, большинство таких программ требуют установки на контролируемый компьютер всяких дополнительных приблуд. Нельзя сказать, что это нежелательно, но знайте — чем больше задач будет решать ваш домашний сервер, тем больше софта будет автоматически запускаться при его включении, и тем сильнее он будет подтормаживать. Стоит ли добавлять в автозагрузку ещё одну программу, если можно без неё обойтись? Из тех решений для iOS, которые могут работать с Маками напрямую, без посредников, отметим Desktop Connect — хоть и дорогую, но зато универсальную и рабочую программу, которая не только умеет подключаться к Mac OS X и удалённо контролировать любой компьютер, но и умеет будить устройства, подключённые к локальной сети и перешедшие в режим сна. Не сочтите упоминание Desktop Connect за рекламу, просто ничего более подходящего мы пока не нашли :)


Перейдём к решению следующей задачи — удалённому скачиванию торрентов. Это классический пример того, как для решения простейшей по сути задачи требуется в разы более сложная предварительная подготовка. Тем не менее, эта подготовка вам потребуется в любом случае. Смысл её состоит в том, чтобы открыть доступ к вашему домашнему серверу извне, из Интернета. Без этого ни о каком удалённом доступе «не из дома» речи и быть не может, потому что вы попросту не сможете подключиться к домашнему серверу.
Итак, кто/что стоит на пути доступа из Интернета к вашему серверу?

  • во-первых, ваш роутер, раздающий Wi-Fi. В большинстве современных роутеров есть такая штука, как NAT (Network Address Translation), переводящая внешний IP-адрес, который вам даёт провайдер, во внутрений IP-адрес, использующийся в вашей домашней сети. Как правило, внешний IP-адрес у вас один на всю квартиру (а то и на весь дом!), а вот устройств, подключающихся к сети, у вас явно больше одного. Возникает вопрос: а на какое из этих устройств попадёт пользователь, пытающийся подключиться по вашему внешнему IP-шнику извне? Чтобы это устройство было определено, нужно менять настройки NAT.
  • во-вторых, ваш модем, предоставленный вам провайдером (хотя многие провайдеры предоставляют вам просто кабель, что даже лучше). В модеме тоже может быть свой NAT со своими заморочками, которые тоже надо будет преодолевать.
  • в-третьих, больше всего вам будет мешать сам провайдер. По умолчанию все провайдеры присваивают пользователям динамические внешние IP-адреса, которые меняются при каждом подключении. Как вы узнаете, на какой IP изменился ваш адрес, если во время вашего отсутствия отрубался свет и произошло переподключение к сети? Никак. Поэтому что-то надо делать. Простой способ состоит в подключении у провайдера услуги «постоянный (белый) IP», которая присвоит вам вполне определённый внешний IP-адрес, неизменный во времени и пространстве. Но знайте, что за это почти всегда взимается дополнительная абонентская плата. Сложный способ состоит в установке привязки динамического IP к доменному имени на каком-либо из бесплатных сервисов в Интернете (поверьте, делается это не так трудно, как звучит). Но сложный способ, увы, прокатит не со всеми провайдерами.

Давайте решать эти проблемы в обратном порядке. Про подключение белого IP говорить не будем — это делает через личный кабинет провайдера. Если же вам по душе «сложный способ», то получите наглядный пример использования сервиса DynDNS:

  • затем скачиваете и ставите на свой домашний сервер служебную утилиту DynDNS, которая в фоновом режиме станет отслеживать изменения вашего реального IP-шника и отправлять изменения на сайт DynDNS, чтобы выбранный вами домен всегда вёл к вашему серверу. В этой утилите вводите свой логин/пароль от сервиса DynDNS, а потом начинается самое интересное — выбор метода отслеживания изменений IP:

  • обычно срабатывают опции Web-based IP detection и Web-based IP detection (bypassing Proxy). Но если у вас необычная ситуация, то поможет только метод научного тыка ;) Не спешите экспериментировать с этими настройками, пока не устраните все остальные возможные препятствия.

Кстати, даже если у вас белый IP-адрес, то сервис DynDNS вам тоже пригодится. Согласитесь, что адрес типа vassilypupkin.dyndns.org запомнить намного проще, нежели какое-нибудь 88.129.132.76.

Про настройку модема от провайдера тоже нельзя сказать ничего внятного — сколько модемов, столько и настроек. Попробуйте зайти в веб-интерфейс управления модемом (как это сделать, читайте в инструкции к нему), ищите там раздел NAT и пункты, связанные с портами (например, Port forwarding). Если вы «счастливый» обладатель связки «модем провайдера + домашний Wi-Fi роутер», то знайте, что если на обоих звеньях цепи включён NAT, то ничего хорошего из этого не выйдет. Поэтому либо модем, либо роутер надо перевести в т.н. bridge-mode, отключив NAT и заставив устройство просто транслировать IP через себя, не меняя его.

В обзорной статье мы условились, что рассказываем про домашнюю «яблочную» экосистему на основе точек доступа от Apple, так что останавливаться на перипетиях настройки NAT на изделиях D-Link, Zyxel и т.п. мы не будем, потому что пытаться объять необъятное бессмысленно. Впрочем, принципы настройки везде одинаковые. Поскольку Apple может похвастаться самым вменяемым интерфейсом настройки роутеров, мы предлагаем вам осуществлять всё управление через него. Если же у вас есть нагрузка в виде модема провайдера, переведите его в бридж-мод и не тратьте время и нервы на дополнительную настройку. Настройка вашей точки доступа от Apple (будь то AirPort Express, Extreme или Time Capsule) осуществляется через AirPort-утилиту, лежащую в папке «Программы/Служебные программы». После запуска сразу нажимаете Manual Setup на странице вашей точки доступа и идёте на вкладку Internet.

В первую очередь, для нас важна подвкладка DHCP. Наша задача — сделать так, чтобы яблочная точка доступа всегда присваивала нашему серверу один и тот же IP-адрес.
Нажимаете на незаметный плюсик в нижней части окна, вводите любое описание для вашего сервера и следуете далее:
На следующем экране мастера надо будет ввести MAC-адрес сетевого интерфейса вашего сервера. Узнать его можно на самом сервере, заглянув в свойства системы (яблочко в менюбаре, пункт «Об этом компьютере», выбранный с зажатой клавишей Alt). Слева выбираете секцию «Сеть» (Network), справа — интерфейс, через который подключён сервер (Ethernet или Wi-Fi/AirPort). В нижней части окна в секции Ethernet запоминаете содержимое поля «MAC-адрес»:
Этот MAC-адрес вы вводите в AirPort-утилите. Заодно выбираете и запоминаете внутренний IP-адрес, который отныне будет постоянно присваиваться вашему серверу:
Считайте, что вы прошли полпути. Теперь остаётся настроить ещё одну важнейшую вещь — проброс портов. Чтобы не утомлять вас мудрёной IT-шной информацией, скажем лишь, что каждая задача будет решаться сервером через отдельные порты, которые приписываются к IP-адресу через двоеточие. Например, для удалённого подключения используется порт 5900, так что если у вашего домашнего сервера адрес 10.0.1.10, то полный адрес для доступа по VNC будет 10.0.1.10:5900. Для того, чтобы задачи вашего сервера можно было исполнять извне, нужно сделать так, чтобы ваша точка доступа Apple могла сообразить, что если из Интернета идёт попытка подключиться по адресу yourname.dyndns.info:5900, то этот адрес нужно преобразовать именно в 10.0.1.10:5900, сохранив порт.
Давайте посмотрим, как настраивается проброс порта в AirPort-утилите. Выбираете вкладку Advanced и подвкладку Port Mapping. Снова нажимаете плюсик:
Видите очередной мастер настройки с приличным количеством полей:

В выпадающем списке Service для вас заготовлены готовые номера портов для ряда наиболее популярных сетевых задач. Необязательно пользоваться этим списком, так что и мы не будем.
В среднем поле Private IP Address вы вводите внутренний IP-адрес компьютера, для которого действует правило проброса портов (т.е. выбранный ранее IP-адрес вашего домашнего сервера). В остальные пустые поля вводите одну и ту же цифру — требуемый порт. Если введёте 5900, получите правило проброса портов для VPN-доступа.
Всё, теперь можно сохранять настройки точки доступа и перезагружать её. Но не спешите: давайте всё-таки решим задачу обеспечения удалённого доступа к нашей торрентокачалке. Не отходя от AirPort-утилиты, добавьте ещё два правила проброса — для любого порта из интервала 51000-55000 (рамки не жёсткие :) и для порта 9091.
Дальше всё будет гораздо проще:

  • ставите на сервер Transmission
  • в опциях Transmission на вкладке сетевых настроек вводите выбранный вами порт из интервала 51000-55000, убеждаетесь, что рядом горит зелёный огонёк. Это избавит нас от потенциальных проблем со скачиванием и раздачей

  • на соседней вкладке, отвечающей за удалённое управление, ставите верхнюю галочку, заодно желательно включить логин и пароль для удалённого доступа к торрентам:

  • там же проверьте, что в качестве порта для доступа к торрентам выставлен 9091-й
  • остаётся добавить Transmission в список автозагрузки вашего сервера. Это делается в Системных настройках, в пульте «Учётные записи», через плюсик на вкладке «Объекты входа» (в английском варианте — Accounts-Login Items):

Не выходя из Системных настроек сервера, заодно загляните в пульт «Общий доступ» (Sharing) и поменяйте имя компьютера на что-нибудь лаконичное и понятное:

Теперь сохраните все настройки в AirPort-утилите, разрешите ей перезагрузиться.

Наконец, настала пора проверить работоспособность всей этой сложной сетевой конструкции. Вам понадобится выехать за пределы вашего дома или подключиться не через домашнюю беспроводную сеть, а через 3G-модем или любой другой способ связи с Интернетом.
Введите в адресную строку браузера выбранный вами при регистрации на DynDNS адрес типа yourname.dyndns.info:9091 и с трепетом ждёте результатов. Если появится окно с требованием ввода логина-пароля, вводите то, что вбили в настройках Transmission, и вуаля:

Загрузка торрентов на вашем сервере осуществляется по нажатию кнопки Open в веб-интерфейсе Transmission.

Если вам совсем повезёт и с техникой, и с провайдером, то вы сможете использовать адрес на dyndns.com как универсальный, работающий и у вас дома, и вне дома. Если не очень повезёт, то из дома этот адрес работать не станет, и вам придётся вводить либо внутренний IP-адрес сервера с соответствующим портом, либо что-то вроде MyServer.local:9091, где MyServer — то имя домашнего сервера, которое вы ранее задали в пульте Sharing Системных настроек. Ну а если вам совсем не повезёт, продолжайте экспериментировать с утилитой DynDNS Updater (см. выше) и/или настройками точки доступа Apple и модема провайдера, заодно перепроверьте все введённые IP-адреса и порты.

На сегодня всё. Удачи вам в настройке домашнего сервера! ;)