11.4. FTP in un Cluster LVS

Il File Transport Protocol (FTP) é un protocollo a porte-multiple complesso e di vecchia concezione, che presenta una serie distinta di difficoltá per un ambiente clasterizzato. Per capire la natura di queste difficoltá, bisogna prima capire le fasi piú importanti inerenti il funzionamento dell'FTP.

11.4.1. Funzionamento dell'FTP

Nella maggior parte dei rapporti con altri client del server, il dispositivo del client attiva un collegamento al server su di una particolare porta usata poi dal server per rispondere al client. Quando un client FTP si collega ad un server FTP, esso attiva un collegamento sulla porta 21 di controllo dell'FTP. Il client poi indica al server FTP se stabilire un collegamento attivo o passivo. Il tipo di collegamento scelto dal client, determina il modo di risposta del server e su quali porte tale collegamento avrá luogo.

I due tipi di collegamento dati sono:

Collegamenti Attivi

Quando viene stabilito un collegamento attivo, il server attiva un collegamento dati con il client, dalla porta 20 ad una porta con una maggiore portata sul dispositivo del client. Tutti i dati vengono passati dal server attraverso questo collegamento.

Collegamenti Passivi

Quando viene stabilito un collegamento passivo, il client chiede al server FTP di stabilire una porta per il collegamento passivo, la quale puó essere su di una porta maggiore di 10,000. Il server poi, si allaccia alla suddetta porta per questa sessione particolare e trasmette il numero della porta al client. Ogni richiesta dati che viene fatta dal client, risulta in un collegamento dati separato. Molti client FTP moderni cercano di stabilire un collegamento passivo con l'FTP.

É da notare due cose molto importanti riguardante il clustering, esse sono:

  1. Il client determina il tipo di collegamento, non il server. Questo significa, che per mettere effettivamente insieme un FTP, l'utente deve configurare i router LVS per sostenere i collegamenti attivi e passivi.

  2. Il rapporto FTP tra client/server puó potenzialmente attivare un grosso numero di porte che sia il Tool di configurazione di Piranha che l'IPVS, non sono a conoscenza.

11.4.2. Come tutto questo influenza il Routing LVS

Il solo inoltro del pacchetto IPVS, abilita i collegamenti interni ed esterni dal cluster, basato su di un riconoscimento del proprio numero della porta o del proprio firewall mark. Se un client esterno cerca di aprire una porta che non é supportata dall'IPVS, lo stesso IPVS interrompe il collegamento. Similmente, se il server reale cerca di aprire un collegamento esterno ad internet su di una porta dove IPVS non ne conosce l'esistenza, l'IVPS termina il collegamento. Ció significa che tutti i collegamenti dei client FTP su internet, devono avere lo stesso firewall mark e tutti i collegamenti dal server FTP devono essere inoltrati propriamente ad internet, usando le regole di filtro del pacchetto di rete.

11.4.3. Creazione delle regole del filtro del pacchetto di rete

Prima di assegnare qualsiasi regola iptables per il servizio FTP, controllare nuovamente le informazioni nella Sezione 11.3.1 riguardanti i servizi e le tecniche di porte-multiple, per il controllo delle regole del filtro del pacchetto di rete giá esistenti.

Di seguito sono riportate le regole che assegnano lo stesso firewall mark, 21, al traffico FTP. Per far si che queste regole siano effecaci, l'utente deve usare anche il SERVER VIRTUALE, sottosezione del Tool di configurazione di Piranha per configurare un server virtuale per la porta 21, con un valore di 21 nel campo del Firewall Mark. per maggiori dettagli, controllare la Sezione 12.6.1.

11.4.3.1. Regole per i collegamenti attivi

Le regole per i collegamenti attivi, indicano al kernel di accettare ed inoltrare i collegamenti provenienti dall'indirizzo IP floating interno alla porta 20 — la porta dati FTP.

iptables
/sbin/iptables -t nat -A POSTROUTING -p tcp \
               -s n.n.n.0/24 --sport 20 -j MASQUERADE

Nei comandi iptables, n.n.n dovrebbe essere sostituito con i primi tre valori dell'IP floating dell'interfaccia di rete interna dell'interfaccia NAT definita nel IMPOSTAZIONI GLOBALI pannello del Tool di configurazione di Piranha. Questi comandi permettono al router LVS, di accettare collegamenti uscenti dai server reali che l'IPVS non conosce l'esistenza.

11.4.3.2. Regole per i collegamenti passivi

Le regole per i collegamenti passivi, assegnano gli appropriati firewall mark ai collegamenti provenienti da Internet per l'IP floating del servizio su di un gran numero di porte — 10,000 a 20,000.

AttenzioneAttenzione
 

Se si limita il numero delle porte per i collegamenti passivi, l'utente deve configurare il server VSFTP per poter usare un numero di porte corrispondenti. Questo puó essere raggiunto aggiungendo la seguente riga a /etc/vsftpd.conf:

pasv_min_port=10000
pasv_max_port=20000

Dovete controllare anche l'indirizzo mostrato dal server al client per collegamenti FTP passivi. In un sistema LVS 'routed' NAT, aggiungere la seguente riga su /etc/vsftpd.conf, per sovrascrivere l'indirizzo IP del server su VIP, il quale rappresenta quello che il client vede dopo in collegamento. Per esempio:

pasv_address=X.X.X.X

Sostituire X.X.X.X con l'indirizzo VIP del sistema LVS.

Per la configurazione di altri server FTP, consultare la rispettiva documentazione.

Questa gamma dovrebbe essere abbastanza grande per la maggior parte delle situazioni; comunque, é possibile aumentare questo numero, includendo tutte le porte non-sicure, cambiando 10000:20000 nei comandi sotto riportati, su 1024:65535.

iptables
/sbin/iptables -t mangle -A PREROUTING -p tcp \
               -d n.n.n.n/32  \
               --dport 21 -j MARK --set-mark 21
/sbin/iptables -t mangle -A PREROUTING -p tcp \
               -d n.n.n.n/32 \ 
               --dport 10000:20000 -j MARK --set-mark 21

Nei comandi iptables, n.n.n.n dovrebbe essere sostituito con l'IP floating per il server virtuale FTP definito nel SERVER VIRTUALE, sottosezione di Tool di configurazione di Piranha. Questi comandi hanno un effetto di rete di assegnare qualsiasi traffico indirizzato all'IP floating delle porte appropriate, un firewall mark di 21, il quale in ritorno é riconosciuto dall'IPVS e propriamente inoltrato.

AttenzioneAttenzione
 

I comandi sopra riportati, hanno un effetto immediato ma non sono persistenti attraverso un riavvio del sistema. Per assicurare che le impostazioni del filtro del pacchetto di rete vengano ripristinate dopo un riavvio, far riferimento a la Sezione 11.5

Concludendo, l'utente deve assicurarsi che il servizio appropriato sia impostato in modo tale da attivarsi ai runlevel corretti. Per maggiori informazioni consultare la Sezione 10.1.