Proftpd - правильное использование virtualhosts, global section, server context

Proftpd - правильное использование virtualhosts, global section, server context

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

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

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

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

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

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

Я прочитал о настройке proftpd за маршрутизатором и значении раздела virtualhosts, global и server context:
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>

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

uname -a: Linux ИМЯ ХОСТА 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1 (2015-05-24) x86_64 GNU/Linux

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

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

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

Янв

решение1

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

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

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

решение2

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

Связанный контент