Linus Torvalds | 1da177e | 2005-04-16 15:20:36 -0700 | [diff] [blame] | 1 | simple isdn4linux PPP FAQ .. to be continued .. not 'debugged' |
| 2 | ------------------------------------------------------------------- |
| 3 | |
| 4 | Q01: what's pppd, ipppd, syncPPP, asyncPPP ?? |
| 5 | Q02: error message "this system lacks PPP support" |
| 6 | Q03: strange information using 'ifconfig' |
| 7 | Q04: MPPP?? What's that and how can I use it ... |
| 8 | Q05: I tried MPPP but it doesn't work |
| 9 | Q06: can I use asynchronous PPP encapsulation with network devices |
| 10 | Q07: A SunISDN machine can't connect to my i4l system |
| 11 | Q08: I wanna talk to several machines, which need different configs |
| 12 | Q09: Starting the ipppd, I get only error messages from i4l |
| 13 | Q10: I wanna use dynamic IP address assignment |
| 14 | Q11: I can't connect. How can I check where the problem is. |
| 15 | Q12: How can I reduce login delay? |
| 16 | |
| 17 | ------------------------------------------------------------------- |
| 18 | |
| 19 | Q01: pppd, ipppd, syncPPP, asyncPPP .. what is that ? |
| 20 | what should I use? |
| 21 | A: The pppd is for asynchronous PPP .. asynchronous means |
| 22 | here, the framing is character based. (e.g when |
| 23 | using ttyI* or tty* devices) |
| 24 | |
| 25 | The ipppd handles PPP packets coming in HDLC |
| 26 | frames (bit based protocol) ... The PPP driver |
| 27 | in isdn4linux pushes all IP packets direct |
| 28 | to the network layer and all PPP protocol |
| 29 | frames to the /dev/ippp* device. |
| 30 | So, the ipppd is a simple external network |
| 31 | protocol handler. |
| 32 | |
| 33 | If you login into a remote machine using the |
| 34 | /dev/ttyI* devices and then enable PPP on the |
| 35 | remote terminal server -> use the 'old' pppd |
| 36 | |
| 37 | If your remote side immediately starts to send |
| 38 | frames ... you probably connect to a |
| 39 | syncPPP machine .. use the network device part |
| 40 | of isdn4linux with the 'syncppp' encapsulation |
| 41 | and make sure, that the ipppd is running and |
| 42 | connected to at least one /dev/ippp*. Check the |
| 43 | isdn4linux manual on how to configure a network device. |
| 44 | |
| 45 | -- |
| 46 | |
| 47 | Q02: when I start the ipppd .. I only get the |
| 48 | error message "this system lacks PPP support" |
| 49 | A: check that at least the device 'ippp0' exists. |
| 50 | (you can check this e.g with the program 'ifconfig') |
| 51 | The ipppd NEEDS this device under THIS name .. |
| 52 | If this device doesn't exists, use: |
| 53 | isdnctrl addif ippp0 |
| 54 | isdnctrl encap ippp0 syncppp |
| 55 | ... (see isdn4linux doc for more) ... |
| 56 | A: Maybe you have compiled the ipppd with another |
| 57 | kernel source tree than the kernel you currently |
| 58 | run ... |
| 59 | |
| 60 | -- |
| 61 | |
| 62 | Q03: when I list the netdevices with ifconfig I see, that |
| 63 | my ISDN interface has a HWaddr and IRQ=0 and Base |
| 64 | address = 0 |
| 65 | A: The device is a fake ethernet device .. ignore IRQ and baseaddr |
| 66 | You need the HWaddr only for ethernet encapsulation. |
| 67 | |
| 68 | -- |
| 69 | |
| 70 | Q04: MPPP?? What's that and how can I use it ... |
| 71 | |
| 72 | A: MPPP or MP or MPP (Warning: MP is also an |
| 73 | acronym for 'Multi Processor') stands for |
| 74 | Multi Point to Point and means bundling |
| 75 | of several channels to one logical stream. |
| 76 | To enable MPPP negotiation you must call the |
| 77 | ipppd with the '+mp' option. |
| 78 | You must also configure a slave device for |
| 79 | every additional channel. (see the i4l manual |
| 80 | for more) |
| 81 | To use channel bundling you must first activate |
| 82 | the 'master' or initial call. Now you can add |
| 83 | the slave channels with the command: |
| 84 | isdnctrl addlink <device> |
| 85 | e.g: |
| 86 | isdnctrl addlink ippp0 |
| 87 | This is different from other encapsulations of |
| 88 | isdn4linux! With syncPPP, there is no automatic |
| 89 | activation of slave devices. |
| 90 | |
| 91 | -- |
| 92 | |
| 93 | Q05: I tried MPPP but it doesn't work .. the ipppd |
| 94 | writes in the debug log something like: |
| 95 | .. rcvd [0][proto=0x3d] c0 00 00 00 80 fd 01 01 00 0a ... |
| 96 | .. sent [0][LCP ProtRej id=0x2 00 3d c0 00 00 00 80 fd 01 ... |
| 97 | |
| 98 | A: you forgot to compile MPPP/RFC1717 support into the |
| 99 | ISDN Subsystem. Recompile with this option enabled. |
| 100 | |
| 101 | -- |
| 102 | |
| 103 | Q06: can I use asynchronous PPP encapsulation |
| 104 | over the network interface of isdn4linux .. |
| 105 | |
| 106 | A: No .. that's not possible .. Use the standard |
| 107 | PPP package over the /dev/ttyI* devices. You |
| 108 | must not use the ipppd for this. |
| 109 | |
| 110 | -- |
| 111 | |
| 112 | Q07: A SunISDN machine tries to connect my i4l system, |
| 113 | which doesn't work. |
| 114 | Checking the debug log I just saw garbage like: |
| 115 | !![ ... fill in the line ... ]!! |
| 116 | |
| 117 | A: The Sun tries to talk asynchronous PPP ... i4l |
| 118 | can't understand this ... try to use the ttyI* |
| 119 | devices with the standard PPP/pppd package |
| 120 | |
| 121 | A: (from Alexanter Strauss: ) |
| 122 | !![ ... fill in mail ]!! |
| 123 | |
| 124 | -- |
| 125 | |
| 126 | Q08: I wanna talk to remote machines, which need |
| 127 | a different configuration. The only way |
| 128 | I found to do this is to kill the ipppd and |
| 129 | start a new one with another config to connect |
| 130 | to the second machine. |
| 131 | |
| 132 | A: you must bind a network interface explicitly to |
| 133 | an ippp device, where you can connect a (for this |
| 134 | interface) individually configured ipppd. |
| 135 | |
| 136 | -- |
| 137 | |
| 138 | Q09: When I start the ipppd I only get error messages |
| 139 | from the i4l driver .. |
| 140 | |
| 141 | A: When starting, the ipppd calls functions which may |
| 142 | trigger a network packet. (e.g gethostbyname()). |
| 143 | Without the ipppd (at this moment, it is not |
| 144 | fully started) we can't handle this network request. |
| 145 | Try to configure hostnames necessary for the ipppd |
| 146 | in your local /etc/hosts file or in a way, that |
| 147 | your system can resolve it without using an |
| 148 | isdn/ippp network-interface. |
| 149 | |
| 150 | -- |
| 151 | |
| 152 | Q10: I wanna use dynamic IP address assignment ... How |
| 153 | must I configure the network device. |
| 154 | |
| 155 | A: At least you must have a route which forwards |
| 156 | a packet to the ippp network-interface to trigger |
| 157 | the dial-on-demand. |
| 158 | A default route to the ippp-interface will work. |
| 159 | Now you must choose a dummy IP address for your |
| 160 | interface. |
| 161 | If for some reason you can't set the default |
| 162 | route to the ippp interface, you may take any |
| 163 | address of the subnet from which you expect your |
| 164 | dynamic IP number and set a 'network route' for |
| 165 | this subnet to the ippp interface. |
| 166 | To allow overriding of the dummy address you |
| 167 | must call the ipppd with the 'ipcp-accept-local' option. |
| 168 | |
| 169 | A: You must know, how the ipppd gets the addresses it wanna |
| 170 | configure. If you don't give any option, the ipppd |
| 171 | tries to negotiate the local host address! |
| 172 | With the option 'noipdefault' it requests an address |
| 173 | from the remote machine. With 'useifip' it gets the |
| 174 | addresses from the net interface. Or you set the address |
| 175 | on the option line with the <a.b.c.d:e.f.g.h> option. |
| 176 | Note: the IP address of the remote machine must be configured |
| 177 | locally or the remote machine must send it in an IPCP request. |
| 178 | If your side doesn't know the IP address after negotiation, it |
| 179 | closes the connection! |
| 180 | You must allow overriding of address with the 'ipcp-accept-*' |
| 181 | options, if you have set your own or the remote address |
| 182 | explicitly. |
| 183 | |
| 184 | A: Maybe you try these options .. e.g: |
| 185 | |
| 186 | /sbin/ipppd :$REMOTE noipdefault /dev/ippp0 |
| 187 | |
| 188 | where REMOTE must be the address of the remote machine (the |
| 189 | machine, which gives you your address) |
| 190 | |
| 191 | -- |
| 192 | |
| 193 | Q11: I can't connect. How can I check where the problem is. |
| 194 | |
| 195 | A: A good help log is the debug output from the ipppd... |
| 196 | Check whether you can find there: |
| 197 | - only a few LCP-conf-req SENT messages (less then 10) |
| 198 | and then a Term-REQ: |
| 199 | -> check whether your ISDN card is well configured |
| 200 | it seems, that your machine doesn't dial |
| 201 | (IRQ,IO,Proto, etc problems) |
| 202 | Configure your ISDN card to print debug messages and |
| 203 | check the /dev/isdnctrl output next time. There |
| 204 | you can see, whether there is activity on the card/line. |
| 205 | - there are at least a few RECV messages in the log: |
| 206 | -> fine: your card is dialing and your remote machine |
| 207 | tries to talk with you. Maybe only a missing |
| 208 | authentication. Check your ipppd configuration again. |
| 209 | - the ipppd exits for some reason: |
| 210 | -> not good ... check /var/adm/syslog and /var/adm/daemon. |
| 211 | Could be a bug in the ipppd. |
| 212 | |
| 213 | -- |
| 214 | |
| 215 | Q12: How can I reduce login delay? |
| 216 | |
| 217 | A: Log a login session ('debug' log) and check which options |
| 218 | your remote side rejects. Next time configure your ipppd |
| 219 | to not negotiate these options. Another 'side effect' is, that |
| 220 | this increases redundancy. (e.g your remote side is buggy and |
| 221 | rejects options in a wrong way). |
| 222 | |
| 223 | |
| 224 | |