Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    PPTP/L2TP on interfaces

    Scheduled Pinned Locked Moved 2.0-RC Snapshot Feedback and Problems - RETIRED
    150 Posts 16 Posters 89.0k Views
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • L
      Loke
      last edited by

      @sevet:

      …

      All the configurations options for the user to put in should be:
      interface type: DHCP+L2TP (or PPTP, L2TP is more important/widely implemented)
      L2TP/PPTP server
      user name
      password

      Thats it. (no local ip)
      Also, L2TP shouldn't try to use IPSec

      Totally agree with sevet. No local IP and no IPSec. And yes, DHCP+PPPoE/PPTP/L2TP doesn't work at all. About PPTP. Many providers already refused from using this type of VPN because of low max speeds could be reached using this protocol. Instead they migrate on L2TP. So L2TP is present and near future as PPTP is past. And it's still not implemented. This is nonsense.

      @sevet:

      We have a new "to be implemented" link  thanks to ermal http://redmine.pfsense.org/issues/1349

      Target version 2.1 :'( So how many years we need to wait for this feature? :D

      I think on the ticket page must be a "vote" button. So developers can analyze how many people need asked features and set priorities for those tickets on the basis of votes number. ::)

      You need to be a master of tough voodoo to be a guru.

      1 Reply Last reply Reply Quote 0
      • M
        Micky
        last edited by

        I think on the ticket page must be a "vote" button. So developers can analyze how many people need asked features and set priorities for those tickets on the basis of votes number.

        As far as i understand the pfSense dev team chooses what to focus on based on their commercial need and not by public demand.
        You can always add a bounty to a feature you want
        http://forum.pfsense.org/index.php/board,34.0.html

        P.S. Ежели руки дойдут написать самому, то обязательно поделюсь с публикой. Однако времени на данный момент на это не хватает.

        (from http://forum.pfsense.org/index.php/topic,24734.msg174490.html#msg174490)

        Is it too hard to implement this feature? No, i don't think so.

        you're implying that this can be easily implemented, so why no to do so?
        its an open source software, you're welcome to add patches…..

        As much as i would like DHCP+L2TP/PPTP implemented i don't see how this attitude is helpful, the devs don't owe us anything
        and it is their time & effort. instead of this, how about helping with logs & info when asked.....
        or even more useful is to try and debug the connection and point exactly what's not working.

        P.S thanks to gnhb who put time into this (and ermal)!  hopefully he, Evgeny or one of the devs  will finish it, as i wrote earlier, with some changes it is possible to get it working.

        P.P.S  DHCP+PPPoE fully working (as far as i saw over the forums) but DHCP+PPTP have the same problems as L2TP (mainly handling default gateway before and after dialing as far as i remember)

        1 Reply Last reply Reply Quote 0
        • L
          Loke
          last edited by

          @Micky:

          P.S. Ежели руки дойдут написать самому, то обязательно поделюсь с публикой. Однако времени на данный момент на это не хватает.

          (from http://forum.pfsense.org/index.php/topic,24734.msg174490.html#msg174490)

          Is it too hard to implement this feature? No, i don't think so.

          you're implying that this can be easily implemented, so why no to do so?
          its an open source software, you're welcome to add patches…..

          As you already noticed this is my post and i really have no time at this point to do this. It's not hard to make this work under FreeBSD, but pfSense… Need to fully understand the architecture of system. Yes, it's BSD based, yes it open source, but the problem in time needed to understand the structure of the system. If someone can at least point me at source of information about how pfSense built maybe it will be much easier(faster) to do this. I'm working in huge telecommunication corp and really have no much of free time :).
          As i said if i'll do this i'll surely share with public.  ;)

          You need to be a master of tough voodoo to be a guru.

          1 Reply Last reply Reply Quote 0
          • E
            eri--
            last edited by

            Ask your huge management to give you time on this or the money needed.
            Otherwise the answer is when its done.

            1 Reply Last reply Reply Quote 0
            • G
              gnhb
              last edited by

              @sevet:

              1. If you follow this entire thread you will see that the option built in for two interfaces one for DHCP and on for PPP does not work without modifications
              2. The link you gave is the status of L2TP+IPSEC which is not relevant as connecting to the ISP is without the IPSEC and if IPSEC is tried it will not work (windows ISP clients remove the windows default IPSEC of L2TP on the registry for that)
              3. We have a new "to be implemented" link  thanks to ermal http://redmine.pfsense.org/issues/1349

              I don't really get the PPP interface menu, I can't figure out the local IP i need to put in there, what is it for? is it going to be the interface IP and it will access the L2TP server through the wan interface using nat? will there then be a different tunnel interface that will get the IP from the L2TP server? this seems unnecessary to me. (instead just using the Local IP of the interface that has the route to the L2TP server, could be the default route)

              All the configurations options for the user to put in should be:
              interface type: DHCP+L2TP (or PPTP, L2TP is more important/widely implemented)
              L2TP/PPTP server
              user name
              password

              Thats it. (no local ip)
              Also, L2TP shouldn't try to use IPSec

              Yep, you're right on all points. I mis-understood you. I actually started to implement support for this in 2.0 but didn't finish it. I'm still willing to put some time in on it though. Your description is the clearest we've gotten yet, so that's very helpful.

              Regarding your local IP question. It's an available field but not required. We just exposed underlying variables in mpd5 without knowing if they'll be useful to everyone or no-one. :) Sounds like it's probably useful to no one so far, based on how ISP's are using L2TP. Anyway, just use what you need for your setup. Empty fields will be ignored.

              I'll take another look at this soon. I think 2.0 is feature frozen so if I get something useful going it will be in a different repository.

              Ermal, any possibility to still put this in 2.0?

              GB

              1 Reply Last reply Reply Quote 0
              • L
                Loke
                last edited by

                @ermal:

                Ask your huge management to give you time on this or the money needed.
                Otherwise the answer is when its done.

                I'm fully understand this.:)
                Besides i need this for my own purposes, not for company. So why should they. ;D

                @gnhb:

                I'll take another look at this soon. I think 2.0 is feature frozen so if I get something useful going it will be in a different repository.

                Ermal, any possibility to still put this in 2.0?

                Actually it's not necessary to put this in 2.0. It would be great to make this feature to be available through package in 2.0 and include this in main repository in later versions. ;)

                As for empty field with local IP, it's not necessary for mpd to work, but GUI claims it's missing local IP when you trying to apply changes. At least in case of PPTP (there is no L2TP on WAN). Local IP is useless in our case because internet providers provides IP (and other conf) to us by DHCP. And it appears to be confusing to many people because of all this. :)
                Btw what ver of mpd uses pfSense 2.0 RC-1 at this moment? As far as i understand it's mpd5. Am i right?

                You need to be a master of tough voodoo to be a guru.

                1 Reply Last reply Reply Quote 0
                • E
                  eri--
                  last edited by

                  Well for l2tp the changes should not be many intrusive.
                  If someone prepares a diff i will see how intrusive it is before release.

                  1 Reply Last reply Reply Quote 0
                  • L
                    Loke
                    last edited by

                    Ok. We all understand that we getting pfSense completely free of charge. But guys already made and will make in future a huge work. Any work should be paid in a particular way. And if we need some unplanned by developers features we could say "thank you" for those features and we can do this even before this feature implemented.
                    Few posts ago i wrote about "Vote" button on ticket's page. What if this votes will reflect not only number of people who need asked feature, but also who ready to support pfSense project with some amount of $. So there can be placed "Thank you" button. Pressing this button on feature ticket page we providing support for the project and developers got our gratitude for their work.
                    I suppose many people need discussed here feature (PPTP/L2TP on interfaces). So why not say "thank you" together. In this way we are not buying features but supporting their implementation. And this not mean developers owe this feature to us, no. This only make them more interested in particular feature to be done.
                    Do you love pfSense, do you want it became even more great? Spare few coins on the project. No fixed amount. As much as you can. I think guys deserve that much at least for their work.
                    I think this can make things in this project better. And make it grow faster.

                    P.S. Don't throw tomatoes in me and sorry for my english.

                    You need to be a master of tough voodoo to be a guru.

                    1 Reply Last reply Reply Quote 0
                    • L
                      Loke
                      last edited by

                      I've managed to make L2TP on WAN work.
                      Changes are similar to Micky's, but much easier. So what i've done:
                      In /etc/inc/interfaces.inc
                      after line 1175 added next:

                      	else if ($ppp['type'] == "pptp")
                      		$type = "l2tp";
                      
                      

                      so now we got:

                      	if ($ppp['type'] == "ppp")
                      		$type = "modem";
                      	else if ($ppp['type'] == "pptp")
                      		$type = "l2tp";
                      	else
                      		$type = $ppp['type'];
                      
                      

                      in line 1494 (was 1492 in orig) replacing this:

                      		if ($type == "pptp" || $type == "l2tp") {
                      			$mpdconf .= << <eod<br>set pptp self {$localips[$pid]}
                      	set pptp peer {$gateways[$pid]}
                      	set pptp disable windowing
                      
                      EOD;</eod<br>
                      

                      with this:

                      		if ($type == "pptp") {
                      			$mpdconf .= << <eod<br>set pptp peer {$gateways[$pid]}
                      	set pptp disable windowing
                      
                      EOD;
                      		}
                      
                      		if ($type == "l2tp") {
                      			$mpdconf .= << <eod<br>set l2tp peer {$gateways[$pid]}
                      
                      EOD;
                      		}</eod<br></eod<br>
                      

                      What we have now is instead of PPTP we got L2TP.
                      I know it's a silly way, but it works. On interfaces page is still looks like it's PPTP, but really it's L2TP.
                      After two simple changes /var/etc/mpd_wan.conf looks this way:

                      
                      startup:
                      	# configure the console
                      	set console close
                      	# configure the web server
                      	set web close
                      
                      default:
                      pptpclient:
                      	create bundle static wan
                      	set iface name pptp0
                      	set iface route default
                      	set iface disable on-demand
                      	set iface idle 0
                      	set iface enable tcpmssfix
                      	set iface up-script /usr/local/sbin/ppp-linkup
                      	set iface down-script /usr/local/sbin/ppp-linkdown
                      	set ipcp ranges 0.0.0.0/0 0.0.0.0/0
                      	set ipcp enable req-pri-dns
                      	set ipcp enable req-sec-dns
                      	#log -bund -ccp -chat -iface -ipcp -lcp -link
                      
                      	create link static wan_link0 l2tp
                      	set link action bundle wan
                      	set link disable multilink
                      	set link keep-alive 10 60
                      	set link max-redial 0
                      	set link disable chap pap
                      	set link accept chap pap eap
                      	set link disable incoming
                      	set link mtu 1492
                      	set auth authname "your login"
                      	set auth password your pass
                      	set l2tp peer 10.0.0.28
                      	open
                      
                      

                      After those few changes all you need is:
                      1. Assign WAN as PPTP and fill in all required fields. Local IP also need to be filled because frontend will not allow you apply changes without it.
                      2. Enter the shell via SSH (or use "Command Promt" in "Diagnostics") and delete one of assigned to physical WAN interface aliases.
                      To do this you need to say in shell: ifconfig "your physical interface" delete "Local IP" (one you've assigned in step1) or reboot your firewall (1st way is more reasonable IMHO).
                      3. Assign your physical interface as OPT so you can see it's configuration (optional).

                      All those simple changes gives us DHCP+L2TP on WAN. To make this work in normal way more changes need to be done.
                      Iv'e done most of needed changes to add L2TP not just replace PPTP. Will share after final tests.

                      L2TP.png
                      L2TP.png_thumb
                      L2TP_routes.png
                      L2TP_routes.png_thumb

                      You need to be a master of tough voodoo to be a guru.

                      1 Reply Last reply Reply Quote 0
                      • L
                        Loke
                        last edited by

                        Ok. Now all changes are tested with positive results. :)
                        For now i'll attach few screens for demonstration. Diffs i'll post later.
                        This how /var/etc/mpd_wan.conf looks now:

                        startup:
                        	# configure the console
                        	set console close
                        	# configure the web server
                        	set web close
                        
                        default:
                        l2tpclient:
                        	create bundle static wan
                        	set iface name l2tp0
                        	set iface route default
                        	set iface disable on-demand
                        	set iface idle 0
                        	set iface enable tcpmssfix
                        	set iface up-script /usr/local/sbin/ppp-linkup
                        	set iface down-script /usr/local/sbin/ppp-linkdown
                        	set ipcp ranges 0.0.0.0/0 0.0.0.0/0
                        	set ipcp enable req-pri-dns
                        	set ipcp enable req-sec-dns
                        	#log -bund -ccp -chat -iface -ipcp -lcp -link
                        
                        	create link static wan_link0 l2tp
                        	set link action bundle wan
                        	set link disable multilink
                        	set link keep-alive 10 60
                        	set link max-redial 0
                        	set link disable chap pap
                        	set link accept chap pap eap
                        	set link disable incoming
                        	set link mtu 1492
                        	set auth authname "your_login"
                        	set auth password your_pass
                        	set l2tp peer 10.0.0.28
                        	open
                        
                        

                        Everything seems to work fine except l2tp auto-connect on restart. But for pptp everything works fine. I suppose in some place few lines for l2tp missing ::)

                        interfaces_conf_l2tp.png
                        interfaces_conf_l2tp.png_thumb
                        interfaces_l2tp.png
                        interfaces_l2tp.png_thumb
                        routes_l2tp.png
                        routes_l2tp.png_thumb
                        status_l2tp.png
                        status_l2tp.png_thumb

                        You need to be a master of tough voodoo to be a guru.

                        1 Reply Last reply Reply Quote 0
                        • L
                          Loke
                          last edited by

                          God damn! It's already done in last build (with little differences comparing to my changes) with same issue i got ;D No auto-connect after reboot.
                          Problem definitely related to local IP. If you don't fill this field connection is not going up after reboot.

                          You need to be a master of tough voodoo to be a guru.

                          1 Reply Last reply Reply Quote 0
                          • G
                            gnhb
                            last edited by

                            @Loke => There is already a L2TP configuration option in Interfaces(assign)=>PPPs=>Add/Edit PPP page. You don't need to re-invent. :)

                            Okay guys, I committed some fixes to the GUI code today. There is now a "Connect/Disconnect" button in Status=>Interfaces Page for L2TP links.

                            Also, you can configure L2TP client from the WAN (or OPTx) pages in the Interfaces menu now (interfaces.php).

                            I have (I think) working DHCP+L2TP/PPTP code in my repository. (I think only because I don't have an L2TP remote endpoint.)

                            I followed mickey's lead and forced the L2TP/PPTP link down if the DCHP lease is Released (or any time the DHCP interface is brought down by pfSense.) Is this desired behavior? I assume so.

                            PM me with your email address and I'll send you new /etc/inc/interfaces.inc and /etc/rc.newwanip files you can put on your box for testing.

                            If you guys test it out and it's solid I can ask the lead devs if it's okay to add it into 2.0.

                            Please watch out for what happens when the DHCP lease is renewed. I hope it doesn't kill and reload the L2TP/PPTP link, but please check for that.

                            If you're savvy with git-sync in pfSense developer shell, the you can git-sync to my repository here:
                            http://gitweb.pfsense.org/pfsense/gnhb-clone.git

                            Follow instructions here for git-sync but use this URL above:
                            http://iserv.nl/files/pfsense/ipv6/

                            Let me know what happens

                            GB

                            1 Reply Last reply Reply Quote 0
                            • L
                              Loke
                              last edited by

                              The problem we have now is L2TP not connecting on reboot if "local IP" field left empty. Also in /etc/inc/interfaces.inc strings set {$type} self {$localips[$pid]} and set {$type} disable windowing are unnecessary for L2TP and local IP is really not necessary at all.
                              So i suggest this way:

                              
                              		if ($type == "pptp") {
                              			$mpdconf .= << <eod<br>set pptp peer {$gateways[$pid]}
                              	set pptp disable windowing
                              
                              EOD;
                              		}
                              
                              		if ($type == "l2tp") {
                              			$mpdconf .= << <eod<br>set l2tp peer {$gateways[$pid]}
                              
                              EOD;
                              		}</eod<br></eod<br> 
                              

                              And suggest to remove "Local IP" from configuration page like i did in my version. The only problem is at boot time something apparently needs this single string in config.xml:

                              
                              <localip>0.0.0.0</localip>
                              
                              

                              And yes, it can be anything there, even 0.0.0.0

                              You need to be a master of tough voodoo to be a guru.

                              1 Reply Last reply Reply Quote 0
                              • G
                                gnhb
                                last edited by

                                To test the code in my repo, set up your DHCP interface (for example on OPT1) and select the "Enable DHCP+" checkbox.

                                Set up your L2TP interface using the Interfaces(assign) menue => PPPs tab => Add (+) button.
                                Select OPT1 for your Link Interface on that page. You must select OPT1 if you set up OPT1 as the DCHP+ interface.

                                Leave Local IP field empty.
                                Add your ISP's host name in Remote IP field.
                                Add other info you need and Save.

                                Then go assign that L2TP link to your WAN interface and Save.

                                Go to Status => Interfaces and check link status.
                                Go to Diagnostics => Routes and check that the static route to the DHCP gateway is added and also deleted when the L2TP link comes up and then is down again.

                                GB

                                @Loke => Some users may need the Local IP field so it will stay. mpd5 just ignores the windowing command for L2TP. We might take it out in the future.
                                RE: reboot issue. I have no knowledge of your configuration or your ISP setup. Are you trying to use DCHP+L2TP or just plain L2TP? I can't say anything about your reboot issue. Did you already post your config? I haven't seen it.

                                1 Reply Last reply Reply Quote 0
                                • E
                                  eri--
                                  last edited by

                                  Loke, than just put 0.0.0.0 at local ip and be done with it.

                                  1 Reply Last reply Reply Quote 0
                                  • L
                                    Loke
                                    last edited by

                                    @ermal:

                                    Loke, than just put 0.0.0.0 at local ip and be done with it.

                                    Actually i did this :).
                                    gnhb, no matter need you local ip or not it must be field or there will be connect to L2TP server on startup. And i've made the same changes you did with some small diff in interfaces.php and it works the same way.

                                    You need to be a master of tough voodoo to be a guru.

                                    1 Reply Last reply Reply Quote 0
                                    • E
                                      eri--
                                      last edited by

                                      Loke,

                                      if it does not startup at boot you better provide logs.

                                      1 Reply Last reply Reply Quote 0
                                      • L
                                        Loke
                                        last edited by

                                        @ermal:

                                        Loke,

                                        if it does not startup at boot you better provide logs.

                                        The funny thing is there is no errors related to this in logs. Everything seems to be fine, just it's not even trying to connect when there is no localip in config.xml
                                        And i didn't found any dependence on this string except set {$type} self {$localips[$pid]} in interfaces.inc. But this problem is not related to this for sure.

                                        You need to be a master of tough voodoo to be a guru.

                                        1 Reply Last reply Reply Quote 0
                                        • R
                                          roi
                                          last edited by

                                          I am planing to setup a new machine this weekend just for testing this feature.
                                          If there is any thing you'd like me to do-to-it-in-it

                                          Version 2.0-BETA4 (i386)
                                          AMD Athlon™ XP 2000+

                                          1 Reply Last reply Reply Quote 0
                                          • E
                                            eri--
                                            last edited by

                                            I just pushed the fix to allow empty localip.

                                            1 Reply Last reply Reply Quote 0
                                            • First post
                                              Last post
                                            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.