Server Multipli dietro pfSense
-
Buongiorno a tutti,
Spero possiate aiutarmi a risolvere il problema che si è venuto a creare.
Vado a esporre il problema :
- Configurazione PfSense :
Interfacce Attive : WAN - LAN - DMZ - WIFI
IP WAN : Dinamico (Raggiungibile tramite DDNS)
NAT Reflection : Attivo (Pure NAT)
Presenza server DNS Interno : SI
DNS Forwarder : Attivo con Nomi del DNS Interno
VPN : PPTP - IPSec (Entrambe Attive)
Problema :
Dietro a PfSense ci sono alcuni server (Web - Mail - FileServer - Etc..) Se mi collego in VPN tutto funziona regolarmente (Ovviamente essendo connesso in quel momento come fossi all'interno della Lan). Se mi collego dalla Lan o dal WIFI tutto regolare.
Dall'esterno : Vorrei che PfSense , in base al nome dns che richiamo punti ad un server interno.
Ad esempio :
pippo.dynns.it > 1.2.3.4
pluto.dynns.it > 1.2.3.5Questo però su qualsiasi porta.
Mi era venuto in mente di mette un Virtual Machine interna che redirezioni il traffico puntando ai vari server e PfSense che punti a quella macchina. Ma non so :
- Se questa idea è fattibile
- Come configurare la macchina
Vi ringrazio anticipatamente per l'aiuto.
-
Mmm…
Ma i servizi sono diversificati dalle porte!
Cioè vorresti che collegandoti sempre sulla porta 80 in base al nome ci fosse un NAT ad una macchina in DMZ (presumo) su un'altra porta (25, 110, ...)? -
Esatto! ;D
-
No… Asp
Non collegandomi sempre alla porta 80 ma in base al servizio.Esempio :
Mail.pippo.it sulla 25 > 1.2.3.4 sulla 25
mail.pippo.it sulla 80 > 1.2.3.4 sulla 80come se unissi il dyndns direttamente al server di destinazione.
Sulla porta 80 ho più di un server e devo redirezionare la connessione in base al nome del dyndns -
No… Asp
Mail.pippo.it sulla 25 > 1.2.3.4 sulla 25
mail.pippo.it sulla 80 > 1.2.3.4 sulla 80
Sulla porta 80 ho più di un server e devo redirezionare la connessione in base al nome del dyndnsMmmmm… mhà... la vedo dura.
Più facile per i web server tutti sulla porta 80.
In quel caso puoi mettere in piedi un http server e giocare con i permanent redirect.
In quel caso, la prima richiesta arriva ad un apache che abbia solo dei redirect, che poi puntano ad altri host. -
Ci avevo pensato a quella soluzione, ma è valida solo per la 80.
Esiste qualcosa per realizzare un redirect su tutte le porte da mettere tra pfsense e la dmz ? Tipo un software di redirect in base a hostname -
Secondo me non esiste, però potrei sbagliarmi…
-
Quale soluzione applicheresti ?
-
Mha… io farei degli alias sul dns pubblico (dei CNAME) che puntano tutti allo stesso ip. es:
pippo.mio.com -> 1.2.3.4; pluto.mio.com -> 1.2.3.4; paperino.mio.com etc.etc.
Oviamente lo svantaggio è che tutti puntano al medesimo ip, e quindi, di fatto agli stessi servizi, per cui un servizio su porta 25 di pippo e pluto son gli stessi... al limite si può tentare di configurare il servizio sulla macchina di destinazione (se possibile) a rifiutare tutto ciò che non si presenta con l'hostname che scelto.
Dovresti vedere se ci sono dei servizi layer 7 (come appunto il redirect di apache), che siano in grado di determinare l'hostname e quindi fare il redirect alla porta che ti interessa... però secondo me non è così semplice, perchè ogni servizio ha il suo protocollo, ed alcuni non espongono il nome host di destinazione, come invece fa l'http....
Non è semplice... servirebbe una sorta di dns, che oltre a risolvere gli indirizzi, lo facesse anche sulle porte....
l'Unica è avere N indirizzi ip pubblici diversi, tanti quanti sono i servizi che intendi pubblicare, e poi sul pfsense, fai tutti i virtual ip sulla wan, e da lì giochi con il nat. -
Intanto vi ringrazio tutti per le risposte.
Pensavo di installare un secondo pfSense su una VM, installare squid3 e usarlo come reverse proxy.
Sai se squid funziona anche con protocolli differenti da HTTP/HTTPS ?
se si potrei utilizzarlo come redirect. Nelle configurazioni vedo che il campo porta è libero non si sceglie da un elenco.
Ti sembra valida come soluzione ?
-
Secondo me squid funziona solo con protocollo http/s
Il problema di fondo è che non tutti i servizi, richiedono che il client remoto, renda esplicito il nome host richiesto quando si collega.
Mentre questo succede con http, perchè i browser fanno sempre richieste del tipo GET http://www.pippo.com … etc.etc, altri protocolli come smtp, pop, ssh etc.etc. possono non richiederlo, e quindi in mancanza dell'informazione non si può fare un servizio che si comporti in funzione di quello.
Per quanto riguarda la tua soluzione, al limite, più oltre a squid3 come reverse proxy, prova a dare un occhio all' HAProxy, che è sui packages... forse può essere più indicato. -
Hai ragione :'(
Provo con il proxy addon che mi hai detto e spero di risolvere almeno per alcuni servizi
Grazie a tutti per le risposte.
-
Ho provato il package che mi hai consigliato! e…. FUNZIONAAAAAA!!!! Accetta tutti i tipi di protocolli , mysql , etc... per il momento l'ho testato con http/s e funziona alla grande.
Ho installato un secondo pfSense su una VM e inserito tra la wan e la dmz. ho impostato il primo pfSense (Quello centrale) in modo che redirezioni le richieste della porta (esempio 80 o 25) sulla lan del secondo. Sul secondo pfSense ho installato haproxy e configurato il frontend poi ho configurato il backend in modo che punti sul server giusto. e tutto funziona :)
GRAZIE!!! di che colore la vuoi la statua ?
-
Mi fà piacere… adesso lo so anch'io :-D :-D
... avevo letto un pò la documentazione, ma non avendone bisogno, non l'ho mai approfondito più di tanto.
Per la statua non esageriamo... facciamo che mi offri una birra.
Ciao. -
Molto volentieri. :) ti tengo aggiornato sui vari test. per il momento l'http/s funziona benissimo. appena torno a casa testo su altre porte e protocolli e ti aggiorno.