| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873 | PoPToP HOWTO/FAQ----------------Last Updated: 20021024Send changes to: Richard de Vroede <r.devroede@linvision.com>HOWTO/FAQ mostly compiled from PoPToP help pages and the PoPToP Mailing List(hosted by Christopher Schulte) by Matthew Ramsay. Large contributions fromSteve Rhodes and Michael Walter.Contents--------1.0 Introduction	1.1 About PoPToP	1.2 Credits2.0 System Requirements3.0 PPP with MSCHAPv2/MPPE Installation4.0 PoPToP Installation5.0 Windows Client Setup6.0 FAQ1.0 Introduction----------------1.1 About PoPToPPoPToP is the PPTP Server solution for Linux. PoPToP allows Linux servers tofunction seamlessly in the PPTP VPN environment. This enables administratorsto leverage the considerable benefits of both Microsoft and Linux. Thecurrent pre-release version supports Windows 95/98/NT/2000 PPTP clients andPPTP Linux clients. PoPToP is free GNU software.PoPToP Home Page: http://www.moretonbay.com/vpn/pptp.html1.2 CreditsPoPToP was originally started by Matthew Ramsay under the control ofMoreton Bay Ventures (http://www.moretonbay.com). Around March 1999 PoPToPwas publically released under the GNU GPL by Moreton Bay/Lineo.PoPToP is what it is today due to the help of a number of intelligent andexperienced hackers. More specifically Kevin Thayer, David Luyer andPeter Galbavy.More contributors to PoPToP (in various forms) include Allan Clark, SethVidal, Harald Vogt and Ron O'Hara.And finally, credit to all the PoPToP followers who test and reportproblems.1.3 PopToP migrating from poptop.lineo.comMarch 18, 2002The main PoPToP developers left Lineo with the SnapGear spin-out. The ball is being picked up by Daniel Djamludin. PoPToP has been actively developed within SnapGear and a number of improvements need to be rolled out.Henceforth from this sentence onwards you should refer to "PoPToP" as "Poptop" for ease of use and typing.Lineo have been asked to forward poptop.lineo.com to poptop.sourceforge.netThe sources are being gathered to go into CVS, new binaries and dev images will follow.Source Forge looks like the best neutral ground to smooth out future upheavals.2.0 System Requirements-----------------------1. A modern Linux distribution (such as Debian, Red Hat, etc.) with a recent	kernel (2.4.x recommended, 2.2.x should be ok). Note: ports exist for	Solaris, BSD and others but are not supported in this HOWTO at this	time.2. PPP (2.4.1 recommended, 2.3.11 should be ok)	(and the MSCHAPv2/MPPE patch if you want enhanced Microsoft	compatible authentication and encryption).3. PoPToP v1.1.3 (or download the latest release at:	http://sourceforge.net/projects/poptop3.0 PoPToP Installation-----------------------Check out the documentation at http://sourceforge.net/docman/?group_id=448274.0 Windows Client Setup------------------------Install it using the add-remove programs tool. Go to windows->communicationsand install VPN support.(If you do above you may *not* need to follow the instructions below as itwill already be installed... ?follow the instructions:    1.start->settings->control panel->network    2.Click add    3.choose adapter    4.Click add    5.select microsoft as the Manufactuarer    6.select Microsoft Virtual Private Networking Adapter    7.Click ok    8.Insert any necessary disks    9.Reboot your Machine take a little nap here...Once your Machine is back    1.go to dial-up networking (usually start->programs->Accessories->communications->Dial-up Networking) YMMV    2.Click make new connection    3.Name the Connection whatever you'd like.    4.Select Microsoft VPN adapter as the device    5.click next    6.type in the ip address or hostname of your pptp server    7.click next    8.click finish    9.Right-click on the intranet icon   10.select properties   11.choose server types   12.check require encrypted password   13.uncheck netbeui, ipx/spx compatible   14.click tcp/ip settings   15.turn off use IP header compression   16.turn off use default gw on remote network   17.click ok.   18.start that connection   19.type in your username and pw (yadda, yadda, yadda)   20.once it finishes its connection your up. Note that the Win95 routine is similar but requires Dial Up Networking Update 1.3 (free from Microsoft) to be installed first. 5.0 FAQ-------Q&A.INTRODUCTIONAfter spending the better part of two weeks developing my configurationfor a pptp sever for remote file access by Windows(tm) clients, Ithought I would pass along these notes to those who may be interested.The basic configuration involves a Samba/PoPToP server behind afirewall, through which clients using Win98 machines will connect usingthe VPN facility built into that OS.  This is diagrammed below. _____         ___         ______        ______|     |       |   \       | fire |      | file || win | ---> / net \ ---> | wall | ---> | srvr ||_____|      \__/\_/      |______|      |______|The components of the system consist of the Win98 clients running thebuilt-in VPN facility dialing in to their ISP's and connecting throughthe firewall to the Samba server on the internal network using the pptpprotocol.  The firewall uses Network Address Translation to convert anopen Internet IP address to an internal one.  Sounds simple enoughright?SIMPLE TEST SETUPAs a starting point, I configured a Win98 box to connect directly to aPoPToP server without any authentication or encryption.  This was justto get a feel for how pptp works and verify the setup.  Using thepre-packaged rpm's was a big help here.  You just rpm the thing onto thesystem and fire it up, and you're in business.  The diagram belowrepresents this simple system.  192.168.56.142                192.168.56.11   _____                        ______  |     |                      | file |  | win | ------------------>  | srvr |  |_____|                      |______|Emboldend by my success, I set out to turn on MS authentication andencrytion, and this is where the fun started.AUTHENTICATION AND ENCRYPTIONThis is an area where Microsoft really shows its true colors.  Turningon password and data encryption on the Win98 VPN server configurationwas quite the eye opening experience.  First with the authentication,you will have to go through a somewhat difficult compilation of theppp-2.3.8 package.  The worst part here is getting all the piecestogether, namely the rc4 files.  This process is well documented in thisarchive, so I won't go into it here.The next realization is that Microsoft prepends the domain name to theuser name when submitting the login credentials. For example, srhodes isnow DBNET\\srhodes.  If that wasn't bad enough, I found that the domainwasn't even the one I was logged into.  My best guess is that the firstdomain that the computer ever logs into is stuck with it for ever.  Thisis a real problem if you have multiple domains that you log into.  Imodified the pppd.c code to strip out the domain on MSCHAP logins, butyou can just set the user name in chap-secrets to match the windowsversion.Then I spent a whole day trying to figure out why data encryption doesnot work.  I tried just about everything I could think of that could bewrong.  That's when I discovered this archive, for which I am trulygrateful.  It turns out that the Win9x implementation of encrytpion isFUBAR!  You have to download one of those patches from Microsoft,MSDUN 1.4 to get the thing to work. Windows 95http://download.microsoft.com/download/win95/Update/17648/W95/EN-US/dun14-95.exeWindows 98http://download.microsoft.com/download/win98/Update/17648/W98/EN-US/dun14-98.exeWindows 98sehttp://download.microsoft.com/download/win98SE/Update/17648/W98/EN-US/dun14-SE.exeFIREWALL CONFIGURATIONThe issue with a firewall in this setup is that you need to cover twotypes of protocol communication.  There is one connection which is a tcpconnection on port 1723 that handles the control functions and anotherconnection using IP type 47, or GRE, which handles the actual datacommunication.  This second connection presents a problem for theconvention linux firewall, ipfwadm.  You see, its only set up to handletcp, udp and icmp protocols.  It doesn't know about GRE.The trick around this block is to use one of the new 2.2 kernels, whichemploy a new firewall called ipchains.  This tool willl handle arbitraryprotocols, which can be specified by their numbers.  192.168.2.142                                    192.168.56.11   _____                   ______                   ______  |     |                 | fire | 192.168.56.1    | file |  | win | --------------->| wall | --------------> | srvr |  |_____|     192.168.2.1 |______|                 |______|You need to remember a few things before getting too deep into this.The default gateway on win is set to 192.168.2.1, and the defaultgateway on file srvr is set to 192.168.56.1.  The firewall has the twonetwork interfaces spanning the two subnets and is configured forIP forwarding.  If you have not yet applied any firewall rules, thisconfiguration will work as before.  The interesing part is to block outall other access to file srvr by implementing ipchains rules.The short story is:ipchains -Fipchains -P forward DENYipchains -I forward -p tcp -d 192.168.56.11 1723 -j ACCEPTipchains -A forward -p tcp -s 192.168.56.11 1723 -j ACCEPTipchains -A forward -p 47 -d 192.168.56.11 -j ACCEPTipchains -A forward -p 47 -s 192.168.56.11 -j ACCEPTNETWORK ADDRESS TRANSLATIONThe next hurdle is to configure the firewall so that it can run an openinternet IP address on the outside and allow access to an internaladdress on the inside.  NAT is very well suited to this task, althoughyou may hear otherwise from knowledgable sources.  It happens to be mypreference, though certainly not the only way to skin this cat.  You canobtain the NAT software and some detailed information fromhttp://www.csn.tu-chemnitz.de/HyperNews/get/linux-ip-nat.htmlBut again, there is a problem with the GRE protocol of type 47.  Thetool for configuring NAT, ipnatadm, like its half-brother ipfwadm, isnot set up to handle arbitrary protocols.  Unfortunately, you'll have togo into the code and make a slight modification if you want to use itfor this purpose.  There is a procedure called parse_protocol in thefile routines.c that discriminates the type of protocol to be filtered.The basic idea is to accept a string representing a number and use thatas the filter.  Since you have to recompile the kernel anyway to get theNAT functionality, maybe it's not so horrible, relatively speaking.For those ambitous enough, here is the diff for the routines file, copythis into a file called routines.diff and use the command patch -p0 <routines.diff from within the same directory.--- routines.c  Thu Mar 25 15:41:58 1999+++ /mnt/zip/nat/routines.c     Wed Jul 21 21:09:28 1999@@ -112,11 +112,18 @@        else if (strncmp("icmp", s, strlen(s)) == 0)                nat_set.nat.protocol = IPPROTO_ICMP;        else {+               int number;+               char * end;+               number = (int)strtol(s, &end, 10);+               nat_set.nat.protocol = number;+       }+       /*+       else {                fprintf(stderr, "ipnatadm: invalid protocol \"%s\"specified\n", s);                exit_tryhelp(2);-               /* make the compiler happy... */                return;        }+       */ } void parse_hostnetworkmask(char *name, struct in_addr **addrpp, __u32*maskp, int *naddrs)The patch is actually lifted from ipchains, which was derived fromipfwadm, which provides the basis for ipnatadm.Once you've got all that running, what you want to do is to set up theNAT rules so that the incoming client thinks its talking to thefirewall, as does the outgoing file server.  The short of it is:ipnatadm -Fipnatadm -I -i -P 6 -D 192.168.2.1 1723 -N 192.168.56.11 1723ipnatadm -O -i -P 6 -S 192.168.56.11 1723 -M 192.168.2.1 1723ipnatadm -I -i -P 47 -D 192.168.2.1 -N 192.168.56.11ipnatadm -O -i -P 47 -S 192.168.56.11 -M 192.168.2.1Here, the -P argument sets the protocol, 6 is tcp and 47 is GRE.PPTP packets targeting the firewall are translated to the internal hostinbound and vice-versa on the way out.  Very slick.SAMBAHere's a subject so complex you could probably devote a whole career toit.  We don't want to get too bogged down, so I'll be brief.  Sambaimplements the NetBIOS protocol, which has more quirks than you canshake a stick at.  One of the biggest problems is the use of subnetbroadcasting.  Suffice it to say, if you want the best results, youshould set your PoPToP IP addresses to reside within the subnet on whichthe file server ethernet is located.  I choose 192.168.56.12 for theserver address, and it hands out IP's from 192.168.13-127.Setting the IP forwarding on the file server to true will give youaccess to other machines on the internal network.When you go at the samba sever from Win98, you have to use encryptedpassword.  Look at smbpasswd and related stuff.Finding shares on the server is not so easy.  The short story here isthat browsing is implemented via broadcast packets, and broadcastpackets will not travel down a PPP link.  The only way to get browsingto work over pptp is to set Samba up as a WINS server and a Domain loginserver, and configure the clients to use that WINS server and force themto login to that Domain.  Believe me, I tried just about everything toavoid that.  You will also want to set the samba server as the domainmaster and preferred master for the browsing.If you can't do that, you can set the ppp/options file to include ams-wins setting for the samba server.  This will set the client up sothey can at least resolve host names.  The only way to find a shareunder this configuration is to name it explicitly.  You can use thetools menu from the Win98 file browser and say find -> computer andenter in the name of the samba server and it will be found.  I havefound that setting domain master = yes and preferred master = yes givesa rather nice boost to the speed of name lookups on the network.Here is my abbreviated smb.conf[global]   workgroup = VAULT   server string = acer   log file = /var/log/samba/log.%m   max log size = 50   security = user   encrypt passwords = yes   smb passwd file = /etc/smbpasswd   socket options = TCP_NODELAY   domain master = yes   preferred master = yes   domain logons = yes   wins support = yes   dns proxy = no[homes]   comment = Home Directories   browseable = no   writable = yesYou should also use the lmhosts option for nmbd  (-H) and set up anlmhosts file on the samba server.  Make sure also the the samba servercan resolve its own name, through either /etc/hosts or DNS.In all honesty , I went through the same simple test setup with samba asI did for PoPToP, although its not shown here explicitly.CONCLUSIONPoPToP is a good program, as is Samba.  This configuration can work ifyou put a little effort into it.  I have seen a lot of questions hereand in other places about these types of systems, so I would think thatthere is some demand on the part of users who want this type offunctionality.  I hope these notes are useful to you if this is what youwant to do.****************************************************************************Q&AI have a pptp server set up on my office LAN.  I can connect to theserver and ping to it fine, but I can't ping any other hosts on theoffice subnet.  I have ip-forwarding turned on and I have proxyarp setin the ppp/options file.  What can be wrong?There seem to be a lot of questions floating around about routing andmasq'ing associated with this issue.Well, my curiosity got the best of me, so I thought I would check thisout.  Shown below is my test setup for investigating this problem.192.168.8.142     192.168.56.10    192.168.56.11   192.168.56.12 ________          _______           ______        _____|        |        |       |         |      |      |      || client |------->| fire  |-------->| pptp |----->| host ||        |        | wall  |         | srvr |      |      ||________|        |_______|         |______|      |______|    H                                   H    H         192.168.8.10              H    H                                   H    H===================================H192.168.5.12     pptp connection     192.168.5.11For the sake of simplicity, we will ignore address translation issuesassociated with the firewall.  This assumes that the client at192.168.8.142 is going to use 192.168.56.11 as its target address forthe pptp connection to pptp_srvr.  The firewall will block all access tothe 192.168.56.0 subnet except for pptp connections associated withpptp_srvr.  This can be implemented with ipchainsipchains -P input DENYipchains -P forward DENYipchains -A input 192.168.56.0/24 -j ACCEPT    /* allow connections frominside */ipchains -A input -p tcp -d 192.168.56.11 1723 -j ACCEPTipchains -A input -p 47 -d 192.168.56.11 -j ACCEPTipchains -A forward -p tcp -d 192.168.56.11 1723 -j ACCEPTipchains -A forward -p tcp -s 192.168.56.11 1723 -j ACCEPTipchains -A forward -p 47 -d 192.168.56.11 -j ACCEPTipchains -A forward -p 47 -s 192.168.56.11 -j ACCEPTWhen you connect from client to pptp_srvr, you will be able to completethe connection and ping to pptp_srvr.  However, if you attempt to pinghost, at 192.168.56.12, this will fail.A clue to this problem can be found in the /var/tmp/messages file onpptp_srvr.  There, in the pppd messages, you will findCannot determine ethernet address for proxy ARPThis is due to an issue with the pppd program, which attempts to find ahardware interface on the subnet to which the pppd client has beenassigned.  In this case its looking for a hardware interface on the192.168.5.0 subnet.  It will fail to find one, and will drop theproxyarp request.The simplest way around this problem, and the one that is suggested inthe pppd documentation, is to set the pppd client IP assignment to be onthe local subnet.  An example in this case might be 192.168.56.129.However, it may not be possible to do that.  In the case of a fullyloaded subnet, there may not be any addresses to spare.  Or there may besome security issues with giving out local subnet addresses.  What todo?The place to look is in the arp table.  If you run tcpdump on host(192.168.56.12) during the time when client is pinging, you will seeunanswered arp requests from host attempting to find the hardwareaddress for 192.168.5.12.  You need to proxy the hardware address of thepptp_srvr for client in order for this request to be fulfilled.  This isthe job of proxyarp.  However, proxyarp has let us down in thisinstance, and we need to find a workaround.This can be done manually using the arp command on pptp_srvr.  Forexample, if the hardware address of the ethernet card on pptp_srvr is00:60:08:98:14:14, you could force the arp to proxy the client pptpaddress by sayingarp --set 192.168.5.12 00:60:08:98:14:13 pubYou should now be able to ping from client to host through the pptpconnection.This can be a problem, however, in a dynamic environment when clientsare logging into and out of the pptp server on a continuous basis.  Oneway around this problem is to write a script that will execute upon theinitiation of each ppp connection.The place to do this is in /etc/ppp/ip-up.  This script is executed eachtime a new ppp connection is started.  It gets some variables passedinto it, one of which is the assigned IP address of the client.  Notethat RedHat systems use ip-up.local as the place for you to make thescript.  Don't forget to chmod +x !#! /bin/bashREMOTE_IP_ADDRESS=$5date > /var/run/ppp.upecho "REMOTE_IP_ADDRESS = " $REMOTE_IP_ADDRESS >> /var/run/ppp.uparp --set $REMOTE_IP_ADDRESS 00:60:08:98:14:14 pub >> /var/run/ppp.upexit 0This should put you in business for accessing the remote subnet underthis scenario.  I am a little bit concerned, however, because I alsobuilt a script ip-down.local, that should remove the arp proxy whenclient disconnected.  It doesn't seem to do anything, however, and if Itry to delete the arp entry manually, it just spits out a cryptic errormessage.  The arp entries remain persistent, as far as I can tell.  Ifthis is a problem or not, I don't know.  The next few clients that login are treated well, so I guess its OK.****************************************************************************Q.Also, after running pptpd and monitoring its log file and seeing that itfailed to open ttyp1 - I chmod +rw /dev/ttyp[0-9] and it seemed to worksomewhat.  But, after I rebooted, I had to do this again.  Is this normal?A.pptpd should be running as root (unless you have a system with a setuid openpty() helper, which isn't very common).  If it fails to open a pty/ttypair as root then that is probably because it is in use.Other programs which use pty/tty's will change their permissions back tothe standard ones.****************************************************************************Q.sometimes when I make a connection to my pptpd server Isee a message likeJul  2 17:30:03 ape modprobe: can't locate module ppp-compress-21Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-26Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-24Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-21Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-26Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-24Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-26Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-24Jul  2 17:30:03 ape modprobe: can't locate module ppp-compress-21in /var/log/messages on the server.  Any idea what I can do about it?  A.yeah, in your /lib/modules/<kernel version>/net/ directory, there shouldbe files called bsd_comp.o and ppp_deflate.o.. insmod those files andyou'll be good to go.****************************************************************************Q.Hi, I'm having trouble getting pptpd & mschap-v2 to work. I downloadedall of the patches and compiled everything but whenever i try to connectfrom my win98 machine, it says:Error 691:  The computer you have dialed in to has denied access becausethe username and/or password is invalid on the domain.What is this suppose to mean?A.Error 691 is an authentication problem probably due to the fact that MSchap uses the domain name and username combo to authenticate.  If youlook at the logs you will probably see a message saying that MS chap istrying to authenticate user "domain\\username".  I got it to work byputting the full domain and user string in the client portion of thechap-secrets file.# Secrets for authentication using CHAP# client                        server          secret          IPaddressesworkgroup\\user         server          password         *    If anyone knows how to get it to default to a particular domain, I wouldlike to know.****************************************************************************Q.how do I go about checking who is logged in via tunnel?I need some way of writing the pppd data to wtmp/utmp.(and not sessreg either)does anyone know of any way of doing this via ppp?A.pppd syslogs everything to /var/log/messages (that's the default on my boxanyways) and it will say something like :pppd[15450]: CHAP peer authentication succeeded for <username>you could do a tail /var/log/messages -n2000 | grep CHAP if you wanted tosee who has been logging in.other than that, there's not much i know of. all the authentication isprovided by pppd (if you don't have an auth or a require-chap (or pap, etc.)option, it doesn't even ask for a username.****************************************************************************Q.My NT client won't connect!A.Try taking header and software compression off.****************************************************************************Q. PPTP *client* stops working.A.go to /var/run/pptp/ and look for a socket named x.x.x.xdelete it and try it again.****************************************************************************Q.How many clients does PoPToP support?A.The limits under Linux are:  per-process filedescriptors          - one per client (would limit clients to 256 by default,		    or 1024 with kernel recompile, or more with major libc/kernel			hackery)          - no relevant limit  ttys    - currently, with a standard kernel, 256 clients          - with Unix98 ptys and a small amount of coding, 2048  ppp devices          - no limit in kernel source for ppp          - limit of 100 in dev_alloc_name() in 2.2.x        for(i=0;i<100;i++)        {                sprintf(dev->name,name,i);                if(dev_get(dev->name)==NULL)                        return i;        }            best fix is probably to keep a static int ppp_maxdev so you            don't end up doing 2000 dev_get's to allocated the 2001'th            device.  processes          - 2 per client plus system processes          - standard kernel max = 512 processes, ie 256 clients          - i386 max = 4096 processes, ie 2048 clientsSo it seems that 2048 will be the limit, if you fix a few things andwith a minor kernel mod (I could do all of these pretty easily and sendyou a trivial kernel patch).  To go above 2048 the easiest approach wouldbe to combine pptpctrl and pppd in one process, which would get you to4096.  Beyond there, you need to go for a select() based model, which wouldbe significant coding effort and require large fd-set sizes and so on.So 4096 is the practical limit, and 2048 the easy limit.****************************************************************************Q.What authentication methods (PAP/CHAP) does PoPToP work with?A.PoPToP uses whatever authentication methods your PPPd provides (usuallyPAP and CHAP). With PPPd patches you can get MSCHAP and MSCHAPv2authentication as well.****************************************************************************Q. When running PoPToP I get the following error: 	Jun 11 08:29:04 server pptpd[4875]: MGR: No more free connection slots! What does this mean?A.I'd say at a guess you've only configured one IP address and you have connected a client, and as such there are no more free connection slots should any more clients wish to connect.****************************************************************************Q.Does PoPToP suffer from the same security flaws(http://www.counterpane.com/pptp.html) as the Windows NT PPTP server?A.An initial look at the article suggests that what the authors hammered wasnot the PPTP protocol, but the authentication that the PPTP VPN servers onNT offered access to via open internet.  PPTP seems initially to be justthe path to the weakness, not the weakness itself.  Part of theirobservance of weakness deals with use of poor passwords as well, a cheapcomponent, simple enough to fix.> While no flaws were found in PPTP itself, several serious flaws were> found in the Microsoft implementation of it.> (http://www.counterpane.com/pptp-pressrel.html)The authors do not specifically say "this is ONLY effective against NT",just that NT is affected.  This implies that they do not recognize PoPToP,and it may be included.  The fact that PoPToP has to interOp with MS DUN'sVPN client means that it will have the same weaknesses.  It can onlyprotect itself from DoS attacks, have immediate response to out-of-sequencepackets or illogical packets, etc.The protocol is not considered weak in this analysis, but the weaknesseshave to be replicated in apparent behavior by PoPToP.  The only thing thedevelopers can do with PoPToP is make it a stronger server per se -- moreable to handle the attacks when the come.In conclusion: PoPToP suffers the same security vulnerabilities as the NTsever (this is because it operates with Windows clients).Update: MSCHAPv2 has been released and addresses some of the securityissues. PoPToP works with MSCHAPv2.****************************************************************************Q.Does PoPToP support data encryption?A.Yes.. with appropriate PPPd patches. Patches are available for PPPd toprovide Microsoft compatible RC4 data encryption. The PPPd patch supports40 and 128 bit RC4 encryption.****************************************************************************Q.PoPToP or IPsec? Which is better suited to my needs?A.1. The difference between PoPToP and IPsec is that PoPToP is ready NOW..and requires *no* third party software on the Windows client end(Windows comes with a free PPTP client that is trivial to set up).2. PoPToP is a completely *free* solution.Update: Unfortunately not true for Mac *clients* though. The Mac clientsoftware is around $400 US a copy.3. PoPToP can be integrated with the latest PPPD patches that takeadvantage of MSCHAPv2 and MPPE (Microsoft encryption using RC4 - 40/128bits).More details follow from Emir Toktar:(Refs: A Comprehensive Guide to Virtual Private Networks, IBM.Virtual Private Networking: An Overview White Paper - DRAFT, 3/18/98Microsoft.)Neither network layer-based (L2TP, PPTP,...) nor application layer-based(IPSec,SSL,SSH) security techniques are the best choice for allsituations. There will be trade-offs. Network layer security protects theinformation created by upper layer protocols, but it requires that IPSecbe implemented in the communications stack.With network layer security, there is no need to modify existing upperlayer applications. On the other hand, if security features are alreadyimbedded within a given application, then the data for that specificapplication will be protected while it is in transit, even in the absenceof network layer security. Therefore security functions must be imbeddedon a per-application basis.There are still other considerations:Authentication is provided only for the identity of tunnel endpoints, butnot for each individual packet that flows inside the tunnel. This canexpose the tunnel to man-in-the-middle and spoofing attacks.Network layer security gives blanket protection, but this may not be asfine-grained as would be desired for a given application. It protectsall traffic and is transparent to users and applications.Network layer security does not provide protection once the datagram hasarrived at its destination host. That is, it is vulnerable to attackwithin the upper layers of the protocol stack at the destination machine.Application layer security can protect the information that has beengenerated within the upper layers of the stack, but it offers noprotection against several common network layer attacks while thedatagram is in transit. For example, a datagram in transit would bevulnerable to spoofing attacks against its source or destination address.Application layer security is more intelligent (as it knows theapplication) but also more complex and slower.IPSec provides for tunnel authentication, while PPTP does not.<User Authentication> Layer 2 tunneling protocols inherit the userauthentication schemes of PPP, including the EAP methods discussed below.Many Layer 3 tunneling schemes assume that the endpoints were wellknown (and authenticated) before the tunnel was established. An exceptionto this is IPSec ISAKMP negotiation, which provides mutual authenticationof the tunnel endpoints. (Note that most IPSec implementations supportmachine-based certificates only, rather than user certificates. As aresult, any user with access to one of the endpoint machines can usethe tunnel. This potential security weakness can be eliminated whenIPSec is paired with a Layer 2 protocol such as L2TP.<Token card support> Using the Extensible Authentication Protocol(EAP), Layer 2 tunneling protocols can support a wide variety ofauthentication methods, including one-time passwords, cryptographiccalculators, and smart cards. Layer 3 tunneling protocols (IPSec) canuse similar methods; for example, IPSec defines public key certificateauthentication in its ISAKMP/Oakley negotiation.<Dynamic address assignment> Layer 2 tunneling supports dynamicassignment of client addresses based on the Network Control Protocol(NCP) negotiation mechanism.Generally, Layer 3 tunneling schemes assume that an address has alreadybeen assigned prior to initiation of the tunnel. Schemes for assignmentof addresses in IPSec tunnel mode are currently under development andare not yet available.<Data Compression> Layer 2 tunneling protocols support PPP-basedcompression schemes. For example, the Microsoft implementations of bothPPTP and L2TP use Microsoft Point-to-Point Compression (MPPC). The IETFis investigating similar mechanisms (such as IP Compression) for theLayer 3 tunneling protocols.<Data Encryption> Layer 2 tunneling protocols support PPP-based dataencryption mechanisms. Microsoft's implementation of PPTP supportsoptional use of Microsoft Point-to-Point Encryption (MPPE), based onthe RSA/RC4 algorithm. Layer 3 tunneling protocols can use similarmethods; for example, IPSec defines several optional data encryptionmethods which are negotiated during the ISAKMP/Oakley exchange.<Key Management> MPPE, a Layer 2 protocol, relies on the initial keygenerated during user authentication, and then refreshes itperiodically. IPSec, explicitly negotiates a common key during theISAKMP exchange, and also refreshes it periodically.<Multi-protocol support> Layer 2 tunneling supports multiple payloadprotocols, which makes it easy for tunneling clients to access theircorporate networks using IP, IPX, NetBEUI, and so forth. In contrast,Layer 3 tunneling protocols, such as IPSec tunnel mode, typicallysupport only target networks that use the IP protocol. IPSec is notmulti-protocol.IPSec will be suported by Windows 2000.Many cases can occur, each of which needs to be examined on its own merit. It may be desirable to employ a mix of both network layersecurity techniques and application layer techniques to achieve thedesired overall level of protection. For example, you could use an upperlayer mechanism such as Secure Sockets Layer (SSL) to encrypt upperlayer data. SSL could then be supplemented with IPSec's AH protocol atthe network layer to provide per-packet data origin authentication andprotection against spoofing attacks.****************************************************************************Q.I get a 'createHostSocket: Address already in use' error! what gives?A.Address already in use in createHostSocket means something is already usingTCP port 1723 - maybe another pptp daemon is running?****************************************************************************Q.Does PoPToP work with Windows 2000 clients?A.PoPToP v0.9.5 and above should work with Windows 2000 clients.****************************************************************************
 |