Versão resumida:
Qual é a diferença entre o contexto do servidor e uma seção virtualhost no arquivo de configuração do proftpd? No sentido do que posso fazer com o primeiro, não posso fazer com o segundo.
Por exemplo, eu não posso colocar diretivas como UseIPv6 ou MaxInstances em um virtualhost ou na seção global, mas colocá-lo no contexto do servidor funciona muito bem.
Qual seria então o uso correto dessas seções para a configuração mencionada abaixo?
Eu achei que o processo geral foi o seguinte: Sempre que um cliente se conecta ao servidor, o servidor verifica se há um host virtual correspondente ao endereço ao qual o cliente está conectado. Se a seção de contexto do servidor não for
escolhido (exceto a diretiva DefaultServer é usada para evitar isso). Então eu pensei que a seção de contexto do servidor e uma seção virtualhost são igualmente "poderosas". Mas isso não pode ser o caso, pois existem diretivas que funcionam apenas em uma das seções.
Versão longa (informações adicionais):
Basicamente tudo que eu quero fazer é executar um servidor proftp em uma máquina local em casa e tornar este servidor acessível tanto da internet quanto da minha LAN.
E está funcionando. Eu compilei o proftpd a partir do código fonte (razão abaixo), instalei e configurei e parece funcionar exatamente como deveria. Eu não preciso de ajuda para fazer o proftpd rodar corretamente.
Não consegui executar o servidor apenas lendo a documentação do proftpd e tive que continuar mexendo no arquivo de configuração até que tudo funcionasse bem.
Portanto, ainda há algo sobre o uso de virtualhosts, a seção de contexto global e de servidor que não entendi corretamente e é por isso que eu criei as perguntas acima.
Eu li sobre como configurar o proftpd atrás de um roteador e o significado de virtualhosts, seção de contexto global e de servidor: link
link
Eu segui vários guias e procurei no fórum por perguntas semelhantes. O servidor está funcionando, eu realmente não entendo porque é agora e porque não aconteceu antes.
Esta é a estrutura do meu atual (trabalhando) 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>
Primeiro, pensei em fazer duas seções de virtualhost, uma para LAN e outra para acesso externo e desativar
a seção de contexto do servidor, definindo a porta 0. Mas há diretivas que não posso usar dentro do virtualhost
Seções. Então, eu não tenho certeza se estou usando as 3 seções possíveis como deveria. Preciso usar a seção de contexto do servidor para ter algum tipo de configuração padrão? Isso pode ser feito com a diretiva DefaultServer de acordo com a documentação.
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:
Versão ProFTPD 1.3.5
O pacote binário proftpd incluído nos repositórios do Debian não suporta o TLS 1.2
e eu não quero usar FTP com a versão TLS abaixo disso ou mesmo SSL. Então eu mesmo compilei.
Este é um texto bastante longo. Tentei encurtar, ser preciso, evitar desnecessário, mas fornecer informações suficientes.
Se houver alguma coisa que eu possa melhorar ou se a minha pergunta, em vez disso, pertence ao unix e linux stackexchange, é só me avisar. Eu escolhi superusuário sobre serverfault para fazer essa pergunta porque é sobre um ambiente de servidor em casa.
Obrigado pelo seu tempo e ajuda.
Jan