Fuorviante

Lo so che molti di voi si metteranno a ridere per l’ingenuità, però.

Stavo cercando di configurare l’FTP sul mio serverino. Non funziona. Controllo la porta 21… che pirla, è chiusa.
La apro e continua a non funzionare.
Controllo… e la porta 21 è ancora chiusa. Eppure mi sembra tutto a posto, perché mai risulta chiusa? A un certo punto arrivo a fermare tutto il firewall per un attimo ma niente, anche così la porta 21 risulta chiusa.

Poi passa di lì un tizio a caso che mi dice: ehi, ma sei sicuro che che il server FTP sia attivo? Perché se non c’è nessuno a rispondere la porta risulta chiusa anche se è aperta.
Ed era proprio così.

Mezza giornata buttata nel cesso perché la porta è chiusa quando in realtà è aperta solo perché dall’altra parte non c’è nessun servizio a rispondere. Potremmo ridefinire il concetto di fuorviante con questo esempio.

Posso dire fanculo?

13 Comments

  1. kheimon said:

    (Mi meraviglio che nel 2018 qualcuno ancora sappia cos’è FTP, che e che per giunta lo usi. 😮 Renderlo anche solo vagamente sicuro richiede molto lavoro e non serve poi a granché visto che tanto, probabilmente, usi già SSH per amministrare il server da remoto — e a quel punto…).

    Ad ogni modo sì, questa terminologia può confondere. Per curiosità, le porte bloccate dal firewall risultano “filtered”? 🙂

    23 ottobre 2018
    Reply
    • mattia said:

      Mi meraviglio che nel 2018 qualcuno ancora sappia cos’è FTP, che e che per giunta lo usi.

      sicché, io ò uno flusso di dati (un numero al secondo ogni secondo, sono misure) tra due server e lo faccio tramite socket.
      Poi a fine giornata carico tutti i dati della giornata mandando un file via FTP e se tramite le socket si è perso qualcosa (perché magari si è persa la connessione) recupero i dati mancanti dal file mandato via FTP.
      Alternative all’FTP?

      23 ottobre 2018
    • Stefano said:

      C’è ancora un sacco di gente che usa FTP, in realtà, soprattutto per trasferimenti di file automatici o semi-automatici.
      Ci sono apparati (principalmente di origine industriale) che supportano solo quello, niente SSL o SSH.

      25 ottobre 2018
  2. kheimon said:

    Poi a fine giornata carico tutti i dati della giornata mandando un file via FTP

    OK, ho pensato si trattasse di un “serverino” su Internet, e che tu volessi gestire i file da remoto via FTP, il che avrebbe comportato problemi di sicurezza (tangibili, non immaginari), rotture di palle nel configurare il firewall per supportare PASV (cerca cos’è e ti metterai le mani nei capelli), danni ai file binari (e.g. eseguibili) che vengono inavvertitamente trasferiti in modalità ASCII, cosa che avviene sistematicamente con FileZilla.

    Leggendo il tuo caso d’uso, immagino che tutto avvenga su una rete locale, che tu abbia controllo esclusivo di entrambi i server e che nessuno dei server sia connesso a Internet, il che è già qualcosa. È davvero questo il caso?

    Alternative all’FTP?

    Soprattutto se già amministri il server via SSH, e quindi c’è OpenSSH Server già attivo e configurato, direi trasferimento file via SSH (SFTP o SCP) tutta la vita. Chiaramente con un utente dedicato. Ovviamente c’è la soluzione di mettere su un servizio (HTTPS), il che ha il vantaggio di disaccoppiare meglio il server e il client, ma richiede più lavoro.

    24 ottobre 2018
    Reply
    • mattia said:

      sì, in effetti adesso che mi ci fai pensare potrei anche trasferire il file via SCP. A dire il vero l’avevo fatto anche (a manina) quindi non c’è ragione per cui non possa farlo in automatico.

      OK, ho pensato si trattasse di un “serverino” su Internet

      ehm… no, i due serverini sono sull’internet, nel senso che tra di loro comunicano via internet, non su di una rete locale. Anche perché sono a 300 km di distanza.

      danni ai file binari (e.g. eseguibili) che vengono inavvertitamente trasferiti in modalità ASCII

      In realtà trasferisco solo file di testo con dentro dei valori numerici frutto di misure.
      Quando poi li leggo e li metto nel DB faccio un controllo per verificare che abbiano senso.

      Ovviamente c’è la soluzione di mettere su un servizio (HTTPS),

      Intendi dire che io richiedo ad esempio il file facendo una richiesta sulla porta 80 e questo me lo stampa?

      24 ottobre 2018
    • kheimon said:

      sì, in effetti adesso che mi ci fai pensare potrei anche trasferire il file via SCP. A dire il vero l’avevo fatto anche (a manina)

      Esatto, magari con un utente dedicato, e autenticazione key-based. L’utente che hai usato per trasferire file “a manina”, probabilmente, può fare molte altre cose vero?

      Se i server sono su Internet, vale quanto già detto, e a maggior ragione. 🙂 Se vuoi intraprendere la strada di mettere su un web service, perché hai curiosità o piacere nel farlo, è anche meglio per certi versi in quanto astrae molti dettagli implementativi e consente di modificare il funzionamento di client e server individualmente senza necessariamente modificare l’interfaccia tra i due. Però, nel caso, HTTPS e un minimo di autenticazione (è facile).

      24 ottobre 2018
  3. DG said:

    a meno che non ci sia un qualche ostacolo veramente epico, per ragioni di sicurezza sarebbe meglio usare scp o sftp. ssh (e quindi scp e, il più delle volte, sftp) sono attivi automaticamente su qualunque sistema operativo “tipo unix” moderno.

    24 ottobre 2018
    Reply
  4. Beppe Grullo said:

    Ma per la cronaca, che senso ha mandare un file a fine giornata?
    Non puoi salvare i record come timestamp+misura e mandarli in UDP o TCP (o quello che è), poi dall’altra parte chiedere ogni tanto di rimandarti solo i buchi che ti mancano?

    24 ottobre 2018
    Reply
    • mattia said:

      Ma per la cronaca, che senso ha mandare un file a fine giornata?
      Non puoi salvare i record come timestamp+misura e mandarli in UDP o TCP (o quello che è), poi dall’altra parte chiedere ogni tanto di rimandarti solo i buchi che ti mancano?

      Sì, i record ànno già il timestamp.
      Però, chiedere solo quelli che mi mancano richiederebbe un db sul server dove raccolgo le misure, per cui se gli chiedo la misura del “2018-10-24 00:21:02” faccio una richiesta e lui mi tira fuori solo quel valore.
      Ma ciò richiederebbe, appunto, un programma che continua a mettermi i valori nel db e che alla bisogna me li tira fuori: ò provato, e rallenta il sistema.
      Tieni presente che quella misura al secondo in realtà è la media di 206 misure al secondo che mi arrivano dal sensore; ò una linea rs485 che mi porta una marea di dati quindi devo concentrarmi a gestire quel processo senza perdere valori.
      Scrivere e leggere dal db introduce ogni tanto dei rallentamenti che mi mandano a ramengo il processo in cui raccolgo questa enorme mole di dati.
      La cosa migliore è da una parte salvare i dati in una memoria condivisa tra i vari processi in modo che un processo poi manda i valori via socket all’altro server, dall’altra salvare i dati in un banalissimo file di testo, la cui scrittura non rallenta niente.
      Poi ovviamente però devo inviare tutto il file di testo.
      Tieni presente che il sistema che acquisisce le misure deve essere il più leggero possibile per ricevere tutta la mole di dati, quindi non posso caricarlo con processi su processi.
      Preferisco tenere quello leggero, poi mandare un file al mio secondo server e questo ci pensa lui, con calma a fare tutto quello che deve fare senza toccare il sistema che acquisisce le misure.

      24 ottobre 2018
  5. Andrea Occhi said:

    Ho preso l’abitudine di testare i servizi dall’interno. Anche solo un telnet localhost 80 per un servizio di web service. Non funziona un cazzo, ma almeno capisci se è vivo.

    24 ottobre 2018
    Reply
  6. Beppe Grullo said:

    Ho capito, effettivamente ha senso.
    Io dovevo mandare i dati di un comparatore di posizione, avevo risolto così:
    I file del giorno (UTC) li salvavo come yyyymmdd.csv
    Ogni file ha 1440 righe
    Ogni riga ha 60 letture inframezzate da “;”
    Ogni riga è inviabile in un singolo frame UDP (usavo interi ma anche i float testuali dovrebbero starci)
    Al secondo 0 salvataggio della riga e invio del frame UDP con la riga + timestamp del primo record del minuto
    Al secondo 15, 30 e 45 rimando il primo frame della lista delle richieste dei minuti mancanti e lo cancello dalla lista
    La query del minuto mancante è immediata – basta aprire il file del giorno richiesto alla riga corrispondente al minuto richiesto
    Velocità e sicurezza sono intrinseche essendo l’UDP connectionless

    Poi comunque ci saranno sistemi più efficienti

    24 ottobre 2018
    Reply
  7. fgpx78 said:

    “niente, scolta, ci rinuncio” (cit.) 😀
    La fase della disperazione. Poi il lampo!
    Dannata tecnologia!

    25 ottobre 2018
    Reply

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Nota sui biscottini: questo sito usa solo i biscottini di base di Wordpress per il funzionamento del sito. Non usa biscottini per memorizzare vostri dati personali, anche perché non me ne frega niente. Pensate che non vengono nemmeno fatte le statistiche sugli accessi di questo sito. Non ci sono nemmeno i pulsanti per mettere apprezzamenti sul feisbuc, il tuitter o altre reti sociali. Ciao.