O servidor ProFTPd atrás do firewall retorna o endereço IP interno para conexões WAN e LAN

1

Estou usando o ProFTPD em um servidor Debian por trás de outro firewall do Debian. Eu posso conectar ao servidor ftp do lado de fora. No entanto, o host virtual escolhido é sempre 192.168.0.4, independentemente das conexões WAN ou LAN. Isso causa um problema ao entrar no modo PASV quando o servidor ftp responde com o endereço IP interno às conexões WAN.

Eu sei que há uma diretiva MasqueradeAddress para conectores WAN, mas minhas conexões WAN estão se conectando ao meu host virtual interno.

Como há apenas 1 endereço IP no servidor FTP, eu preciso usar o módulo mod_ifsession como descrito aqui: link ?

    
por Lifz 08.09.2017 / 17:50

1 resposta

2

Na pergunta original, perguntei se precisava usar o módulo mod_ifsession . Até agora, essa é a única maneira de fazer isso funcionar. Talvez isso seja esperado, mas eu esperava usar um bloco <VirtualHost> para que funcionasse.

Aqui está o que eu fiz:

<IfModule mod_ifsession.c>
  <Class internal>
    From 192.168.0.0/24
  </Class>

  <IfClass !internal>
    MasqueradeAddress 1.2.3.4
  </IfClass>
</IfModule>

Usando isso, as conexões LAN recebidas recebem o IP interno ( 192.168.0.4 ) e as conexões WAN obtêm o IP externo ( 1.2.3.4 ). Não sei se é ideal, mas funciona.

Editar: também consegui trabalhar usando uma porta diferente, como sugerido. Você pode ou não querer executar o ftp em uma porta não padrão, então talvez esse método não seja para você. Se você encaminhar a porta 21 no firewall para o servidor ftp usando, por exemplo, 2121 e escutar na porta 2121 em um dos blocos <virtualHost> , você saberá que é uma conexão externa. Aqui está o bloco que usei para isso:

<VirtualHost 192.168.0.4>
  ServerName "External"
  Port 2121
  MasqueradeAddress 1.2.3.4
</VirtualHost>

Observação: Se você fizer dessa maneira, as diretivas "configuração do servidor" (qualquer coisa que não esteja em <virtualHost> ou <Global> block) não serão aplicadas. Você pode ter que repetir algumas diretivas ou usar um bloco <Global> .

    
por 08.09.2017 / 18:53

Tags