1

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

В чем разница между контекстом сервера и разделом виртуального хоста в файле конфигурации 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 ответа2

1

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

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

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

0

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .