Proftpd - правильно использовать виртуальные хосты, глобальный раздел, контекст сервера

Укороченная версия:

В чем разница между контекстом сервера и разделом виртуального хоста в файле конфигурации proftpd? В смысле, что я могу сделать с первым, я не могу сделать с последним.
Например, я не могу поместить директивы, такие как UseIPv6 или MaxInstances, в виртуальный хост или глобальный раздел, но размещение их в контексте сервера работает просто отлично. Каково будет правильное использование этих разделов для настройки, упомянутой ниже?

Я думал, что общий процесс был следующим: всякий раз, когда клиент подключается к серверу, сервер проверяет, существует ли виртуальный хост, соответствующий адресу, к которому подключен клиент. Если нет, то выбирается раздел контекста сервера (за исключением того, что для предотвращения этого используется директива DefaultServer). Поэтому я подумал, что контекстный раздел сервера и раздел виртуального хоста одинаково "мощный". Но это не может иметь место, поскольку есть директивы, которые работают только в одном из разделов.

Длинная версия (дополнительная информация):

По сути, все, что я хочу сделать, это запустить сервер proftp на локальном компьютере дома и сделать этот сервер доступным как из Интернета, так и из моей локальной сети. И это работает. Я скомпилировал proftpd из исходного кода (причина ниже), установил и настроил его, и он, кажется, работает так, как должен. Мне не нужна помощь, чтобы proftpd работал правильно.

Я не смог заставить сервер работать, просто прочитав документацию proftpd, и мне пришлось продолжать возиться с файлом конфигурации, пока все не заработало. Так что есть еще кое-что об использовании виртуальных хостов, глобальных и серверных разделов, которые я не понимаю правильно, и именно поэтому я придумал вопросы выше.

Я прочитал о настройке proftpd за маршрутизатором и о значении виртуальных хостов, глобальных и серверных контекстных разделов:
http://www.proftpd.org/docs/howto/NAT.html
http://www.proftpd.org/docs/howto/Vhost.html
Я следовал нескольким гидам и искал на форуме похожие вопросы. Сервер работает, я просто не понимаю, почему он сейчас, а почему нет.

Это структура моего текущего (рабочего) proftpd.conf: <Global> User ... Group ... RequireValidShell ... DefaultRoot ... ... <IfModule mod_tls.c> TLSEngine ... TLSProtocol TLSv1.2 ... </IfModule> </Global>
#server context managing the config for access over the internet ServerName "external" Port 21 #can't be used inside a virtualhost section UseIPv6 off ... #need to masquerade ip for external address MasqueradeAddress myurl.com #needed for passive ftp mode PassivePorts 60000 65535
#virtualhost managing the config for lan access <VirtualHost 192.168.178.54> ServerName "internal" Port 21 PassivePorts 60000 65535 </VirtualHost>

Сначала я подумал, что нужно просто создать два раздела виртуального хоста, один для локальной сети и один для внешнего доступа, и отключить раздел контекста сервера, установив порт 0. Но затем есть директивы, которые я не могу использовать внутри разделов виртуального хоста. Так что я совершенно не уверен, использую ли я 3 возможных раздела, как я должен. Нужно ли использовать раздел контекста сервера, чтобы иметь какую-то конфигурацию по умолчанию? Это можно сделать с помощью директивы DefaultServer в соответствии с документацией.

uname -a: Linux HOSTNAME 3.16.0-4-amd64 # 1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU / Linux

proftpd -v: ProFTPD версии 1.3.5 Двоичный пакет proftpd, включенный в репозитории debian, не поддерживает TLS 1.2, и я не хочу использовать FTP с версией TLS ниже этой или даже SSL. Так что я сам скомпилировал.

Это довольно длинный текст. Я попытался сократить его, быть точным, избежать ненужного, но предоставить достаточно информации. Если есть что-то, что я мог бы улучшить, или если мой вопрос скорее относится к unix и linux stackexchange, просто дайте мне знать. Я выбрал superuser вместо serverfault, чтобы задать этот вопрос, потому что речь идет о серверной среде дома.

Спасибо за ваше время и помощь.

январь

2 ответа

Существуют некоторые директивы конфигурации, которые влияют на весь демон, такие как UseIPv6 или же MaxInstances, По этой причине эти директивы не могут быть установлены отдельно для каждого хоста.

Однако синтаксис файла конфигурации ProFTPD не имеет контекста / раздела, в котором говорится, что "эти директивы предназначены только для всего демона". Таким образом, по умолчанию (и да, это не идеально), эти директивы для всего демона разрешены только в разделе "server config", за пределами <Global>, <VirtualHost>или любой другой контекст.

Надеюсь это поможет!

Как оказалось, я был не прав насчет предоставленной мной информации. Я собираюсь пометить этот вопрос как ответивший, чтобы люди не тратили время на ответ. Простое редактирование не поможет, так как я не знаю, когда у меня будет время, чтобы перепроверить мою настройку proftpd. Однако я выясню, что послужило причиной неверного описания, которое я предоставил, пересмотрю свой вопрос и через некоторое время опубликую его.

Другие вопросы по тегам