xref: /dflybsd-src/usr.sbin/ppp/README.nat (revision 86d7f5d305c6adaa56ff4582ece9859d73106103)
186d7f5d3SJohn MarinoCopyright (c) 2001 Charles Mott <cm@linktel.net>
286d7f5d3SJohn MarinoAll rights reserved.
386d7f5d3SJohn Marino
486d7f5d3SJohn MarinoRedistribution and use in source and binary forms, with or without
586d7f5d3SJohn Marinomodification, are permitted provided that the following conditions
686d7f5d3SJohn Marinoare met:
786d7f5d3SJohn Marino1. Redistributions of source code must retain the above copyright
886d7f5d3SJohn Marino   notice, this list of conditions and the following disclaimer.
986d7f5d3SJohn Marino2. Redistributions in binary form must reproduce the above copyright
1086d7f5d3SJohn Marino   notice, this list of conditions and the following disclaimer in the
1186d7f5d3SJohn Marino   documentation and/or other materials provided with the distribution.
1286d7f5d3SJohn Marino
1386d7f5d3SJohn MarinoTHIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
1486d7f5d3SJohn MarinoANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
1586d7f5d3SJohn MarinoIMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
1686d7f5d3SJohn MarinoARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
1786d7f5d3SJohn MarinoFOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
1886d7f5d3SJohn MarinoDAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
1986d7f5d3SJohn MarinoOR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
2086d7f5d3SJohn MarinoHOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
2186d7f5d3SJohn MarinoLIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
2286d7f5d3SJohn MarinoOUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
2386d7f5d3SJohn MarinoSUCH DAMAGE.
2486d7f5d3SJohn Marino
2586d7f5d3SJohn Marino$FreeBSD: src/usr.sbin/ppp/README.nat,v 1.4.4.4 2002/09/01 02:12:22 brian Exp $
2686d7f5d3SJohn Marino$DragonFly: src/usr.sbin/ppp/README.nat,v 1.2 2003/06/17 04:30:00 dillon Exp $
2786d7f5d3SJohn Marino
2886d7f5d3SJohn MarinoUser PPP NAT (Packet Aliasing)
2986d7f5d3SJohn Marino
3086d7f5d3SJohn Marino
3186d7f5d3SJohn Marino
3286d7f5d3SJohn Marino0. Contents
3386d7f5d3SJohn Marino    1. Background
3486d7f5d3SJohn Marino    2. Setup
3586d7f5d3SJohn Marino    3. New commands in ppp
3686d7f5d3SJohn Marino    4. Future Work
3786d7f5d3SJohn Marino    5. Authors / Acknowledgements
3886d7f5d3SJohn Marino    6. Revision History for Aliasing Code
3986d7f5d3SJohn Marino
4086d7f5d3SJohn Marino
4186d7f5d3SJohn Marino
4286d7f5d3SJohn Marino1. Background
4386d7f5d3SJohn Marino
4486d7f5d3SJohn MarinoUser mode ppp has embedded NAT (Network Address Translation) code.
4586d7f5d3SJohn MarinoEnabling this, either by the "-nat" command line option or the
4686d7f5d3SJohn Marino"nat enable yes" command in a ppp.conf file, makes the ppp host
4786d7f5d3SJohn Marinoautomatically NAT IP packets forwarded from a local network, making
4886d7f5d3SJohn Marinothem appear to come from the ppp host machine.  Incoming packets
4986d7f5d3SJohn Marinofrom the outside world are then appropriately de-NAT'd.
5086d7f5d3SJohn Marino
5186d7f5d3SJohn MarinoThe process of NAT'ing involves both the IP address and the TCP or UDP
5286d7f5d3SJohn Marinoport numbers. ICMP echo and timestamp packets are natted by their id
5386d7f5d3SJohn Marinonumbers.  ICMP error messages can be properly directed by examining the
5486d7f5d3SJohn Marinofragment of the offending packet which is contained in the body of the
5586d7f5d3SJohn Marinomessage.
5686d7f5d3SJohn Marino
5786d7f5d3SJohn MarinoThis software was specifically meant to support users who have
5886d7f5d3SJohn Marinounregistered, private address IP networks (e.g. 192.168.0.x or 10.0.0.x
5986d7f5d3SJohn Marinoaddresses).  The ppp host can act as a gateway for these networks, and
6086d7f5d3SJohn Marinocomputers on the local area net will have some degree of Internet access
6186d7f5d3SJohn Marinowithout the need for a registered IP address.  Additionally, there will
6286d7f5d3SJohn Marinobe no need for an Internet service provider to maintain routing tables
6386d7f5d3SJohn Marinofor the local area network.
6486d7f5d3SJohn Marino
6586d7f5d3SJohn MarinoA disadvantage of NAT is that machines on the local network,
6686d7f5d3SJohn Marinobehind the ppp host, are not visible from the outside world.  They can
6786d7f5d3SJohn Marinoestablish TCP connections and make UDP inquiries (such as domain name
6886d7f5d3SJohn Marinoservice requests) but the connections seem to come from the ppp host
6986d7f5d3SJohn Marinoitself.  There is, in effect, a partial firewall.  Of course, if this is
7086d7f5d3SJohn Marinowhat you want, the disadvantage becomes an advantage.
7186d7f5d3SJohn Marino
7286d7f5d3SJohn MarinoA second disadvantage is that "IP encoding" protocols, which send IP
7386d7f5d3SJohn Marinoaddress or port information within the data stream, are not supported
7486d7f5d3SJohn Marinofor the cases where exception code exists.  This implementation has
7586d7f5d3SJohn Marinoworkarounds for FTP and IRC DCC, the most well known of the IP encoding
7686d7f5d3SJohn Marinoprotocols.  This frees users from depending on using the ftp passive
7786d7f5d3SJohn Marinomode and avoiding IRC DCC sends, as is sometimes the case with other
7886d7f5d3SJohn Marinomasquerading solutions.
7986d7f5d3SJohn Marino
8086d7f5d3SJohn MarinoThe implementation supports all standard, non-encoding TCP and UDP protocols.
8186d7f5d3SJohn MarinoExamples of these protocols are http, gopher and telnet. The standard UDP
8286d7f5d3SJohn Marinomode of Real-Audio is not presently supported, but the TCP mode does work
8386d7f5d3SJohn Marinocorrectly.
8486d7f5d3SJohn Marino
8586d7f5d3SJohn MarinoThe NAT code also handles many ICMP messages.  In particular,
8686d7f5d3SJohn Marinoping and traceroute are supported.
8786d7f5d3SJohn Marino
8886d7f5d3SJohn Marino
8986d7f5d3SJohn Marino
9086d7f5d3SJohn Marino2. Packet Aliasing Setup
9186d7f5d3SJohn Marino
9286d7f5d3SJohn MarinoIt is recommended that users first verify correct ppp operation without
9386d7f5d3SJohn MarinoNAT enabled.  This will confirm that the ppp.conf file is
9486d7f5d3SJohn Marinoproperly set up and that there are no ppp problems. Then start ppp with
9586d7f5d3SJohn Marinothe "-nat" option on the command line.  The user should verify that
9686d7f5d3SJohn Marinothe ppp host can correctly connect to the Internet in NAT
9786d7f5d3SJohn Marinomode.  Finally, check that machines on the private network can access
9886d7f5d3SJohn Marinothe Internet.
9986d7f5d3SJohn Marino
10086d7f5d3SJohn MarinoThe NAT software handles all packets, whether they come from
10186d7f5d3SJohn Marinothe host or another computer on the local area network.  Thus, a correctly
10286d7f5d3SJohn Marinooperating ppp host indicates that the software should work properly for
10386d7f5d3SJohn Marinoother computers on the private network.
10486d7f5d3SJohn Marino
10586d7f5d3SJohn MarinoIf the ppp host can access the Internet, but other computers on the local
10686d7f5d3SJohn Marinonetwork cannot, check that IP forwarding is enabled on the ppp host. Also,
10786d7f5d3SJohn Marinoverify that the other computers use this machine as a gateway.  Of course,
10886d7f5d3SJohn Marinoyou should also verify that machines within the local area network
10986d7f5d3SJohn Marinocommunicate properly.  A common error is inconsistent subnet addresses
11086d7f5d3SJohn Marinoand masks.
11186d7f5d3SJohn Marino
11286d7f5d3SJohn Marino
11386d7f5d3SJohn Marino
11486d7f5d3SJohn Marino3. New commands in ppp
11586d7f5d3SJohn Marino
11686d7f5d3SJohn MarinoIn order to control NAT behaviour in a simple manner (no need for
11786d7f5d3SJohn Marinorecompilation), a new command has been added to ppp: nat.  This
11886d7f5d3SJohn Marinois in addition to the -nat command line option.  System managers and
11986d7f5d3SJohn Marinomore experienced users may prefer to use the ppp command syntax
12086d7f5d3SJohn Marinowithin the ppp.conf file.  The nat command also allows NAT
12186d7f5d3SJohn Marinobehaviour to be more precisely specified.
12286d7f5d3SJohn Marino
12386d7f5d3SJohn MarinoThe decision to add a command instead of extending 'set' or 'option' was
12486d7f5d3SJohn Marinoto make obvious that these options only work when NAT is enabled.
12586d7f5d3SJohn Marino
12686d7f5d3SJohn MarinoThe syntax for 'nat' is
12786d7f5d3SJohn Marino
12886d7f5d3SJohn Marino    ppp>  nat option [yes|no]
12986d7f5d3SJohn Marino
13086d7f5d3SJohn Marinowhere option is given by one of the following templates.
13186d7f5d3SJohn Marino
13286d7f5d3SJohn Marino
13386d7f5d3SJohn Marino - nat enable [yes|no]  (default no)
13486d7f5d3SJohn Marino
13586d7f5d3SJohn MarinoEnable NAT functionality.  If disabled, no other NAT
13686d7f5d3SJohn Marinooptions will have any effect.  You should usually enable NAT
13786d7f5d3SJohn Marinobefore routing any packets over the link; good points are in the
13886d7f5d3SJohn Marinoinitial script or right before adding a route.  If you do not always
13986d7f5d3SJohn Marinowant NAT, consider using the -nat option to ppp instead of this
14086d7f5d3SJohn Marinocommand.
14186d7f5d3SJohn Marino
14286d7f5d3SJohn Marino
14386d7f5d3SJohn Marino - nat deny_incoming [yes|no] (default yes)
14486d7f5d3SJohn Marino
14586d7f5d3SJohn MarinoSet to "yes" to disable all incoming connections.  This just drops
14686d7f5d3SJohn Marinoconnections to, for example, ftp, telnet or web servers.  The NAT
14786d7f5d3SJohn Marinomechanism prevents these connections. Technically, this option denies
14886d7f5d3SJohn Marinoall incoming TCP and UDP requests, making the NAT software a
14986d7f5d3SJohn Marinofairly efficient one-way firewall.  The default is no, which will allow
15086d7f5d3SJohn Marinoall incoming connections to telnetd, ftpd, etc.
15186d7f5d3SJohn Marino
15286d7f5d3SJohn Marino
15386d7f5d3SJohn Marino - nat log [yes|no]
15486d7f5d3SJohn Marino
15586d7f5d3SJohn MarinoControls logging of NAT link creation to "/var/log/alias.log" - this
15686d7f5d3SJohn Marinois usually only useful if debugging a setup, to see if the bug is in
15786d7f5d3SJohn Marinothe PPP NATing.  The debugging information is fairly limited, listing
15886d7f5d3SJohn Marinothe number of NAT links open for different protocols.
15986d7f5d3SJohn Marino
16086d7f5d3SJohn Marino
16186d7f5d3SJohn Marino - nat same_ports [yes|no] (default yes)
16286d7f5d3SJohn Marino
16386d7f5d3SJohn MarinoWhen a connection is being established going through the NAT
16486d7f5d3SJohn Marinoroutines, it will normally have its port number changed to allow the
16586d7f5d3SJohn MarinoNAT code to track it.  If same_ports is enabled, the NAT
16686d7f5d3SJohn Marinosoftware attempts to keep the connection's source port unchanged.
16786d7f5d3SJohn MarinoThis will allow rsh, RPC and other specialised protocols to work
16886d7f5d3SJohn Marino_most of the time_, at least on the host machine.  Please, do not
16986d7f5d3SJohn Marinoreport this being unstable as a bug - it is a result of the way
17086d7f5d3SJohn MarinoNAT has to work. TCP/IP was intended to have one IP address
17186d7f5d3SJohn Marinoper machine.
17286d7f5d3SJohn Marino
17386d7f5d3SJohn Marino
17486d7f5d3SJohn Marino - nat use_sockets [yes|no] (default yes)
17586d7f5d3SJohn Marino
17686d7f5d3SJohn MarinoThis is a fairly obscure option.  For the most part, the NAT
17786d7f5d3SJohn Marinosoftware does not have to allocate system sockets when it chooses a
17886d7f5d3SJohn MarinoNAT port number.  Under very specific circumstances, FTP data
17986d7f5d3SJohn Marinoconnections (which don't know the remote port number, though it is
18086d7f5d3SJohn Marinousually 20) and IRC DCC send (which doesn't know either the address or
18186d7f5d3SJohn Marinothe port from which the connection will come), there can potentially be
18286d7f5d3SJohn Marinosome interference with an open server socket having the same port number
18386d7f5d3SJohn Marinoon the ppp host machine.  This possibility for interference only exists
18486d7f5d3SJohn Marinountil the TCP connection has been acknowledged on both sides.  The safe
18586d7f5d3SJohn Marinooption is yes, though fewer system resources are consumed by specifying
18686d7f5d3SJohn Marinono.
18786d7f5d3SJohn Marino
18886d7f5d3SJohn Marino
18986d7f5d3SJohn Marino - nat unregistered_only [yes|no] (default no)
19086d7f5d3SJohn Marino
19186d7f5d3SJohn MarinoNAT normally remaps all packets coming from the local area
19286d7f5d3SJohn Marinonetwork to the ppp host machine address.  Set this option to only map
19386d7f5d3SJohn Marinoaddresses from the following standard ranges for private, unregistered
19486d7f5d3SJohn Marinoaddresses:
19586d7f5d3SJohn Marino
19686d7f5d3SJohn Marino                10.0.0.0     ->   10.255.255.255
19786d7f5d3SJohn Marino                172.16.0.0   ->   172.31.255.255
19886d7f5d3SJohn Marino                192.168.0.0  ->   192.168.255.255  */
19986d7f5d3SJohn Marino
20086d7f5d3SJohn MarinoIn the instance that there is a subnet of public addresses and another
20186d7f5d3SJohn Marinosubnet of private addresses being routed by the ppp host, then only the
20286d7f5d3SJohn Marinopackets on the private subnet will be NAT'd.
20386d7f5d3SJohn Marino
20486d7f5d3SJohn Marino
20586d7f5d3SJohn Marino- nat port <proto> <local addr>:<port>  <nat port>
20686d7f5d3SJohn Marino
20786d7f5d3SJohn MarinoThis command allows incoming traffic to <nat port> on the host
20886d7f5d3SJohn Marinomachine to be redirected to a specific machine and port on the
20986d7f5d3SJohn Marinolocal area network.  One example of this would be:
21086d7f5d3SJohn Marino
21186d7f5d3SJohn Marino    nat port tcp 192.168.0.4:telnet  8066
21286d7f5d3SJohn Marino
21386d7f5d3SJohn MarinoAll traffic to port 8066 of the ppp host would then be sent to
21486d7f5d3SJohn Marinothe telnet port (23) of machine 192.168.0.4.  Port numbers
21586d7f5d3SJohn Marinocan either be designated numerically or by symbolic names
21686d7f5d3SJohn Marinolisted in /etc/services.  Similarly, addresses can be either
21786d7f5d3SJohn Marinoin dotted quad notation or in /etc/hosts.
21886d7f5d3SJohn Marino
21986d7f5d3SJohn Marino
22086d7f5d3SJohn Marino- nat addr <local addr> <public addr>
22186d7f5d3SJohn Marino
22286d7f5d3SJohn MarinoThis command allows traffic for a public IP address to be
22386d7f5d3SJohn Marinoredirected to a machine on the local network.  This function
22486d7f5d3SJohn Marinois known as "static NAT".  An address assignment of 0 refers
22586d7f5d3SJohn Marinoto the default address of the ppp host.  Normally static
22686d7f5d3SJohn MarinoNAT is useful if your ISP has allocated a small block of
22786d7f5d3SJohn MarinoIP addresses to the user, but it can even be used in the
22886d7f5d3SJohn Marinocase of a single, dynamically allocated IP address:
22986d7f5d3SJohn Marino
23086d7f5d3SJohn Marino    nat addr 10.0.0.8 0
23186d7f5d3SJohn Marino
23286d7f5d3SJohn MarinoThe above command would redirect all incoming traffic to
23386d7f5d3SJohn Marinomachine 10.0.0.8.
23486d7f5d3SJohn Marino
23586d7f5d3SJohn MarinoIf several address NATs specify the same public address
23686d7f5d3SJohn Marinoas follows
23786d7f5d3SJohn Marino
23886d7f5d3SJohn Marino    nat addr 192.168.0.2  public_addr
23986d7f5d3SJohn Marino    nat addr 192.168.0.3  public_addr
24086d7f5d3SJohn Marino    nat addr 192.168.0.4  public_addr
24186d7f5d3SJohn Marino
24286d7f5d3SJohn Marinothen incoming traffic will be directed to the last
24386d7f5d3SJohn Marinotranslated local address (192.168.0.4), but outgoing
24486d7f5d3SJohn Marinotraffic to the first two addresses will still be NAT'd
24586d7f5d3SJohn Marinoto the specified public address.
24686d7f5d3SJohn Marino
24786d7f5d3SJohn Marino
24886d7f5d3SJohn Marino
24986d7f5d3SJohn Marino4. Future Work
25086d7f5d3SJohn Marino
25186d7f5d3SJohn MarinoWhat is called NAT here has been variously called masquerading, packet
25286d7f5d3SJohn Marinoaliasing and transparent proxying by others.  It is an extremely useful
25386d7f5d3SJohn Marinofunction to many users, but it is also necessarily imperfect.  The
25486d7f5d3SJohn Marinooccasional IP-encoding protocols always need workarounds (hacks).
25586d7f5d3SJohn MarinoUsers who are interested in supporting new IP-encoding protocols
25686d7f5d3SJohn Marinocan follow the examples of alias_ftp.c and alias_irc.c.
25786d7f5d3SJohn Marino
25886d7f5d3SJohn MarinoICMP error messages are currently handled only in the incoming direction.
25986d7f5d3SJohn MarinoA handler needs to be added to correctly NAT outgoing error messages.
26086d7f5d3SJohn Marino
26186d7f5d3SJohn MarinoIRC and FTP exception handling make reasonable, though not strictly correct
26286d7f5d3SJohn Marinoassumptions, about how IP encoded messages will appear in the control
26386d7f5d3SJohn Marinostream.  Programmers may wish to consider how to make this process more
26486d7f5d3SJohn Marinorobust.
26586d7f5d3SJohn Marino
26686d7f5d3SJohn MarinoThe NAT engine (alias.c, alias_db.c, alias_ftp.c, alias_irc.c
26786d7f5d3SJohn Marinoand alias_util.c) runs in user space, and is intended to be both portable
26886d7f5d3SJohn Marinoand reusable for interfaces other than ppp.  To access the basic engine
26986d7f5d3SJohn Marinoonly requires four simple function calls (initialisation, communication of
27086d7f5d3SJohn Marinohost address, outgoing NAT and incoming de-NATing).
27186d7f5d3SJohn Marino
27286d7f5d3SJohn Marino
27386d7f5d3SJohn Marino
27486d7f5d3SJohn Marino5. Authors / Acknowledgements
27586d7f5d3SJohn Marino
27686d7f5d3SJohn MarinoCharles Mott (cm@linktel.net)  <versions 1.0 - 1.8, 2.0, 2.1>
27786d7f5d3SJohn MarinoEivind Eklund (perhaps@yes.no) <versions 1.8b - 1.9, new ppp commands>
27886d7f5d3SJohn Marino
27986d7f5d3SJohn MarinoListed below, in chronological order, are individuals who have provided
28086d7f5d3SJohn Marinovaluable comments and/or debugging assistance.
28186d7f5d3SJohn Marino
28286d7f5d3SJohn Marino    Gary Roberts
28386d7f5d3SJohn Marino    Tom Torrance
28486d7f5d3SJohn Marino    Reto Burkhalter
28586d7f5d3SJohn Marino    Martin Renters
28686d7f5d3SJohn Marino    Brian Somers
28786d7f5d3SJohn Marino    Paul Traina
28886d7f5d3SJohn Marino    Ari Suutari
28986d7f5d3SJohn Marino    J. Fortes
29086d7f5d3SJohn Marino    Andrzej Bialeki
29186d7f5d3SJohn Marino
29286d7f5d3SJohn Marino
29386d7f5d3SJohn Marino
29486d7f5d3SJohn Marino6. Revision History for Aliasing Code
29586d7f5d3SJohn Marino
29686d7f5d3SJohn MarinoVersion 1.0: August 11, 1996 (cjm)
29786d7f5d3SJohn Marino
29886d7f5d3SJohn MarinoVersion 1.1:  August 20, 1996  (cjm)
29986d7f5d3SJohn Marino    PPP host accepts incoming connections for ports 0 to 1023.
30086d7f5d3SJohn Marino
30186d7f5d3SJohn MarinoVersion 1.2:  September 7, 1996 (cjm)
30286d7f5d3SJohn Marino    Fragment handling error in alias_db.c corrected.
30386d7f5d3SJohn Marino
30486d7f5d3SJohn MarinoVersion 1.3: September 15, 1996 (cjm)
30586d7f5d3SJohn Marino    - Generalised mechanism for handling incoming connections
30686d7f5d3SJohn Marino      (no more 0 to 1023 restriction).
30786d7f5d3SJohn Marino    - Increased ICMP support (will handle traceroute now).
30886d7f5d3SJohn Marino    - Improved TCP close connection logic.
30986d7f5d3SJohn Marino
31086d7f5d3SJohn MarinoVersion 1.4: September 16, 1996
31186d7f5d3SJohn Marino    Can't remember (this version only lasted a day -- cjm).
31286d7f5d3SJohn Marino
31386d7f5d3SJohn MarinoVersion 1.5: September 17, 1996 (cjm)
31486d7f5d3SJohn Marino    Corrected error in handling incoming UDP packets
31586d7f5d3SJohn Marino    with zero checksum.
31686d7f5d3SJohn Marino
31786d7f5d3SJohn MarinoVersion 1.6: September 18, 1996
31886d7f5d3SJohn Marino    Simplified ICMP data storage.  Will now handle
31986d7f5d3SJohn Marino    tracert from Win95 as well as FreeBSD traceroute.
32086d7f5d3SJohn Marino
32186d7f5d3SJohn MarinoVersion 1.7: January 9, 1997 (cjm)
32286d7f5d3SJohn Marino    - Reduced malloc() activity for ICMP echo and
32386d7f5d3SJohn Marino      timestamp requests.
32486d7f5d3SJohn Marino    - Added handling for out-of-order IP fragments.
32586d7f5d3SJohn Marino    - Switched to differential checksum computation
32686d7f5d3SJohn Marino      for IP headers (TCP, UDP and ICMP checksums
32786d7f5d3SJohn Marino      were already differential).
32886d7f5d3SJohn Marino    - Accepts FTP data connections from other than
32986d7f5d3SJohn Marino      port 20.  This allows one ftp connections
33086d7f5d3SJohn Marino      from two hosts which are both running packet
33186d7f5d3SJohn Marino      aliasing.
33286d7f5d3SJohn Marino
33386d7f5d3SJohn MarinoVersion 1.8: January 14, 1997 (cjm)
33486d7f5d3SJohn Marino    - Fixed data type error in function StartPoint()
33586d7f5d3SJohn Marino      in alias_db.c (this bug did not exist before v1.7)
33686d7f5d3SJohn Marino
33786d7f5d3SJohn MarinoVersion 1.8b: January 16, 1997 (Eivind Eklund <perhaps@yes.no>)
33886d7f5d3SJohn Marino    - Upgraded base PPP version to be the source code from
33986d7f5d3SJohn Marino      FreeBSD 2.1.6, with additional security patches.  This
34086d7f5d3SJohn Marino      version should still be possible to run on 2.1.5, though -
34186d7f5d3SJohn Marino      I've run it with a 2.1.5 kernel without problems.
34286d7f5d3SJohn Marino      (Update done with the permission of cjm)
34386d7f5d3SJohn Marino
34486d7f5d3SJohn MarinoVersion 1.9: February 1, 1997 (Eivind Eklund <perhaps@yes.no>)
34586d7f5d3SJohn Marino    - Added support for IRC DCC (ee)
34686d7f5d3SJohn Marino    - Changed the aliasing routines to use ANSI style throughout -
34786d7f5d3SJohn Marino      minor API changes for integration with other programs than PPP (ee)
34886d7f5d3SJohn Marino    - Changed the build process, making all options switchable
34986d7f5d3SJohn Marino      from the Makefile (ee)
35086d7f5d3SJohn Marino    - Fixed minor security hole in alias_ftp.c for other applications
35186d7f5d3SJohn Marino      of the aliasing software.  Hole could _not_ manifest in
35286d7f5d3SJohn Marino      PPP+pktAlias, but could potentially manifest in other
35386d7f5d3SJohn Marino      applications of the aliasing. (ee)
35486d7f5d3SJohn Marino    - Connections initiated from packet aliasing host machine will
35586d7f5d3SJohn Marino      not have their port number aliased unless it conflicts with
35686d7f5d3SJohn Marino      an aliasing port already being used. (There is an option to
35786d7f5d3SJohn Marino      disable this for debugging) (cjm)
35886d7f5d3SJohn Marino    - Sockets will be allocated in cases where there might be
35986d7f5d3SJohn Marino      port interference with the host machine.  This can be disabled
36086d7f5d3SJohn Marino      in cases where the ppp host will be acting purely as a
36186d7f5d3SJohn Marino      masquerading router and not generate any traffic of its own.
36286d7f5d3SJohn Marino      (cjm)
36386d7f5d3SJohn Marino
36486d7f5d3SJohn MarinoVersion 2.0: March, 1997 (cjm)
36586d7f5d3SJohn Marino    - Incoming packets which are not recognised by the packet
36686d7f5d3SJohn Marino      aliasing engine are now completely dropped in ip.c.
36786d7f5d3SJohn Marino    - Aliasing links are cleared when a host interface address
36886d7f5d3SJohn Marino      changes (due to re-dial and dynamic address allocation).
36986d7f5d3SJohn Marino    - PacketAliasPermanentLink() API added.
37086d7f5d3SJohn Marino    - Option for only aliasing private, unregistered IP addresses
37186d7f5d3SJohn Marino      added.
37286d7f5d3SJohn Marino    - Substantial rework to the aliasing lookup engine.
37386d7f5d3SJohn Marino
37486d7f5d3SJohn MarinoVersion 2.1: May, 1997 (cjm)
37586d7f5d3SJohn Marino    - Continuing rework to the aliasing lookup engine to support
37686d7f5d3SJohn Marino      multiple incoming addresses and static NAT.
37786d7f5d3SJohn Marino    - Now supports outgoing as well as incoming ICMP error messages/
37886d7f5d3SJohn Marino    - PPP commands to support address and port redirection.
37986d7f5d3SJohn Marino
380