Shamelessly ripped from NZLUG:
Brief info on common dial-up errors and how to solve them.
Solution/Info
"After the chat script finishes, the local box starts up the pppd daemon. The pppd daemon immediately fires off 30 handshaking requests (LCP config requests) to the remote end. Then pppd waits for a reply from the remote end...
Quite a few remote ISP servers (well most actually) have a time lag between user authentication, and starting up their ppp daemon. So, the local machine fires off 30 requests, but no ppp is yet listening on the remote machine - the packets get 'dropped'. When ppp starts on theremote server, it waits for incoming LCP config requests, while the local machine is still waiting for a reply from its 'dropped' packets.Stalemate! In the end one (or both) machines timeout (Timeout LCP config request).
There are two solutions:
(pppd starts)
The (tilde) is usually the first character of the incoming garbage that occurs when ppp starts on the remote machine. By waiting for it to be received, we know ppp has started on the remote machine.
-- Andrew Simpson
This will check every minute to see if pppd is still running. If it's not, it will restart it (replace /usr/bin/pon paradise with whatever you need to do to restablish your connection)
(Thanks to JamesSpooner for the most elegant solution)
3 pages link to DialUpNotes: