Linux PPP HOWTO | ||
---|---|---|
Indietro | Capitolo 8. Risoluzione dei problemi | Avanti |
Ci sono anche qui delle varianti - come serial line looped back ecc., e le cause possono essere diverse.
Per capire cosa sta succedendo è necessario comprendere un po' di quello che succede dietro le quinte durante l'esecuzione di pppd.
Quando pppd viene avviato, invia pacchetti LCP (Link Control Protocol - Protocollo di Controllo del Collegamento) alla macchina remota. Se riceve una risposta valida allora passa allo stadio successivo (usando pacchetti IPCP - IP Control Protocol Packets - Pacchetti di Protocollo di Controllo IP) e solo quando questa negoziazione è completa viene avviato lo strato IP in modo che si possa usare la connessione PPP.
Se non c'è un server ppp funzionante all'estremità remota quando il proprio PC invia pacchetti lcp, questi vengono riflessi dal processo di login dell'estremità remota della connessione. Poiché questi pacchetti usano 8 bit, la loro riflessione causa la soppressione dell'ottavo bit (si ricorda che l' ASCII è un codice a 7 bit). Il PPP vede questo e si comporta di conseguenza.
Ci sono diverse ragioni per cui può avvenire questa riflessione.
Quando il proprio script di conversazione termina, pppd viene avviato nel proprio PC. Comunque, se non si è completato il processo di login nel server (incluso l'invio di un qualsiasi comando necessario per avviare il PPP nel server), PPP non verrà avviato.
Quindi, i pacchetti lcp sono riflessi e si riceve questo errore.
Si deve controllare attentamente e correggere (se necessario) il proprio script di conversazione (si veda più indietro).
Alcuni server PPP richiedono l'inserimento di un comando e/o di un RETURN dopo il completamento del processo di login prima di avviare il ppp dal loro lato della connessione.
Si controlli il proprio script di conversazione (si veda più indietro).
Se si fa il login manualmente e si scopre che è necessario inviare un RETURN per avviare il PPP, si aggiunga semplicemente una coppia di stringhe attesa/inviata vuote alla fine del proprio script di conversazione (una stringa vuota in realtà invia un RETURN).
Questa è un po' una furbata!
Di default, il proprio pppd è compilato per inviare un massimo di 10 richieste di configurazione lcp. Se il server è un po' lento a partire, tutte le 10 richieste possono essere spedite prima che il server sia pronto a riceverle.
Nella propria macchina, pppd si vede tutte le 10 richieste tornargli indietro (senza l'ottavo bit) ed esce.
Ci sono due modi per aggirare questo problema:-
Aggiungere "lcp-max-configure 30" alle proprie opzioni del ppp. Questo incrementa il numero massimo di pacchetti di configurazione lcp che pppd invia prima di uscire. Per server veramente lenti, può essere necessario incrementare tale numero.
In alternativa, si può essere un po' furbi. Si dovrebbe aver notato che quando si fa il login a mano nel server PPP e il PPP viene avviato, il primo carattere ad apparire tra la spazzatura prodotta dal server ppp è sempre il carattere tilde (˜).
Usando questa conoscenza a priori, si può aggiungere una nuova coppia di stringhe attesa/inviata alla fine dello script di conversazione che aspetta una tilde e non invia niente. Dovrebbe assomigliare a:-
\~ '' |
Nota: poiché il carattere tilde ha un significato particolare nella shell, ne deve essere fatto l'escape (e quindi metterci prima un backslash).