Running Linux, 5th Edition - Matthias Kalle Dalheimer [255]
% ls -l /dev/modem
lrwxrwxrwx 1 root root 10 May 4 12:41 /dev/modem -> /dev/ttyS0
If this link is incorrect for your system (say, because you know that your modem is not on /dev/ttyS0 but on /dev/ttyS2), you can easily fix it as root by entering:
# ln -sf /dev/ttyS2 /dev/modem
Setting up PPP
Several steps are involved in PPP configuration, and you may want to check first whether your distribution provides some kind of wizard for setting up PPP for you—many do. On the other hand, you won't learn as much as you do when setting things up by hand. The first thing you need to do if you want to roll your own is to write a so-called chat script, which performs the handshaking necessary to set up a PPP connection between your machine and the ISP. During this handshaking phase, various pieces of information might be exchanged, such as your ISP username and password. The second step is to write a script that fires up the pppd daemon; running this script causes the modem to dial the ISP and start up PPP. The final step is to configure your system's /etc/resolv.conf file so that it knows where to find a domain nameserver. We'll go through each step in turn.
Before you start, you need to know the following pieces of information:
The ISP dial-in account phone number
Your ISP username and password
The IP address of the ISP's domain nameserver
Your ISP should have told you this information when you established the account.
In addition, you might need to know the following:
The IP address of the ISP's server
The IP address of your system (if not dynamically assigned by the ISP)
The subnet mask you should use
These last three items can usually be determined automatically during the PPP connection setup; however, occasionally this negotiation does not work properly. It can't hurt to have this information in case you need it.
Writing a chat script
chat is a program that can perform simple handshaking between a PPP client and server during connection setup, such as exchanging usernames and passwords. chat is also responsible for causing your modem to dial the ISP's phone number and other simple tasks.
chat is automatically invoked by pppd when started (this is discussed later). All you need to do is write a simple shell script that invokes chat to handle the negotiation. A simple chat script is shown in the following example. Edit the file /etc/ppp/my-chat-script (as root) and place in it the following lines:
#!/bin/sh
# my-chat-script: a program for dialing up your ISP
exec chat -v \
'' ATZ \
OK ATDT555-1212 \
CONNECT '' \
ogin: mdw \
assword: my-password
Specifying ogin and assword without the initial letters allows the prompts to be either Login or login, and Password or password.
Be sure that the file my-chat-script is executable; the command chmod 755 /etc/ppp/my-chat-script will accomplish this.
Note that each line ending in a backslash should not have any characters after the backslash; the backslash forces line-wrapping in the shell script.
The third line of this script runs chat with the options on the following lines. Each line contains two whitespace-delimited fields: an "expect" string and a "send" string. The idea is that the chat script will respond with the send string when it receives the expect string from the modem connection. For example, the last line of the script informs chat to respond with my-password when the prompt assword is given by the ISP's server.
The first line of the handshaking script instructs chat to send ATZ to the modem, which should cause the modem to reset itself. (Specifying an expect string as '' means that nothing is expected before ATZ is sent.) The second line waits for the modem to respond with OK, after which the number is dialed using the string ATDT555-1212. (If you use pulse dialing rather than tone dialing, change this to ATDP555-1212. The phone number, of course, should be that of the remote system's modem line.)
When the modem responds with CONNECT, a newline is sent (indicated