Порой появляется необходимость делиться своими файлами с друзьями, которые живут в соседней квартире и делят с вами вашу локальную сеть. Или же у вас есть NAS сервер и вы решили организовать свое файловое хранилище, куда могли бы получить доступ с любой точки мира.
Правда, закачать файлы в облако и пользоваться оттуда никто не отменял, но туда вы не поместите терабайты информации, которая хранится у вас на домашнем сетевом хранилище. Вот тут на помощь приходит локальный FTP сервер. Сетевые файловые накопители имеют встроенную возможность и соответствующие средства для организации данного сервиса. О возможностях конкретных моделей можно узнать на сайте производителя. Но мы решили создать свой сервер на обычном домашнем ноутбуке.
Для претворения в жизнь нашей затеи выбрали бесплатную и достаточно известную программу FileZilla. С клиентской частью наверное вам приходилось работать чаще, но есть еще и серверная часть, которая позволяет создавать свой FTP сервер. Качаем программу с официально сайта и устанавливаем. Установка стандартная поэтому покажу ту часть, которая может вызвать вопросы.
На этом месте установки выбираем Установить как службу, чтобы при загрузке компьютера сервер запускался автоматически. Порт можно поменять, но особого смысла нет, так как он используется только для локального подключения к серверу.
Далее переходим к настройке самой программы. Тут тоже буду останавливаться только на основных моментах, которые критичны для работы системы. Итак, первым делом в меню Edit выбираем Settings. В пункте General Settings выставляем значение как на рисунке:
Listen on these ports указывает на то, какие порты программа должна прослушивать для входящих соединений. Для большей безопасности их можно изменить и поставить любой порт выше 1023. В принципе можно и выше 1, но хорошим тоном считается выбор не общеизвестных портов, дабы избежать конфликтов.
Number of threads указывает на число потоков. Рекомендуется устанавливать равным числу установленных процессоров умноженных на 2.
Connection timeout устанавливает время в сессии для поключенного пользователя.
No Transfer timeout здесь указывается время после последнего трансфера файлов, по истечении которого соединение с сервером будет прервано.
Login timeout задает время ожидания ввода пользователем учётных данных.
В принципе в локальной сети этих настроек вполне достаточно. Следующий пункт Passive mode settings, который настраивается если вы подключаетесь к вашему серверу извне, а сервер стоит за маршрутизатором, который в свою очередь преобразует ваш серый IP, который начинается с 192.168. в белый, то бишь публичный, который виден всему Интернету.
Use custom ranges указываете порты, которые система выборочно откроет при инициализации подключения извне.
Use following IP указываете ваш внешний IP адрес, который можете посмотреть в Интернете вбив в поисковик ключевое слово my ip.
Retrieve external IP address from тут остановлюсь поподробней. Дело в том, что внешний IP у обычных поользователей меняется. И если вы укажете текущий адрес, то через некоторое время он будет недоступен. Тут на помощь приходит Dynamic DNS. Это такой вид услуги, которая позволяет обращаться к вашему внешнему IP адресу по доменному имени, например mycomp.com. Для этого нужно зарегистрироваться на одном из многочисленных сервисов, предоставляющих данную услугу, выбрать себе доменное имя и настроить соответствующим образом маршрутизатор. Но обо всем по порядку.
Хотя на рынке много поставщиков услуги указанного вида, я остановил свой выбор на noip.com. Во-первых, потому что этот сервис поддерживается моим роутером. А во-вторых, здесь бесплатно предоставляется доменное имя на месяц, а по истечении вы просто заходите и заново регистрируете ваш домен.
Для регистрации переходим на сайт noip.com. В главном окне в разделе Quick Add вписываем любое название и выбираем домен третьего уровня. Нажимаем Add hostname и наш домен готов. Затем открываем панель управления маршрутизатором, переходим на вкладку Динамический DNS, выбираем поставщика услуг, вводим имя пользователя указанный при регистрации на сайте сервиса, пароль и доменное имя. Включаем DNS и нажимаем Войти. Если всё указано правильно состояние подключения будет "Успешно!"
После всего этого в настройка FileZilla в строке Retrieve external IP address from указываем наш DNS адрес.
Дело остается за малым создать пользователя и протестировать подключение. Для этого в меню Edit выбираем Users. В открывшемся окне нажимаем на Add, задаём ему имя, ставим галочки перед Enable account и Password и вводим пароль. Все остальные настройки можно не менять:
Затем создаем папку для пользователя, даем ему нужные права и указываем как домашнюю директорию Set as home dir, чтобы при подключении пользователя перебросило сразу в нужное место. Можно для каждого пользователя создать отдельную папку, а также назначать разные уровни доступа на одну и ту же директорию.
Но что если вы всё это сделали, но друзья из Канады всё же не могут подключиться? Проблем могут быть две. Первая, не настроен переброс портов на роутере, вторая не прописано нужное правило на сетевом экране. Так настроим!
Для переброса портов на маршрутизаторе TP-Link переходим на вкладку Переадресация -> Виртуальные сервера. По умолчанию здесь никаких записей нет. Нажимаем на Добавить и вводим нужные значения.
Порт сервиса указываем внешний порт, на который будут идти обращения на наш IP. Здесь можно прописать и свои значения, но при подключении извне нужно будет прописать их в настройках клиента. Стандартный порт FTP 21.
Внутренний порт порт, который слушается на нашем сервере. В нашем случае это тоже 21.
IP-адрес адрес компьютера, где установлена серверная часть программы FileZilla.
Протоколы тут выбор не велик либо TCP, либо UDP. О протоколах можно говорить долго, но вкратце TCP гарантирует доставку отправленного пакета, но работает медленней, так как приходится ждать подтверждения получения каждой порции данных. UDP же шустрее TCP, но его не заботит получит ли адресат пакет или нет. FTP работает поверх TCP.
Есть еще набор предопределённых портов, который можно выбрать из выпадающего списка. Если всё стандартно, то выбираем FTP и нам не придётся вручную вводить все значения. Затем нажимаем на Сохранить.
Далее переходим к настройке межсетевого экрана. Для начала, чтобы убедиться, что именно он блокирует попытки подключения, лучше его вовсе отключить. Если всё заработало, то переходим к соответствующим настройкам.
На Панели управления выбираем Windows Defender Firewall -> Advanced Settings. Нажимаем на Inbound Rules (Правила для входящих соединений) и в правой панели выбираем New Rule. В открывшемся окне значения ставим как на рисунке:
Затем указываем порты и протоколы, для которых хотим разрешить соединение. Для FTP указываем TCP/21:
Нажимаем Next, указываем действие Разрешить (Allow the connection):
Профиль указывает для каких сетей будет действовать данное правило. Выбираем все:
В конце вводим название правила и нажимаем Finish.
Для Passive Mode делаем все тоже самое, только значение портов указываем те, что были прописаны в настройках программы в пункте Passive mode settings. Тут мы настроили правило для входящих подключений. Также нужно настроить правило для исходящих соединений. Все то же самое, просто настраивается в Outbound Rules (Правила для исходящих подключений).
После этого все должно начать работать. Если что-то не работает, попробуйте отключить межсетевой экран антивируса, если там таковой есть. В любом случае программа вам даст подсказки: код и описание ошибки, по причине которой не смог подключиться пользователь. (В данном случае ошибок нет, цель рисунка наглядно показать как выглядит сообщение программы)