lh | 9ed821d | 2023-04-07 01:36:19 -0700 | [diff] [blame] | 1 | This is the README file for ppp-2.4, a package which implements the |
| 2 | Point-to-Point Protocol (PPP) to provide Internet connections over |
| 3 | serial lines. |
| 4 | |
| 5 | |
| 6 | Introduction. |
| 7 | ************* |
| 8 | |
| 9 | The Point-to-Point Protocol (PPP) provides a standard way to establish |
| 10 | a network connection over a serial link. At present, this package |
| 11 | supports IP and IPV6 and the protocols layered above them, such as TCP |
| 12 | and UDP. The Linux port of this package also has support for IPX. |
| 13 | |
| 14 | This PPP implementation consists of two parts: |
| 15 | |
| 16 | - Kernel code, which establishes a network interface and passes |
| 17 | packets between the serial port, the kernel networking code and the |
| 18 | PPP daemon (pppd). This code is implemented using STREAMS modules on |
| 19 | Solaris, and as a line discipline under Linux. |
| 20 | |
| 21 | - The PPP daemon (pppd), which negotiates with the peer to establish |
| 22 | the link and sets up the ppp network interface. Pppd includes support |
| 23 | for authentication, so you can control which other systems may make a |
| 24 | PPP connection and what IP addresses they may use. |
| 25 | |
| 26 | The platforms supported by this package are Linux and Solaris. I have |
| 27 | code for NeXTStep, FreeBSD, SunOS 4.x, SVR4, Tru64 (Digital Unix), AIX |
| 28 | and Ultrix but no active maintainers for these platforms. Code for |
| 29 | all of these except AIX is included in the ppp-2.3.11 release. |
| 30 | |
| 31 | The kernel code for Linux is no longer distributed with this package, |
| 32 | since the relevant kernel code is in the official Linux kernel source |
| 33 | (and has been for many years) and is included in all reasonably modern |
| 34 | Linux distributions. The Linux kernel code supports using PPP over |
| 35 | things other than serial ports, such as PPP over Ethernet and PPP over |
| 36 | ATM. |
| 37 | |
| 38 | |
| 39 | Installation. |
| 40 | ************* |
| 41 | |
| 42 | The file SETUP contains general information about setting up your |
| 43 | system for using PPP. There is also a README file for each supported |
| 44 | system, which contains more specific details for installing PPP on |
| 45 | that system. The supported systems, and the corresponding README |
| 46 | files, are: |
| 47 | |
| 48 | Linux README.linux |
| 49 | Solaris README.sol2 |
| 50 | |
| 51 | In each case you start by running the ./configure script. This works |
| 52 | out which operating system you are using and creates the appropriate |
| 53 | makefiles. You then run `make' to compile the user-level code, and |
| 54 | (as root) `make install' to install the user-level programs pppd, chat |
| 55 | and pppstats. |
| 56 | |
| 57 | N.B. Since 2.3.0, leaving the permitted IP addresses column of the |
| 58 | pap-secrets or chap-secrets file empty means that no addresses are |
| 59 | permitted. You need to put a "*" in that column to allow the peer to |
| 60 | use any IP address. (This only applies where the peer is |
| 61 | authenticating itself to you, of course.) |
| 62 | |
| 63 | |
| 64 | What's new in ppp-2.4.5. |
| 65 | ************************ |
| 66 | |
| 67 | * Under Linux, pppd can now operate in a mode where it doesn't request |
| 68 | the peer's IP address, as some peers refuse to supply an IP address. |
| 69 | Since Linux supports device routes as well as gateway routes, it's |
| 70 | possible to have no remote IP address assigned to the ppp interface |
| 71 | and still route traffic over it. |
| 72 | |
| 73 | * Pppd now works better with 3G modems that do strange things such as |
| 74 | sending IPCP Configure-Naks with the same values over and over again. |
| 75 | |
| 76 | * The PPP over L2TP plugin is included, which works with the pppol2tp |
| 77 | PPP channel code in the Linux kernel. This allows pppd to be used |
| 78 | to set up tunnels using the Layer 2 Tunneling Protocol. |
| 79 | |
| 80 | * A new 'enable-session' option has been added, which enables session |
| 81 | accounting via PAM or wtwp/wtmpx, as appropriate. See the pppd man |
| 82 | page for details. |
| 83 | |
| 84 | * Several bugs have been fixed. |
| 85 | |
| 86 | |
| 87 | What was new in ppp-2.4.4. |
| 88 | ************************** |
| 89 | |
| 90 | * Pppd will now run /etc/ppp/ip-pre-up, if it exists, after creating |
| 91 | the ppp interface and configuring its IP addresses but before |
| 92 | bringing it up. This can be used, for example, for adding firewall |
| 93 | rules for the interface. |
| 94 | |
| 95 | * Lots of bugs fixed, particularly in the area of demand-dialled and |
| 96 | persistent connections. |
| 97 | |
| 98 | * The rp-pppoe plugin now accepts any interface name (that isn't an |
| 99 | existing pppd option name) without putting "nic-" on the front of |
| 100 | it, not just eth*, nas*, tap* and br*. |
| 101 | |
| 102 | |
| 103 | What was new in ppp-2.4.3. |
| 104 | ************************** |
| 105 | |
| 106 | * The configure script now accepts --prefix and --sysconfdir options. |
| 107 | These default to /usr/local and /etc. If you want pppd put in |
| 108 | /usr/sbin as before, use ./configure --prefix=/usr. |
| 109 | |
| 110 | * Doing `make install' no longer puts example configuration files in |
| 111 | /etc/ppp. Use `make install-etcppp' if you want that. |
| 112 | |
| 113 | * The code has been updated to work with version 0.8.3 of libpcap. |
| 114 | Unfortunately the libpcap maintainers removed support for the |
| 115 | "inbound" and "outbound" keywords on PPP links, meaning that if you |
| 116 | link pppd with libpcap-0.8.3, you can't use those keywords in the |
| 117 | active-filter and pass-filter expressions. The support has been |
| 118 | reinstated in the CVS version and should be in future libpcap |
| 119 | releases. If you need the in/outbound keywords, use a later release |
| 120 | than 0.8.3, or get the CVS version from http://www.tcpdump.org. |
| 121 | |
| 122 | * There is a new option, child-timeout, which sets the length of time |
| 123 | that pppd will wait for child processes (such as the command |
| 124 | specified with the pty option) to exit before exiting itself. It |
| 125 | defaults to 5 seconds. After the timeout, pppd will send a SIGTERM |
| 126 | to any remaining child processes and exit. A value of 0 means no |
| 127 | timeout. |
| 128 | |
| 129 | * Various bugs have been fixed, including some CBCP packet parsing |
| 130 | bugs that could lead to the peer being able to crash pppd if CBCP |
| 131 | support is enabled. |
| 132 | |
| 133 | * Various fixes and enhancements to the radius and rp-pppoe plugins |
| 134 | have been added. |
| 135 | |
| 136 | * There is a new winbind plugin, from Andrew Bartlet of the Samba |
| 137 | team, which provides the ability to authenticate the peer against an |
| 138 | NT domain controller using MS-CHAP or MS-CHAPV2. |
| 139 | |
| 140 | * There is a new pppoatm plugin, by various authors, sent in by David |
| 141 | Woodhouse. |
| 142 | |
| 143 | * The multilink code has been substantially reworked. The first pppd |
| 144 | for a bundle still controls the ppp interface, but it doesn't exit |
| 145 | until all the links in the bundle have terminated. If the first |
| 146 | pppd is signalled to exit, it signals all the other pppds |
| 147 | controlling links in the bundle. |
| 148 | |
| 149 | * The TDB code has been updated to the latest version. This should |
| 150 | eliminate the problem that some people have seen where the database |
| 151 | file (/var/run/pppd.tdb) keeps on growing. Unfortunately, however, |
| 152 | the new code uses an incompatible database format. For this reason, |
| 153 | pppd now uses /var/run/pppd2.tdb as the database filename. |
| 154 | |
| 155 | |
| 156 | What was new in ppp-2.4.2. |
| 157 | ************************** |
| 158 | |
| 159 | * The CHAP code has been rewritten. Pppd now has support for MS-CHAP |
| 160 | V1 and V2 authentication, both as server and client. The new CHAP |
| 161 | code is cleaner than the old code and avoids some copyright problems |
| 162 | that existed in the old code. |
| 163 | |
| 164 | * MPPE (Microsoft Point-to-Point Encryption) support has been added, |
| 165 | although the current implementation shouldn't be considered |
| 166 | completely secure. (There is no assurance that the current code |
| 167 | won't ever transmit an unencrypted packet.) |
| 168 | |
| 169 | * James Carlson's implementation of the Extensible Authentication |
| 170 | Protocol (EAP) has been added. |
| 171 | |
| 172 | * Support for the Encryption Control Protocol (ECP) has been added. |
| 173 | |
| 174 | * Some new plug-ins have been included: |
| 175 | - A plug-in for kernel-mode PPPoE (PPP over Ethernet) |
| 176 | - A plug-in for supplying the PAP password over a pipe from another |
| 177 | process |
| 178 | - A plug-in for authenticating using a Radius server. |
| 179 | |
| 180 | * Updates and bug-fixes for the Solaris port. |
| 181 | |
| 182 | * The CBCP (Call Back Control Protocol) code has been updated. There |
| 183 | are new options `remotenumber' and `allow-number'. |
| 184 | |
| 185 | * Extra hooks for plugins to use have been added. |
| 186 | |
| 187 | * There is now a `maxoctets' option, which causes pppd to terminate |
| 188 | the link once the number of bytes passed on the link exceeds a given |
| 189 | value. |
| 190 | |
| 191 | * There are now options to control whether pppd can use the IPCP |
| 192 | IP-Address and IP-Addresses options: `ipcp-no-address' and |
| 193 | `ipcp-no-addresses'. |
| 194 | |
| 195 | * Fixed several bugs, including potential buffer overflows in chat. |
| 196 | |
| 197 | |
| 198 | What was new in ppp-2.4.1. |
| 199 | ************************** |
| 200 | |
| 201 | * Pppd can now print out the set of options that are in effect. The |
| 202 | new `dump' option causes pppd to print out the option values after |
| 203 | option parsing is complete. The `dryrun' option causes pppd to |
| 204 | print the options and then exit. |
| 205 | |
| 206 | * The option parsing code has been fixed so that options in the |
| 207 | per-tty options file are parsed correctly, and don't override values |
| 208 | from the command line in most cases. |
| 209 | |
| 210 | * The plugin option now looks in /usr/lib/pppd/<pppd-version> (for |
| 211 | example, /usr/lib/pppd/2.4.1b1) for shared objects for plugins if |
| 212 | there is no slash in the plugin name. |
| 213 | |
| 214 | * When loading a plugin, pppd will now check the version of pppd for |
| 215 | which the plugin was compiled, and refuse to load it if it is |
| 216 | different to pppd's version string. To enable this, the plugin |
| 217 | source needs to #include "pppd.h" and have a line saying: |
| 218 | char pppd_version[] = VERSION; |
| 219 | |
| 220 | * There is a bug in zlib, discovered by James Carlson, which can cause |
| 221 | kernel memory corruption if Deflate is used with the lowest setting, |
| 222 | 8. As a workaround pppd will now insist on using at least 9. |
| 223 | |
| 224 | * Pppd should compile on Solaris and SunOS again. |
| 225 | |
| 226 | * Pppd should now set the MTU correctly on demand-dialled interfaces. |
| 227 | |
| 228 | |
| 229 | What was new in ppp-2.4.0. |
| 230 | ************************** |
| 231 | |
| 232 | * Multilink: this package now allows you to combine multiple serial |
| 233 | links into one logical link or `bundle', for increased bandwidth and |
| 234 | reduced latency. This is currently only supported under the |
| 235 | 2.4.x and later Linux kernels. |
| 236 | |
| 237 | * All the pppd processes running on a system now write information |
| 238 | into a common database. I used the `tdb' code from samba for this. |
| 239 | |
| 240 | * New hooks have been added. |
| 241 | |
| 242 | For a list of the changes made during the 2.3 series releases of this |
| 243 | package, see the Changes-2.3 file. |
| 244 | |
| 245 | |
| 246 | Compression methods. |
| 247 | ******************** |
| 248 | |
| 249 | This package supports two packet compression methods: Deflate and |
| 250 | BSD-Compress. Other compression methods which are in common use |
| 251 | include Predictor, LZS, and MPPC. These methods are not supported for |
| 252 | two reasons - they are patent-encumbered, and they cause some packets |
| 253 | to expand slightly, which pppd doesn't currently allow for. |
| 254 | BSD-Compress and Deflate (which uses the same algorithm as gzip) don't |
| 255 | ever expand packets. |
| 256 | |
| 257 | |
| 258 | Contacts. |
| 259 | ********* |
| 260 | |
| 261 | The comp.protocols.ppp newsgroup is a useful place to get help if you |
| 262 | have trouble getting your ppp connections to work. Please do not send |
| 263 | me questions of the form "please help me get connected to my ISP" - |
| 264 | I'm sorry, but I simply do not have the time to answer all the |
| 265 | questions like this that I get. |
| 266 | |
| 267 | If you find bugs in this package, please report them to the maintainer |
| 268 | for the port for the operating system you are using: |
| 269 | |
| 270 | Linux Paul Mackerras <paulus@samba.org> |
| 271 | Solaris James Carlson <carlson@workingcode.com> |
| 272 | |
| 273 | |
| 274 | Copyrights: |
| 275 | *********** |
| 276 | |
| 277 | All of the code can be freely used and redistributed. The individual |
| 278 | source files each have their own copyright and permission notice. |
| 279 | Pppd, pppstats and pppdump are under BSD-style notices. Some of the |
| 280 | pppd plugins are GPL'd. Chat is public domain. |
| 281 | |
| 282 | |
| 283 | Distribution: |
| 284 | ************* |
| 285 | |
| 286 | The primary site for releases of this software is: |
| 287 | |
| 288 | ftp://ftp.samba.org/pub/ppp/ |
| 289 | |
| 290 | |