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