yuezonghe | 824eb0c | 2024-06-27 02:32:26 -0700 | [diff] [blame] | 1 | This is a list of Frequently Asked Questions about using ppp-2.x and |
| 2 | their answers. |
| 3 | |
| 4 | |
| 5 | ------------------------------------------------------------------------ |
| 6 | |
| 7 | Q: Can you give me an example of how I might set up my machine to dial |
| 8 | out to an ISP? |
| 9 | |
| 10 | A: Here's an example for dialling out to an ISP via a modem on |
| 11 | /dev/tty02. The modem uses hardware (CTS/RTS) flow control, and the |
| 12 | serial port is run at 38400 baud. The ISP assigns our IP address. |
| 13 | |
| 14 | To configure pppd for this connection, create a file under |
| 15 | /etc/ppp/peers called (say) my-isp containing the following: |
| 16 | |
| 17 | tty02 crtscts 38400 |
| 18 | connect 'chat -v -f /etc/ppp/chat/my-isp' |
| 19 | defaultroute |
| 20 | |
| 21 | The ppp connection is then initiated using the following command: |
| 22 | |
| 23 | pppd call my-isp |
| 24 | |
| 25 | Of course, if the directory containing pppd is not in your path, you |
| 26 | will need to give the full pathname for pppd, for example, |
| 27 | /usr/sbin/pppd. |
| 28 | |
| 29 | When you run this, pppd will use the chat program to dial the ISP and |
| 30 | invoke its ppp service. Chat will read the file specified with -f, |
| 31 | namely /etc/ppp/chat/my-isp, to find a list of strings to expect to |
| 32 | receive, and strings to send. This file would contain something like |
| 33 | this: |
| 34 | |
| 35 | ABORT "NO CARRIER" |
| 36 | ABORT "NO DIALTONE" |
| 37 | ABORT "ERROR" |
| 38 | ABORT "NO ANSWER" |
| 39 | ABORT "BUSY" |
| 40 | ABORT "Username/Password Incorrect" |
| 41 | "" "at" |
| 42 | OK "at&d2&c1" |
| 43 | OK "atdt2479381" |
| 44 | "name:" "^Uusername" |
| 45 | "word:" "\qpassword" |
| 46 | "annex" "\q^Uppp" |
| 47 | "Switching to PPP-ppp-Switching to PPP" |
| 48 | |
| 49 | You will need to change the details here. The first string on each |
| 50 | line is a string to expect to receive; the second is the string to |
| 51 | send. You can add or delete lines according to the dialog required to |
| 52 | access your ISP's system. This example is for a modem with a standard |
| 53 | AT command set, dialling out to an Annex terminal server. The \q |
| 54 | toggles "quiet" mode; when quiet mode is on, the strings to be sent |
| 55 | are replaced by ?????? in the log. You may need to go through the |
| 56 | dialog manually using kermit or tip first to determine what should go |
| 57 | in the script. |
| 58 | |
| 59 | To terminate the link, run the following script, called (say) |
| 60 | kill-ppp: |
| 61 | |
| 62 | #!/bin/sh |
| 63 | unit=ppp${1-0} |
| 64 | piddir=/var/run |
| 65 | if [ -f $piddir/$unit.pid ]; then |
| 66 | kill -1 `cat $piddir/$unit.pid` |
| 67 | fi |
| 68 | |
| 69 | On some systems (SunOS, Solaris, Ultrix), you will need to change |
| 70 | /var/run to /etc/ppp. |
| 71 | |
| 72 | |
| 73 | ------------------------------------------------------------------------ |
| 74 | |
| 75 | Q: Can you give me an example of how I could set up my office machine |
| 76 | so I can dial in to it from home? |
| 77 | |
| 78 | A: Let's assume that the office machine is called "office" and is on a |
| 79 | local ethernet subnet. Call the home machine "home" and give it an IP |
| 80 | address on the same subnet as "office". We'll require both machines |
| 81 | to authenticate themselves to each other. |
| 82 | |
| 83 | Set up the files on "office" as follows: |
| 84 | |
| 85 | /etc/ppp/options contains: |
| 86 | |
| 87 | auth # require the peer to authenticate itself |
| 88 | lock |
| 89 | # other options can go here if desired |
| 90 | |
| 91 | /etc/ppp/chap-secrets contains: |
| 92 | |
| 93 | home office "beware the frub-jub" home |
| 94 | office home "bird, my son!%&*" - |
| 95 | |
| 96 | Set up a modem on a serial port so that users can dial in to the |
| 97 | modem and get a login prompt. |
| 98 | |
| 99 | On "home", set up the files as follows: |
| 100 | |
| 101 | /etc/ppp/options contains the same as on "office". |
| 102 | |
| 103 | /etc/ppp/chap-secrets contains: |
| 104 | |
| 105 | home office "beware the frub-jub" - |
| 106 | office home "bird, my son!%&*" office |
| 107 | |
| 108 | Create a file called /etc/ppp/peers/office containing the following: |
| 109 | |
| 110 | tty02 crtscts 38400 |
| 111 | connect 'chat -v -f /etc/ppp/chat/office' |
| 112 | defaultroute |
| 113 | |
| 114 | (You may need to change some of the details here.) |
| 115 | |
| 116 | Create the /etc/ppp/chat/office file containing the following: |
| 117 | |
| 118 | ABORT "NO CARRIER" |
| 119 | ABORT "NO DIALTONE" |
| 120 | ABORT "ERROR" |
| 121 | ABORT "NO ANSWER" |
| 122 | ABORT "BUSY" |
| 123 | ABORT "ogin incorrect" |
| 124 | "" "at" |
| 125 | OK "at&d2&c1" |
| 126 | OK "atdt2479381" |
| 127 | "name:" "^Uusername" |
| 128 | "word:" "\qpassword" |
| 129 | "$" "\q^U/usr/sbin/pppd proxyarp" |
| 130 | "~" |
| 131 | |
| 132 | You will need to change the details. Note that the "$" in the |
| 133 | second-last line is expecting the shell prompt after a successful |
| 134 | login - you may need to change it to "%" or something else. |
| 135 | |
| 136 | You then initiate the connection (from home) with the command: |
| 137 | |
| 138 | pppd call office |
| 139 | |
| 140 | ------------------------------------------------------------------------ |
| 141 | |
| 142 | Q: When I try to establish a connection, the modem successfully dials |
| 143 | the remote system, but then hangs up a few seconds later. How do I |
| 144 | find out what's going wrong? |
| 145 | |
| 146 | A: There are a number of possible problems here. The first thing to |
| 147 | do is to ensure that pppd's messages are visible. Pppd uses the |
| 148 | syslog facility to log messages which help to identify specific |
| 149 | problems. Messages from pppd have facility "daemon" and levels |
| 150 | ranging from "debug" to "error". |
| 151 | |
| 152 | Usually it is useful to see messages of level "notice" or higher on |
| 153 | the console. To see these, find the line in /etc/syslog.conf which |
| 154 | has /dev/console on the right-hand side, and add "daemon.notice" in |
| 155 | the list on the left. The line will end up looking something like |
| 156 | this: |
| 157 | |
| 158 | *.err;kern.debug;auth.notice;mail.crit;daemon.notice /dev/console |
| 159 | |
| 160 | Note that the whitespace is tabs, *not* spaces. |
| 161 | |
| 162 | If you are having problems, it may be useful to see messages of level |
| 163 | "info" as well, in which case you would change "daemon.notice" to |
| 164 | "daemon.info". |
| 165 | |
| 166 | In addition, it is useful to collect pppd's debugging output in a |
| 167 | file - the debug option to pppd causes it to log the contents of all |
| 168 | control packets sent and received in human-readable form. To do this, |
| 169 | add a line like this to /etc/syslog.conf: |
| 170 | |
| 171 | daemon,local2.debug /etc/ppp/log |
| 172 | |
| 173 | and create an empty /etc/ppp/log file. |
| 174 | |
| 175 | When you change syslog.conf, you will need to send a HUP signal to |
| 176 | syslogd to causes it to re-read syslog.conf. You can do this with a |
| 177 | command like this (as root): |
| 178 | |
| 179 | kill -HUP `cat /etc/syslogd.pid` |
| 180 | |
| 181 | (On some systems, you need to use /var/run/syslog.pid instead of |
| 182 | /etc/syslogd.pid.) |
| 183 | |
| 184 | After setting up syslog like this, you can use the -v flag to chat and |
| 185 | the `debug' option to pppd to get more information. Try initiating |
| 186 | the connection again; when it fails, inspect /etc/ppp/log to see what |
| 187 | happened and where the connection failed. |
| 188 | |
| 189 | |
| 190 | ------------------------------------------------------------------------ |
| 191 | |
| 192 | Q: When I try to establish a connection, I get an error message saying |
| 193 | "Serial link is not 8-bit clean". Why? |
| 194 | |
| 195 | A: The most common cause is that your connection script hasn't |
| 196 | successfully dialled out to the remote system and invoked ppp service |
| 197 | there. Instead, pppd is talking to something (a shell or login |
| 198 | process on the remote machine, or maybe just the modem) which is only |
| 199 | outputting 7-bit characters. |
| 200 | |
| 201 | This can also arise with a modem which uses an AT command set if the |
| 202 | dial command is issued before pppd is invoked, rather than within a |
| 203 | connect script started by pppd. If the serial port is set to 7 |
| 204 | bits/character plus parity when the last AT command is issued, the |
| 205 | modem serial port will be set to the same setting. |
| 206 | |
| 207 | Note that pppd *always* sets the local serial port to 8 bits per |
| 208 | character, with no parity and 1 stop bit. So you shouldn't need to |
| 209 | issue an stty command before invoking pppd. |
| 210 | |
| 211 | |
| 212 | ------------------------------------------------------------------------ |
| 213 | |
| 214 | Q: When I try to establish a connection, I get an error message saying |
| 215 | "Serial line is looped back". Why? |
| 216 | |
| 217 | A: Probably your connection script hasn't successfully dialled out to |
| 218 | the remote system and invoked ppp service there. Instead, pppd is |
| 219 | talking to something which is just echoing back the characters it |
| 220 | receives. The -v option to chat can help you find out what's going |
| 221 | on. It can be useful to include "~" as the last expect string to |
| 222 | chat, so chat won't return until it's seen the start of the first PPP |
| 223 | frame from the remote system. |
| 224 | |
| 225 | Another possibility is that your phone connection has dropped for some |
| 226 | obscure reason and the modem is echoing the characters it receives |
| 227 | from your system. |
| 228 | |
| 229 | |
| 230 | ------------------------------------------------------------------------ |
| 231 | |
| 232 | Q: I installed pppd successfully, but when I try to run it, I get a |
| 233 | message saying something like "peer authentication required but no |
| 234 | authentication files accessible". |
| 235 | |
| 236 | A: When pppd is used on a machine which already has a connection to |
| 237 | the Internet (or to be more precise, one which has a default route in |
| 238 | its routing table), it will require all peers to authenticate |
| 239 | themselves. The reason for this is that if you don't require |
| 240 | authentication, you have a security hole, because the peer can |
| 241 | basically choose any IP address it wants, even the IP address of some |
| 242 | trusted host (for example, a host mentioned in some .rhosts file). |
| 243 | |
| 244 | On machines which don't have a default route, pppd does not require |
| 245 | the peer to authenticate itself. The reason is that such machines |
| 246 | would mostly be using pppd to dial out to an ISP which will refuse to |
| 247 | authenticate itself. In that case the peer can use any IP address as |
| 248 | long as the system does not already have a route to that address. |
| 249 | For example, if you have a local ethernet network, the peer can't use |
| 250 | an address on that network. (In fact it could if it authenticated |
| 251 | itself and it was permitted to use that address by the pap-secrets or |
| 252 | chap-secrets file.) |
| 253 | |
| 254 | There are 3 ways around the problem: |
| 255 | |
| 256 | 1. If possible, arrange for the peer to authenticate itself, and |
| 257 | create the necessary secrets files (/etc/ppp/pap-secrets and/or |
| 258 | /etc/ppp/chap-secrets). |
| 259 | |
| 260 | 2. If the peer refuses to authenticate itself, and will always be |
| 261 | using the same IP address, or one of a small set of IP addresses, you |
| 262 | can create an entry in the /etc/ppp/pap-secrets file like this: |
| 263 | |
| 264 | "" * "" his-ip.his-domain his-other-ip.other-domain |
| 265 | |
| 266 | (that is, using the empty string for the client name and password |
| 267 | fields). Of couse, you replace the 4th and following fields in the |
| 268 | example above with the IP address(es) that the peer may use. You can |
| 269 | use either hostnames or numeric IP addresses. |
| 270 | |
| 271 | 3. You can add the `noauth' option to the /etc/ppp/options file. |
| 272 | Pppd will then not ask the peer to authenticate itself. If you do |
| 273 | this, I *strongly* recommend that you remove the set-uid bit from the |
| 274 | permissions on the pppd executable, with a command like this: |
| 275 | |
| 276 | chmod u-s /usr/sbin/pppd |
| 277 | |
| 278 | Then, an intruder could only use pppd maliciously if they had already |
| 279 | become root, in which case they couldn't do any more damage using pppd |
| 280 | than they could anyway. |
| 281 | |
| 282 | |
| 283 | ------------------------------------------------------------------------ |
| 284 | |
| 285 | Q: What do I need to put in the secrets files? |
| 286 | |
| 287 | A: Three things: |
| 288 | - secrets (i.e. passwords) to use for authenticating this host to |
| 289 | other hosts (i.e., for proving our identity to others); |
| 290 | - secrets which other hosts can use for authenticating themselves |
| 291 | to us (i.e., so that they can prove their identity to us); and |
| 292 | - information about which IP addresses other hosts may use, once |
| 293 | they have authenticated themselves. |
| 294 | |
| 295 | There are two authentication files: /etc/ppp/pap-secrets, which |
| 296 | contains secrets for use with PAP (the Password Authentication |
| 297 | Protocol), and /etc/ppp/chap-secrets, which contains secrets for use |
| 298 | with CHAP (the Challenge Handshake Authentication Protocol). Both |
| 299 | files have the same simple format, which is as follows: |
| 300 | |
| 301 | - The file contains a series of entries, each of which contains a |
| 302 | secret for authenticating one machine to another. |
| 303 | |
| 304 | - Each entry is contained on a single logical line. A logical line |
| 305 | may be continued across several lines by placing a backslash (\) at |
| 306 | the end of each line except the last. |
| 307 | |
| 308 | - Each entry has 3 or more fields, separated by whitespace (spaces |
| 309 | and/or tabs). These fields are, in order: |
| 310 | * The name of the machine that is authenticating itself |
| 311 | (the "client"). |
| 312 | * The name of the machine that is authenticating the client |
| 313 | (the "server"). |
| 314 | * The secret to be used for authenticating that client to that |
| 315 | server. If this field begins with the at-sign `@', the rest |
| 316 | of the field is taken as the name of a file containing the |
| 317 | actual secret. |
| 318 | * The 4th and any following fields list the IP address(es) |
| 319 | that the client may use. |
| 320 | |
| 321 | - The file may contain comments, which begin with a `#' and continue |
| 322 | to the end of the line. |
| 323 | |
| 324 | - Double quotes `"' should be used around a field if it contains |
| 325 | characters with special significance, such as space, tab, `#', etc. |
| 326 | |
| 327 | - The backslash `\' may be used before characters with special |
| 328 | significance (space, tab, `#', `\', etc.) to remove that significance. |
| 329 | |
| 330 | Some important points to note: |
| 331 | |
| 332 | * A machine can be *both* a "client" and a "server" for the purposes |
| 333 | of authentication - this happens when both peers require the other to |
| 334 | authenticate itself. So A would authenticate itself to B, and B would |
| 335 | also authenticate itself to A (possibly using a different |
| 336 | authentication protocol). |
| 337 | |
| 338 | * If both the "client" and the "server" are running ppp-2.x, they need |
| 339 | to have a similar entry in the appropriate secrets file; the first two |
| 340 | fields are *not* swapped on the client, compared to the server. So |
| 341 | the client might have an entry like this: |
| 342 | |
| 343 | ay bee "our little secret" - |
| 344 | |
| 345 | and the corresponding entry on the server could look like this: |
| 346 | |
| 347 | ay bee "our little secret" 123.45.67.89 |
| 348 | |
| 349 | |
| 350 | ------------------------------------------------------------------------ |
| 351 | |
| 352 | Q: Explain about PAP and CHAP? |
| 353 | |
| 354 | PAP stands for the Password Authentication Protocol. With this |
| 355 | protocol, the "client" (the machine that needs to authenticate itself) |
| 356 | sends its name and a password, in clear text, to the "server". The |
| 357 | server returns a message indicating whether the name and password are |
| 358 | valid. |
| 359 | |
| 360 | CHAP stands for the Challenge Handshake Authentication Protocol. It |
| 361 | is designed to address some of the deficiencies and vulnerabilities of |
| 362 | PAP. Like PAP, it is based on the client and server having a shared |
| 363 | secret, but the secret is never passed in clear text over the link. |
| 364 | Instead, the server sends a "challenge" - an arbitrary string of |
| 365 | bytes, and the client must prove it knows the shared secret by |
| 366 | generating a hash value from the challenge combined with the shared |
| 367 | secret, and sending the hash value back to the server. The server |
| 368 | also generates the hash value and compares it with the value received |
| 369 | from the client. |
| 370 | |
| 371 | At a practical level, CHAP can be slightly easier to configure than |
| 372 | PAP because the server sends its name with the challenge. Thus, when |
| 373 | finding the appropriate secret in the secrets file, the client knows |
| 374 | the server's name. In contrast, with PAP, the client has to find its |
| 375 | password (i.e. the shared secret) before it has received anything from |
| 376 | the server. Thus, it may be necessary to use the `remotename' option |
| 377 | to pppd when using PAP authentication so that it can select the |
| 378 | appropriate secret from /etc/ppp/pap-secrets. |
| 379 | |
| 380 | Microsoft also has a variant of CHAP which uses a different hashing |
| 381 | arrangement from normal CHAP. There is a client-side (authenticatee) |
| 382 | implementation of Microsoft's CHAP in ppp-2.3; see README.MSCHAP80. |
| 383 | In ppp-2.4.2, server-side (authenticator) support was added as well as |
| 384 | support for Microsoft CHAP v2; see README.MSCHAP81. |
| 385 | |
| 386 | |
| 387 | ------------------------------------------------------------------------ |
| 388 | |
| 389 | Q: When the modem hangs up, without the remote system having |
| 390 | terminated the connection properly, pppd does not notice the hangup, |
| 391 | but just keeps running. How do I get pppd to notice the hangup and |
| 392 | exit? |
| 393 | |
| 394 | A: Pppd detects modem hangup by looking for an end-of-file indication |
| 395 | from the serial driver, which should be generated when the CD (carrier |
| 396 | detect) signal on the serial port is deasserted. For this to work: |
| 397 | |
| 398 | - The modem has to be set to assert CD when the connection is made and |
| 399 | deassert it when the phone line hangs up. Usually the AT&C1 modem |
| 400 | command sets this mode. |
| 401 | |
| 402 | - The cable from the modem to the serial port must connect the CD |
| 403 | signal (on pin 8). |
| 404 | |
| 405 | - Some serial drivers have a "software carrier detect" mode, which |
| 406 | must be *disabled*. The method of doing this varies between systems. |
| 407 | Under SunOS, use the ttysoftcar command. Under NetBSD, edit /etc/ttys |
| 408 | to remove the "softcar" flag from the line for the serial port, and |
| 409 | run ttyflags. |
| 410 | |
| 411 | |
| 412 | ------------------------------------------------------------------------ |
| 413 | |
| 414 | Q: Why should I use PPP compression (BSD-Compress or Deflate) when my |
| 415 | modem already does V.42 compression? Won't it slow the CPU down a |
| 416 | lot? |
| 417 | |
| 418 | A: Using PPP compression is preferable, especially when using modems |
| 419 | over phone lines, for the following reasons: |
| 420 | |
| 421 | - The V.42 compression in the modem isn't very strong - it's an LZW |
| 422 | technique (same as BSD-Compress) with a 10, 11 or 12 bit code size. |
| 423 | With BSD-Compress you can use a code size of up to 15 bits and get |
| 424 | much better compression, or you can use Deflate and get even better |
| 425 | compression ratios. |
| 426 | |
| 427 | - I have found that enabling V.42 compression in my 14.4k modem |
| 428 | increases the round-trip time for a character to be sent, echoed and |
| 429 | returned by around 40ms, from 160ms to 200ms (with error correction |
| 430 | enabled). This is enough to make it feel less responsive on rlogin or |
| 431 | telnet sessions. Using PPP compression adds less than 5ms (small |
| 432 | enough that I couldn't measure it reliably). I admit my modem is a |
| 433 | cheapie and other modems may well perform better. |
| 434 | |
| 435 | - While compression and decompression do require some CPU time, they |
| 436 | reduce the amount of time spent in the serial driver to transmit a |
| 437 | given amount of data. Many machines require an interrupt for each |
| 438 | character sent or received, and the interrupt handler can take a |
| 439 | significant amount of CPU time. So the increase in CPU load isn't as |
| 440 | great as you might think. My measurements indicate that a system with |
| 441 | a 33MHz 486 CPU should be able to do Deflate compression for serial |
| 442 | link speeds of up to 100kb/s or more. It depends somewhat on the type |
| 443 | of data, of course; for example, when compressing a string of nulls |
| 444 | with Deflate, it's hard to get a high output data rate from the |
| 445 | compressor, simply because it compresses strings of nulls so well that |
| 446 | it has to eat a very large amount of input data to get each byte of |
| 447 | output. |
| 448 | |
| 449 | |
| 450 | ------------------------------------------------------------------------ |
| 451 | |
| 452 | Q: I get messages saying "Unsupported protocol (...) received". What do |
| 453 | these mean? |
| 454 | |
| 455 | A: If you only get one or two when pppd starts negotiating with the |
| 456 | peer, they mean that the peer wanted to negotiate some PPP protocol |
| 457 | that pppd doesn't understand. This doesn't represent a problem, it |
| 458 | simply means that there is some functionality that the peer supports |
| 459 | that pppd doesn't, so that functionality can't be used. |
| 460 | |
| 461 | If you get them sporadically while the link is operating, or if the |
| 462 | protocol numbers (in parentheses) don't correspond to any valid PPP |
| 463 | protocol that the peer might be using, then the problem is probably |
| 464 | that characters are getting corrupted on the receive side, or that |
| 465 | extra characters are being inserted into the receive stream somehow. |
| 466 | If this is happening, most packets that get corrupted should get |
| 467 | discarded by the FCS (Frame Check Sequence, a 16-bit CRC) check, but a |
| 468 | small number may get through. |
| 469 | |
| 470 | One possibility may be that you are receiving broadcast messages on |
| 471 | the remote system which are being sent over your serial link. Another |
| 472 | possibility is that your modem is set for XON/XOFF (software) flow |
| 473 | control and is inserting ^Q and ^S characters into the receive data |
| 474 | stream. |
| 475 | |
| 476 | |
| 477 | ------------------------------------------------------------------------ |
| 478 | |
| 479 | Q: I get messages saying "Protocol-Reject for unsupported protocol ...". |
| 480 | What do these mean? |
| 481 | |
| 482 | A: This is the other side of the previous question. If characters are |
| 483 | getting corrupted on the way to the peer, or if your system is |
| 484 | inserting extra bogus characters into the transmit data stream, the |
| 485 | peer may send protocol-reject messages to you, resulting in the above |
| 486 | message (since your pppd doesn't recognize the protocol number |
| 487 | either.) |
| 488 | |
| 489 | |
| 490 | ------------------------------------------------------------------------ |
| 491 | |
| 492 | Q: I get a message saying something like "ioctl(TIOCSETD): Operation |
| 493 | not permitted". How do I fix this? |
| 494 | |
| 495 | A: This is because pppd is not running as root. If you have not |
| 496 | installed pppd setuid-root, you will have to be root to run it. If |
| 497 | you have installed pppd setuid-root and you still get this message, it |
| 498 | is probably because your shell is using some other copy of pppd than |
| 499 | the installed one - for example, if you are in the pppd directory |
| 500 | where you've just built pppd and your $PATH has . before /usr/sbin (or |
| 501 | wherever pppd gets installed). |
| 502 | |
| 503 | |
| 504 | ------------------------------------------------------------------------ |
| 505 | |
| 506 | Q: Has your package been ported to HP/UX or IRIX or AIX? |
| 507 | |
| 508 | A: No. I don't have access to systems running HP/UX or AIX. No-one |
| 509 | has volunteered to port it to HP/UX. I had someone who did a port for |
| 510 | AIX 4.x, but who is no longer able to maintain it. And apparently AIX |
| 511 | 3.x is quite different, so it would need a separate port. |
| 512 | |
| 513 | IRIX includes a good PPP implementation in the standard distribution, |
| 514 | as far as I know. |
| 515 | |
| 516 | |
| 517 | ------------------------------------------------------------------------ |
| 518 | |
| 519 | Q: Under SunOS 4, when I try to modload the ppp modules, I get the |
| 520 | message "can't open /dev/vd: No such device". |
| 521 | |
| 522 | A: First check in /dev that there is an entry like this: |
| 523 | |
| 524 | crw-r--r-- 1 root 57, 0 Oct 2 1991 vd |
| 525 | |
| 526 | If not, make one (mknod /dev/vd c 57 0). If the problem still exists, |
| 527 | probably your kernel has been configured without the vd driver |
| 528 | included. The vd driver is needed for loadable module support. |
| 529 | |
| 530 | First, identify the config file that was used. When you boot your |
| 531 | machine, or if you run /etc/dmesg, you'll see a line that looks |
| 532 | something like this: |
| 533 | |
| 534 | SunOS Release 4.1.3_U1 (CAP_XBOX) #7: Thu Mar 21 15:31:56 EST 1996 |
| 535 | ^^^^^^^^ |
| 536 | this is the config file name |
| 537 | |
| 538 | The config file will be in the /sys/`arch -k`/conf directory (arch -k |
| 539 | should return sun4m for a SparcStation 10, sun3x for a Sun 3/80, |
| 540 | etc.). Look in there for a line saying "options VDDRV". If that line |
| 541 | isn't present (or is commented out), add it (or uncomment it). |
| 542 | |
| 543 | You then need to rebuild the kernel as described in the SunOS |
| 544 | manuals. Basically you need to run config and make like this: |
| 545 | |
| 546 | /usr/etc/config CAP_XBOX |
| 547 | cd ../CAP_XBOX |
| 548 | make |
| 549 | |
| 550 | (replacing the string CAP_XBOX by the name of the config file for your |
| 551 | kernel, of course). |
| 552 | |
| 553 | Then copy the new kernel to /: |
| 554 | |
| 555 | mv /vmunix /vmunix.working |
| 556 | cp vmunix / |
| 557 | |
| 558 | and reboot. Modload should then work. |
| 559 | |
| 560 | |
| 561 | ------------------------------------------------------------------------ |
| 562 | |
| 563 | Q: I'm running Linux (or NetBSD or FreeBSD), and my system comes with |
| 564 | PPP already. Should I consider installing this package? Why? |
| 565 | |
| 566 | A: The PPP that is already installed in your system is (or is derived |
| 567 | from) some version of this PPP package. You can find out what version |
| 568 | of this package is already installed with the command "pppd --help". |
| 569 | If this is older than the latest version, you may wish to install the |
| 570 | latest version so that you can take advantage of the new features or |
| 571 | bug fixes. |
| 572 | |
| 573 | |
| 574 | ------------------------------------------------------------------------ |
| 575 | |
| 576 | Q: I'm running pppd in demand mode, and I find that pppd often dials |
| 577 | out unnecessarily when I try to make a connection within my local |
| 578 | machine or with a machine on my local LAN. What can I do about this? |
| 579 | |
| 580 | A: Very often the cause of this is that a program is trying to contact |
| 581 | a nameserver to resolve a hostname, and the nameserver (specified in |
| 582 | /etc/resolv.conf, usually) is on the far side of the ppp link. You |
| 583 | can try executing a command such as `ping myhost' (where myhost is the |
| 584 | name of the local machine, or some other machine on a local LAN), to |
| 585 | see whether that starts the ppp link. If it does, check the setup of |
| 586 | your /etc/hosts file to make sure you have the local machine and any |
| 587 | hosts on your local LAN listed, and /etc/resolv.conf and/or |
| 588 | /etc/nsswitch.conf files to make sure you resolve hostnames from |
| 589 | /etc/hosts if possible before trying to contact a nameserver. |
| 590 | |
| 591 | |
| 592 | ------------------------------------------------------------------------ |
| 593 | |
| 594 | Q: Since I installed ppp-2.3.6, dialin users to my server have been |
| 595 | getting this message when they run pppd: |
| 596 | |
| 597 | peer authentication required but no suitable secret(s) found for |
| 598 | authenticating any peer to us (ispserver) |
| 599 | |
| 600 | A: In 2.3.6, the default is to let an unauthenticated peer only use IP |
| 601 | addresses to which the machine doesn't already have a route. So on a |
| 602 | machine with a default route, everyone has to authenticate. If you |
| 603 | really don't want that, you can put `noauth' in the /etc/ppp/options |
| 604 | file. Note that there is then no check on who is using which IP |
| 605 | address. IMHO, this is undesirably insecure, but I guess it may be |
| 606 | tolerable as long as you don't use any .rhosts files or anything like |
| 607 | that. I recommend that you require dialin users to authenticate, even |
| 608 | if just with PAP using their login password (using the `login' option |
| 609 | to pppd). If you do use `noauth', you should at least have a pppusers |
| 610 | group and set the permissions on pppd to allow only user and group to |
| 611 | execute it. |
| 612 | |
| 613 | ------------------------------------------------------------------------ |
| 614 | |
| 615 | Q: When running pppd as a dial-in server, I often get the message |
| 616 | "LCP: timeout sending Config-Requests" from pppd. It seems to be |
| 617 | random, but dial-out always works fine. What is wrong? |
| 618 | |
| 619 | A: Most modern modems auto-detects the speed of the serial line |
| 620 | between the modem and the computer. This auto-detection occurs when |
| 621 | the computer sends characters to the modem, when the modem is in |
| 622 | command mode. It does not occur when the modem is in data mode. |
| 623 | Thus, if you send commands to the modem at 2400 bps, and then change |
| 624 | the serial port speed to 115200 bps, the modem will not detect this |
| 625 | change until something is transmitted from the computer to the modem. |
| 626 | When running pppd in dial-in mode (i.e. without a connect script), |
| 627 | pppd sets the speed of the serial port, but does not transmit |
| 628 | anything. If the modem was already running at the specified speed, |
| 629 | everything is fine, but if not, you will just receive garbage from the |
| 630 | modem. To cure this, use an init script such as the following: |
| 631 | |
| 632 | pppd ttyS0 115200 modem crtscts init "chat '' AT OK" |
| 633 | |
| 634 | To reset the modem and enable auto-answer, use: |
| 635 | |
| 636 | pppd ttyS0 115200 modem crtscts init "chat '' ATZ OK ATS0=1 OK" |