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

    IPSec tunnel problems after pfSense 2.2.3 upgrade

    Scheduled Pinned Locked Moved Problems Installing or Upgrading pfSense Software
    64 Posts 17 Posters 27.8k 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.
    • V
      vbentley
      last edited by

      I just looked on the pfSense bug tracker and there are no issues yet for 2.2.3
      https://redmine.pfsense.org/projects/pfsense/issues?query_id=49
      Does this one qualify?

      Trademark Attribution and Credit
      pfSense® and pfSense Certified® are registered trademarks of Electric Sheep Fencing, LLC in the United States and other countries.

      1 Reply Last reply Reply Quote 0
      • stephenw10S
        stephenw10 Netgate Administrator
        last edited by

        It definitely will when/if we have it narrowed down to something. Or eliminated it in some other way.

        Steve

        1 Reply Last reply Reply Quote 0
        • yuljkY
          yuljk
          last edited by

          I've just switched across to 3DES from AES and the issue is still present :/

          Shrewsoft VPN client throws a 'Gateway authentication error'

          Chris

          1 Reply Last reply Reply Quote 0
          • F
            frmpf
            last edited by

            If any of you can confirm or refute that it would be very helpful.

            Hi Steve,

            Did you take a look at the pastebin I posted?  I show captures both directions while on 2.2.3.  When pinging from the pfSense side, you do see encrypted pings leave pfSense and arrive at the far end (OpenBSD).  The OpenBSD end shows the encrypted packets arriving on the WAN interface, but never anything on enc0.  When you try the same test, but pinging from the far OpenBSD side back to pfSense, the symptoms are exactly the same.  You see encrypted pings leave OpenBSD's WAN, arrive at pfSense's WAN, but never anything at all on pfSense's enc0.

            On 2.2.2 the same setup works, the only thing changing is 2.2.2->2.2.3 on the pfSense side.  It's almost like on both ends they refuse to decrypt the packet from the other side?

            1 Reply Last reply Reply Quote 0
            • F
              frmpf
              last edited by

              I notice from a WAN-side capture of working pings on 2.2.2 vs non-working on 2.2.3 that the packets from the pfSense side are 4 bytes larger than expected?

              2.2.2 working, 132 bytes both directions:
              –---------------
              1.001710 esp 2.2.2.80 > 1.1.1.251 spi 0xad9827e8 seq 2 len 132
              0.002942 esp 1.1.1.251 > 2.2.2.80 spi 0xc5197ced seq 2 len 132
              0.998066 esp 2.2.2.80 > 1.1.1.251 spi 0xad9827e8 seq 3 len 132
              0.002869 esp 1.1.1.251 > 2.2.2.80 spi 0xc5197ced seq 3 len 132

              2.2.3 broken, 136 bytes when initiated from pfSense side, still 132 bytes trying from OpenBSD side

              1.003313 esp 2.2.3.80 > 1.1.1.251 spi 0xd258f6d0 seq 8 len 136
              1.001410 esp 2.2.3.80 > 1.1.1.251 spi 0xd258f6d0 seq 9 len 136
              1.002726 esp 2.2.3.80 > 1.1.1.251 spi 0xd258f6d0 seq 10 len 136
                  ... obviously no replies from OpenBSD end, but I can initiate a ping from that LAN:
              0.066538 esp 1.1.1.251 > 2.2.3.80 spi 0xc2be6e0e seq 2 len 132 (DF)
              0.999772 esp 1.1.1.251 > 2.2.3.80 spi 0xc2be6e0e seq 3 len 132 (DF)
              1.000032 esp 1.1.1.251 > 2.2.3.80 spi 0xc2be6e0e seq 4 len 132 (DF)

              Is it a red herring, or unexpected for a known, fixed-length ping to be 4 bytes larger coming from 2.2.3?  Maybe this results in decryption failures, hence the lack of any traffic ever on enc0 from the respective remote LANs?

              1 Reply Last reply Reply Quote 0
              • stephenw10S
                stephenw10 Netgate Administrator
                last edited by

                @yuljk What version of pfSense did you come from?
                Can you get any more info from the screwsoft debug console?

                @frmpf Checking that now. Thanks.

                Steve

                1 Reply Last reply Reply Quote 0
                • H
                  heper
                  last edited by

                  seems like an MTU issue somehow ? packets get fragmentented ….

                  could someone try: https://doc.pfsense.org/index.php/IPsec_Troubleshooting#Packet_Loss_with_Certain_Protocols

                  1 Reply Last reply Reply Quote 0
                  • J
                    jdp0418
                    last edited by

                    I reverted one of my 2.2.3 NanoBSD firewalls back to 2.2.2.  This gives me a setup similar to what some have described here… having one firewall on 2.2.3 and one on 2.2.2.  And my IPSEC... still works.  :-\

                    I've hit the weird issues before so I can appreciate what you guys are dealing with... but I can't seem to replicate the issue.  If I have time today, I might try to fire up a tunnel on an ASA to a PFS 2.2.2 and 2.2.3 and see what results I get.

                    1 Reply Last reply Reply Quote 0
                    • F
                      frmpf
                      last edited by

                      @heper:  Packets are making the trip successfully from end to end though, they just disappear after they hit the WAN-side interface of either endpoint.  And the pings I'm testing with only result in 132 byte packets, too small to need fragmentation (although they're 136 bytes from a 2.2.3 endpoint, so maybe something is overloading a header field or…?  No explanation for that one yet).

                      EDIT:  OK, it's the Differentiated Services Field that grows by 4 when you're on 2.2.3 instead of 2.2.2, that's why the packet length goes from 132 -> 136

                      1 Reply Last reply Reply Quote 0
                      • yuljkY
                        yuljk
                        last edited by

                        @stephenw10 - Here is an IKE debug from Shrewsoft VPN client

                        (IP's removed for security)

                        I upgraded from 2.2.2 to 2.2.3 on an ALIX 2C2.

                        15/06/26 16:20:45 ## : IKE Daemon, ver 2.2.2
                        15/06/26 16:20:45 ## : Copyright 2013 Shrew Soft Inc.
                        15/06/26 16:20:45 ## : This product linked OpenSSL 1.0.1c 10 May 2012
                        15/06/26 16:20:45 ii : opened 'C:\Program Files\ShrewSoft\VPN Client\debug\iked.log'
                        15/06/26 16:20:45 ii : opened 'C:\Program Files\ShrewSoft\VPN Client/debug/dump-ike-decrypt.cap'
                        15/06/26 16:20:45 ii : opened 'C:\Program Files\ShrewSoft\VPN Client/debug/dump-ike-encrypt.cap'
                        15/06/26 16:20:45 ii : rebuilding vnet device list …
                        15/06/26 16:20:45 ii : device ROOT\VNET\0000 disabled
                        15/06/26 16:20:45 ii : network process thread begin ...
                        15/06/26 16:20:45 ii : pfkey process thread begin ...
                        15/06/26 16:20:45 ii : ipc server process thread begin ...
                        15/06/26 16:22:22 ii : ipc client process thread begin ...
                        15/06/26 16:22:22 <a :="" peer="" config="" add="" message<br="">15/06/26 16:22:22</a> <a :="" proposal="" config="" message<br="">15/06/26 16:22:22</a> <a :="" proposal="" config="" message<br="">15/06/26 16:22:22</a> <a :="" client="" config="" message<br="">15/06/26 16:22:22</a> <a :="" xauth="" username="" message<br="">15/06/26 16:22:22</a> <a :="" xauth="" password="" message<br="">15/06/26 16:22:22</a> <a :="" local="" id="" 'blah@blah.com'="" message<br="">15/06/26 16:22:22</a> <a :="" preshared="" key="" message<br="">15/06/26 16:22:22</a> <a :="" peer="" tunnel="" enable="" message<br="">15/06/26 16:22:22 DB : peer ref increment ( ref count = 1, obj count = 0 )
                        15/06/26 16:22:22 DB : peer added ( obj count = 1 )
                        15/06/26 16:22:22 ii : local address blah blah selected for peer
                        15/06/26 16:22:22 DB : peer ref increment ( ref count = 2, obj count = 1 )
                        15/06/26 16:22:22 DB : tunnel ref increment ( ref count = 1, obj count = 0 )
                        15/06/26 16:22:22 DB : tunnel added ( obj count = 1 )
                        15/06/26 16:22:22 DB : tunnel ref increment ( ref count = 2, obj count = 1 )
                        15/06/26 16:22:22 DB : new phase1 ( ISAKMP initiator )
                        15/06/26 16:22:22 DB : exchange type is aggressive
                        15/06/26 16:22:22 DB : blah blah:500 <-> blah blah:500
                        15/06/26 16:22:22 DB : 36e8a65f4ceb8136:0000000000000000
                        15/06/26 16:22:22 DB : phase1 ref increment ( ref count = 1, obj count = 0 )
                        15/06/26 16:22:22 DB : phase1 added ( obj count = 1 )
                        15/06/26 16:22:22 >> : security association payload
                        15/06/26 16:22:22 >> : - proposal #1 payload
                        15/06/26 16:22:22 >> : -- transform #1 payload
                        15/06/26 16:22:22 >> : -- transform #2 payload
                        15/06/26 16:22:22 >> : -- transform #3 payload
                        15/06/26 16:22:22 >> : -- transform #4 payload
                        15/06/26 16:22:22 >> : -- transform #5 payload
                        15/06/26 16:22:22 >> : -- transform #6 payload
                        15/06/26 16:22:22 >> : key exchange payload
                        15/06/26 16:22:22 >> : nonce payload
                        15/06/26 16:22:22 >> : identification payload
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports XAUTH
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports nat-t ( draft v00 )
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports nat-t ( draft v01 )
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports nat-t ( draft v02 )
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports nat-t ( draft v03 )
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports nat-t ( rfc )
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports FRAGMENTATION
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local supports DPDv1
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local is SHREW SOFT compatible
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local is NETSCREEN compatible
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local is SIDEWINDER compatible
                        15/06/26 16:22:22 >> : vendor id payload
                        15/06/26 16:22:22 ii : local is CISCO UNITY compatible
                        15/06/26 16:22:22 >= : cookies 36e8a65f4ceb8136:0000000000000000
                        15/06/26 16:22:22 >= : message 00000000
                        15/06/26 16:22:22 -> : send IKE packet blah blah:500 -> blah blah:500 ( 774 bytes )
                        15/06/26 16:22:22 DB : phase1 resend event scheduled ( ref count = 2 )
                        15/06/26 16:22:22 DB : phase1 ref decrement ( ref count = 1, obj count = 1 )
                        15/06/26 16:22:22 <- : recv IKE packet blah blah:500 -> blah blah:500 ( 436 bytes )
                        15/06/26 16:22:22 DB : phase1 found
                        15/06/26 16:22:22 DB : phase1 ref increment ( ref count = 2, obj count = 1 )
                        15/06/26 16:22:22 ii : processing phase1 packet ( 436 bytes )
                        15/06/26 16:22:22 =< : cookies 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 =< : message 00000000
                        15/06/26 16:22:22 << : security association payload
                        15/06/26 16:22:22 << : - propsal #1 payload
                        15/06/26 16:22:22 << : -- transform #1 payload
                        15/06/26 16:22:22 ii : unmatched isakmp proposal/transform
                        15/06/26 16:22:22 ii : hash type ( hmac-sha1 != hmac-md5 )
                        15/06/26 16:22:22 !! : peer violates RFC, transform number mismatch ( 1 != 2 )
                        15/06/26 16:22:22 ii : matched isakmp proposal #1 transform #1
                        15/06/26 16:22:22 ii : - transform    = ike
                        15/06/26 16:22:22 ii : - cipher type  = aes
                        15/06/26 16:22:22 ii : - key length  = 256 bits
                        15/06/26 16:22:22 ii : - hash type    = sha1
                        15/06/26 16:22:22 ii : - dh group    = group2 ( modp-1024 )
                        15/06/26 16:22:22 ii : - auth type    = xauth-initiator-psk
                        15/06/26 16:22:22 ii : - life seconds = 86400
                        15/06/26 16:22:22 ii : - life kbytes  = 0
                        15/06/26 16:22:22 << : key exchange payload
                        15/06/26 16:22:22 << : nonce payload
                        15/06/26 16:22:22 << : identification payload
                        15/06/26 16:22:22 ii : phase1 id match ( natt prevents ip match )
                        15/06/26 16:22:22 ii : received = ipv4-host blah blah
                        15/06/26 16:22:22 << : nat discovery payload
                        15/06/26 16:22:22 << : nat discovery payload
                        15/06/26 16:22:22 << : hash payload
                        15/06/26 16:22:22 << : vendor id payload
                        15/06/26 16:22:22 ii : peer supports XAUTH
                        15/06/26 16:22:22 << : vendor id payload
                        15/06/26 16:22:22 ii : peer supports DPDv1
                        15/06/26 16:22:22 << : vendor id payload
                        15/06/26 16:22:22 ii : peer is CISCO UNITY compatible
                        15/06/26 16:22:22 << : vendor id payload
                        15/06/26 16:22:22 ii : peer supports FRAGMENTATION
                        15/06/26 16:22:22 << : vendor id payload
                        15/06/26 16:22:22 ii : peer supports nat-t ( rfc )
                        15/06/26 16:22:22 ii : nat discovery - remote address is translated
                        15/06/26 16:22:22 ii : switching to src nat-t udp port 4500
                        15/06/26 16:22:22 ii : switching to dst nat-t udp port 4500
                        15/06/26 16:22:22 == : DH shared secret ( 128 bytes )
                        15/06/26 16:22:22 == : SETKEYID ( 20 bytes )
                        15/06/26 16:22:22 == : SETKEYID_d ( 20 bytes )
                        15/06/26 16:22:22 == : SETKEYID_a ( 20 bytes )
                        15/06/26 16:22:22 == : SETKEYID_e ( 20 bytes )
                        15/06/26 16:22:22 == : cipher key ( 32 bytes )
                        15/06/26 16:22:22 == : cipher iv ( 16 bytes )
                        15/06/26 16:22:22 == : phase1 hash_i ( computed ) ( 20 bytes )
                        15/06/26 16:22:22 >> : hash payload
                        15/06/26 16:22:22 >> : nat discovery payload
                        15/06/26 16:22:22 >> : nat discovery payload
                        15/06/26 16:22:22 >= : cookies 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 >= : message 00000000
                        15/06/26 16:22:22 >= : encrypt iv ( 16 bytes )
                        15/06/26 16:22:22 == : encrypt packet ( 100 bytes )
                        15/06/26 16:22:22 == : stored iv ( 16 bytes )
                        15/06/26 16:22:22 DB : phase1 resend event canceled ( ref count = 1 )
                        15/06/26 16:22:22 -> : send NAT-T:IKE packet blah blah:4500 -> blah blah:4500 ( 140 bytes )
                        15/06/26 16:22:22 == : phase1 hash_r ( computed ) ( 20 bytes )
                        15/06/26 16:22:22 == : phase1 hash_r ( received ) ( 20 bytes )
                        15/06/26 16:22:22 !! : phase1 sa rejected, invalid auth data
                        15/06/26 16:22:22 !! : blah blah:4500 <-> blah blah:4500
                        15/06/26 16:22:22 !! : 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 ii : sending peer DELETE message
                        15/06/26 16:22:22 ii : - blah blah:4500 -> blah blah:4500
                        15/06/26 16:22:22 ii : - isakmp spi = 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 ii : - data size 0
                        15/06/26 16:22:22 >> : hash payload
                        15/06/26 16:22:22 >> : delete payload
                        15/06/26 16:22:22 == : new informational hash ( 20 bytes )
                        15/06/26 16:22:22 == : new informational iv ( 16 bytes )
                        15/06/26 16:22:22 >= : cookies 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 >= : message adcf7119
                        15/06/26 16:22:22 >= : encrypt iv ( 16 bytes )
                        15/06/26 16:22:22 == : encrypt packet ( 80 bytes )
                        15/06/26 16:22:22 == : stored iv ( 16 bytes )
                        15/06/26 16:22:22 -> : send NAT-T:IKE packet blah blah:4500 -> blah blah:4500 ( 124 bytes )
                        15/06/26 16:22:22 ii : phase1 removal before expire time
                        15/06/26 16:22:22 DB : phase1 deleted ( obj count = 0 )
                        15/06/26 16:22:22 DB : tunnel ref decrement ( ref count = 1, obj count = 1 )
                        15/06/26 16:22:22 DB : policy not found
                        15/06/26 16:22:22 DB : policy not found
                        15/06/26 16:22:22 DB : policy not found
                        15/06/26 16:22:22 DB : policy not found
                        15/06/26 16:22:22 <- : recv IKE packet blah blah:500 -> blah blah:500 ( 76 bytes )
                        15/06/26 16:22:22 DB : phase1 not found
                        15/06/26 16:22:22 ww : ike packet from blah blah ignored, unknown phase1 sa for peer
                        15/06/26 16:22:22 ww : 36e8a65f4ceb8136:76baa49b68ee1f4d
                        15/06/26 16:22:22 DB : removing tunnel config references
                        15/06/26 16:22:22 DB : removing tunnel phase2 references
                        15/06/26 16:22:22 DB : removing tunnel phase1 references
                        15/06/26 16:22:22 DB : tunnel deleted ( obj count = 0 )
                        15/06/26 16:22:22 DB : peer ref decrement ( ref count = 1, obj count = 1 )
                        15/06/26 16:22:22 DB : removing all peer tunnel references
                        15/06/26 16:22:22 DB : peer deleted ( obj count = 0 )
                        15/06/26 16:22:22 ii : ipc client process thread exit ...

                        Cheers</a>

                        1 Reply Last reply Reply Quote 0
                        • W
                          wildcardcorp
                          last edited by

                          We had same issue, and had to revert to 2.2.2.  All IPSEC tunnels not routed.  On boot we saw that it was REALLY slow reinstalling all packages, and it also displayed in the log, IPSEC con2000  unrouted . or something to that effect.  Seems like all connections P1 and p2 go through, but nothing is routed….

                          1 Reply Last reply Reply Quote 0
                          • stephenw10S
                            stephenw10 Netgate Administrator
                            last edited by

                            Ok, this looks like a problem with AES-CBC crypto at Phase2.

                            Try changing your Phase2 to anything other than AES-CBC (the default value). We are using AES-GCM which is working fine but anything Blowfish also works.

                            Steve

                            1 Reply Last reply Reply Quote 0
                            • V
                              vbentley
                              last edited by

                              @jdp0418:

                              I reverted one of my 2.2.3 NanoBSD firewalls back to 2.2.2.  This gives me a setup similar to what some have described here… having one firewall on 2.2.3 and one on 2.2.2.  And my IPSEC... still works.  :-\

                              I've hit the weird issues before so I can appreciate what you guys are dealing with... but I can't seem to replicate the issue.  If I have time today, I might try to fire up a tunnel on an ASA to a PFS 2.2.2 and 2.2.3 and see what results I get.

                              I've reinstalled 2.2.2 to get things working again but I'm wondering if the problem is an upgrade issue on a 2.2.2 installation and not a fresh new install of 2.2.3 . Installing 2.2.2 or 2.2.3 on NanoBSD isn't that really a fresh install.

                              I have just downloaded the 2.2.3 64-bit CD Installer and will do the following:-

                              On working 2.2.2 remote host…
                              1. Disable pfBlockerNG.
                              2. Backup config and save on laptop.
                              3. Re-enable pfBlockerNG.
                              4. Shutdown, disconnect and keep ready for reinstatement.

                              On identical hardware test box...
                              5. Install pfSense 2.2.3 from CD
                              6. Login from laptop and restore backup config from working 2.2.2 host
                              7. When restore is complete, reboot.
                              8. Enable pfBlocker.
                              9. Check IPsec 3DES tunnels from 2.2.3 remote host to 2.2.2 central host are up and passing packets.

                              Trademark Attribution and Credit
                              pfSense® and pfSense Certified® are registered trademarks of Electric Sheep Fencing, LLC in the United States and other countries.

                              1 Reply Last reply Reply Quote 0
                              • D
                                dharrigan
                                last edited by

                                Hi,

                                Bug created for further investigation.

                                https://redmine.pfsense.org/issues/4791

                                -=david=-

                                1 Reply Last reply Reply Quote 0
                                • stephenw10S
                                  stephenw10 Netgate Administrator
                                  last edited by

                                  Any of you confirm that an alternative Phase2 encryption type fixes this?

                                  Steve

                                  1 Reply Last reply Reply Quote 0
                                  • F
                                    frmpf
                                    last edited by

                                    @stephenw10:

                                    Ok, this looks like a problem with AES-CBC crypto at Phase2.

                                    Try changing your Phase2 to anything other than AES-CBC (the default value). We are using AES-GCM which is working fine but anything Blowfish also works.

                                    I will try this shortly and report back (these units aren't production yet so I can test at will)

                                    1 Reply Last reply Reply Quote 0
                                    • J
                                      jdp0418
                                      last edited by

                                      Ok, I setup my phase 2 as AES-128 - AES-XCBC (only; no other options selected).  It now appears I have a phase 1 tunnel up, but no phase 2 connection exists between the sites.  If I set it as one of several options under hash, phase 2 comes up.  I noticed that several of the configs posted here appear to have SHA1 selected as the hash algorithm though.

                                      @vbentley
                                      I am not 100% clear on how nanoBSD updates, but I am pretty sure its just writes a new image on one of the boot slices of the flash drive.  So yes, that is probably more akin to a fresh install than an upgrade.  That definitely is a big difference!

                                      1 Reply Last reply Reply Quote 0
                                      • yuljkY
                                        yuljk
                                        last edited by

                                        Specifying AES-256-GCM only for phase2 results in the same error for me in the Shrewsoft client.

                                        1 Reply Last reply Reply Quote 0
                                        • F
                                          frmpf
                                          last edited by

                                          Changed to 3DES and the tunnel works fine, I'll try the other AES modes shortly but tight on time right now…  on the OpenBSD side it didn't like me simply changing "aes" to "aes-128-gcm", so I'll have to dig a bit more.

                                          1 Reply Last reply Reply Quote 0
                                          • yuljkY
                                            yuljk
                                            last edited by

                                            frmpf - Which hash algorithm are you using with 3DES?

                                            Cheers

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