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

    OpenVPN Client Cascade

    Scheduled Pinned Locked Moved OpenVPN
    48 Posts 3 Posters 6.3k 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.
    • J
      John2893ax
      last edited by John2893ax

      Cascades are used by many people. Just connect Router1-> Router2-> Router3-> in between. Why the others use cascades are reasons like day and night. My reason is because I am interested in the technology, even if I am not an expert. 😞

      Create the client for tunnel 2 and use the tunnel 3 interface to run it on. Assign the client 2 interface and create the tunnel 1 client on it.

      How to configure it? What happens when Tunnel1 goes offline? How is it restarted automatically?

      A security measure is still necessary.
      If Tunnel1 goes offline, a firewall rule could block everything. Exactly the same way you would need such a rule for Tunnel2->Tunnel3->Internet. So that the order is always correct.

      Maybe I could solve this with floating rules.

      Unfortunately I could only implement this for one tunnel.

      c92a561b-2199-4fc4-aecb-5333c4baf3dd-grafik.png

      386dddab-d31c-41d3-b15f-8133e8360e58-grafik.png

      2991fd55-7343-41a3-b322-625078a50aeb-grafik.png

      One problem with this rule (for Tunnel3) is that if Tunnel3 is online and Tunnel1 and Tunnel2 are offline, the traffic still flows through Tunnel3. Unfortunately I don't know how to create a firewall rule for this.

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

        Running 3 tunnels inside each other is not the same as just having a route that goes through 3 routers.
        All ip traffic goes through multiple routers, that's how the internet works.
        A tunnel within a tunnel within a tunnel is a very different thing. I have never seen that (except by accident!).

        The cannot come up in the wrong order because, for example, tunnel 1 (the inner most tunnel) cannot connect until tunnel 2 is UP because it's running on the tunnel 2 interface.

        Tunnel 1 will continually try to establish as long as tunnel 2 is up.

        An outbound block rule with a gateway like that is invalid. The gateway will not be applied and it will simply block all.
        When you need to block there is traffic from the source subnet you're using.
        You could also remove the outbound NAT rule that allows traffic from the internal subnet you're using to use the WAN.

        Your policy routing rule on LAN should send traffic across the inner tunnel, tunnel 1 here.

        If you check 'Skip rules when gateway is down' in Sys > Adv > Misc that that will be omitted if Tunnel 1 goes down. If you don't have any other pass rules then traffic from LAN will be blocked when tunnel 1 is down.

        Also 'Kill Switch' is a bad term to use there, it implies something you need to manually activate which is the last thing you want. Fail Safe would be much better.

        Steve

        1 Reply Last reply Reply Quote 1
        • J
          John2893ax
          last edited by

          @stephenw10 said in OpenVPN Client Cascade:

          Running 3 tunnels inside each other is not the same as just having a route that goes through 3 routers.
          All ip traffic goes through multiple routers, that's how the internet works.

          Is there a simple image diagram in Internet, like VPN-router1->VPN-router2->VPN router3->Internet to compare to a tunnel in tunnel connection for illustration?

          The cannot come up in the wrong order because, for example, tunnel 1 (the inner most tunnel) cannot connect until tunnel 2 is UP because it's running on the tunnel 2 interface.
          Tunnel 1 will continually try to establish as long as tunnel 2 is up.

          This makes sense, as you have explained. So the "protection" is already there, right?

          The question is only how to configure tunnel in tunnel. The theoretical explanation usually always looks different than the practical pfSense configuration.

          1 Reply Last reply Reply Quote 0
          • PippinP
            Pippin
            last edited by

            Maybe this might help you:
            https://www.perfect-privacy.com/en/manuals/linux_openvpn_terminal_cascading

            I gloomily came to the ironic conclusion that if you take a highly intelligent person and give them the best possible, elite education, then you will most likely wind up with an academic who is completely impervious to reality.
            Halton Arp

            1 Reply Last reply Reply Quote 1
            • J
              John2893ax
              last edited by

              @Pippin said in OpenVPN Client Cascade:

              Maybe this might help you:
              ...

              I already know the link, but I am looking for a pfSense solution.

              stephenw10 has already written that it could work:

              @stephenw10 said in OpenVPN Client Cascade:

              Create the client for tunnel 3, assign it as an interface. Create the client for tunnel 2 and use the tunnel 3 interface to run it on. Assign the client 2 interface and create the tunnel 1 client on it.

              Unfortunately I do not know how to configure this.

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

                Maybe now I understand what stephenw10 meant:

                Create the client for tunnel 3, assign it as an interface. Create the client for tunnel 2 and use the tunnel 3 interface to run it on. Assign the client 2 interface and create the tunnel 1 client on it.

                I would probably have to configure these interfaces in the OpenVPN client:

                e98def09-4089-4524-a788-85d89ea7dc4c-grafik.png

                If I configure it like this:

                VPN-Client1 - Interface (VPN-Client2)
                VPN-Client2 - Interface (VPN-Client3)
                VPN-Client3 - Interface (WAN)

                Then it does not work properly. Probably I would have to activate additional options.

                For example:

                If VPN-Client3 goes offline, then VPN-Client1 and 2 go offline. The connection is closed.
                If VPN-Client3 is online and VPN-Client2 goes offline, then VPN-Client1 goes offline. The connection remains established via VPN-Client3.

                However, the connection should only work if VPN-Client 1,2 and 3 are online.

                Does anyone have an idea how this can be adapted?

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

                  That's correct behaviour for the tunnels. You are probably routing the traffic incorrectly.

                  All of your unencrypted should go across tunnel 1.

                  Only encrypted traffic from the tunnel 1 client goes across tunnel 2 and the double encrypted traffic from the tunnel 2 client goes across tunnel 3.

                  You should not be routing anything from any internal interface to anywhere except the tunnel 1 gateway.

                  Steve

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

                    Somehow I can't get rid of the feeling that basic settings are missing.

                    Here is an example configuration with a VPN provider:

                    8b8567e4-6b38-4495-8e18-ca355c1f2307-grafik.png

                    a4a7e43f-1309-4529-99cb-7b28443e749f-grafik.png

                    dfd7ee5d-af14-478b-bcc6-1c62d742f827-grafik.png

                    c5abf135-8a81-4f99-a11a-d1dbede0c41f-grafik.png

                    9085c2bb-6258-434b-8d7a-97790ba9debd-grafik.png

                    ebebd0a2-e60e-4c18-a3e9-bb0c82e55513-grafik.png

                    @stephenw10 said in OpenVPN Client Cascade:

                    You should not be routing anything from any internal interface to anywhere except the tunnel 1 gateway.

                    Can you show me an example of how the rule should look like?

                    I have the following behavior now:

                    If VPN-Client1 is online and the others are offline, then there is an internet connection, which should not be the case.

                    56af5026-36dc-467f-b9e0-07ef5b894698-grafik.png

                    The reason is probably that the local address is almost always set to (pending).

                    If all 3 VPN-Clients are online and I restart them several times, then they are not set to (pending), but then the internet connection does not work either.

                    In short, there is a leak at (pending), and with a local address the client connections are terminated as intended, only with 3 local addresses there is no internet connection.

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

                      That looks to be configured as I would expect. The routing from LAN is correct, all policy routed to the tunnel 1 gateway.

                      I agree though tunnel 1 should not be able to come up until tunnel 2 is up becasue it is running on that interface.

                      Maybe the interface assignments are wrong?

                      Steve

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

                        @stephenw10 said in OpenVPN Client Cascade:

                        Maybe the interface assignments are wrong?

                        No, the interfaces seem to be correct.

                        If you have Tunnel1 up after Tunnel2 is up, then I suspect that I am missing basic settings.

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

                          Can we see the assignments? I'm not sure how tunnel 1 can be UP when it doesn't have a local address because tunnel 2 is DOWN and that's what it's running on.

                          Steve

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

                            @stephenw10 said in OpenVPN Client Cascade:

                            Can we see the assignments?

                            Of course.

                            ebae4b91-42fc-4da7-8296-6d0d9245dae5-grafik.png

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

                              Hmm, check the OpenVPN logs. Check the state table. What is tunnel 1 actually running on if tunnel 2 is down?

                              Steve

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

                                I cannot interpret the logs. Here are the logs, if only Tunnel1 is up:

                                f6270601-f953-4fc1-be4e-e54d980cf13c-grafik.png
                                5bf1c82a-1d7b-462a-9fa6-6bca2cebdc11-grafik.png
                                c2cdf4de-5d20-484f-9b5a-8d4f6dc8f2aa-grafik.png

                                4370b63c-83d6-4e08-8e52-63f67a269414-grafik.png

                                49eb4748-e751-47f6-8d2b-9780c64c6899-grafik.png

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

                                  It looks like you have the OpenVPN logging options set waaay too high. All of that is just the config it's using not the actual connection process. Set it logging level back to the defaults ot just get the logs covering the connection process.

                                  Though what I am seeing there is that the local side of the connection shows as not bound to an IP. That's probably what allows it to connect when T2 is down. Without a T2 address it probably omits the local statement from the config. You could check that in /var/etc/openvpn/client1.conf

                                  I'm not sure you can force that in pfSense. What you could do would be to add floating outbound block rules on WAN for the T1 and T2 server IPs so only T3 can connect directly.

                                  I still expect T2 and T3 to be trying to connect in that situation though and it appears they are not.

                                  If you can copy/paste the actual logs into replies using he code tags it's much, much easier to search than pictures on the logs.

                                  Steve

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

                                    I have now set verbosity level "default" for all 3 servers.

                                    Though what I am seeing there is that the local side of the connection shows as not bound to an IP. That's probably what allows it to connect when T2 is down.

                                    Just for information.
                                    All 3 servers use the same "CA" and "Cert" certificate. With "Server host or address" I can also use amsterdam.vpn.com, then a server from Amsterdam1-5 is automatically selected.
                                    Instead of amsterdam.vpn.com, I can also specify the following:
                                    amsterdam1.vpn.com
                                    amsterdam2.vpn.com
                                    amsterdam3.vpn.com
                                    amsterdam4.vpn.com
                                    amsterdam5.vpn.com
                                    I'm not sure if this is the reason for conflicts.

                                    I will try to add other servers. For example, Basel, London or Paris and see if there are still conflicts.

                                    You could check that in /var/etc/openvpn/client1.conf

                                    Here is client1.conf:

                                    dev ovpnc1
                                    verb 1
                                    dev-type tun
                                    dev-node /dev/tun1
                                    writepid /var/run/openvpn_client1.pid
                                    #user nobody
                                    #group nobody
                                    script-security 3
                                    daemon
                                    inactive 604800
                                    ping 5
                                    ping-restart 120
                                    ping-timer-rem
                                    persist-tun
                                    persist-key
                                    proto udp4
                                    cipher AES-128-GCM
                                    auth SHA512
                                    up /usr/local/sbin/ovpn-linkup
                                    down /usr/local/sbin/ovpn-linkdown
                                    tls-client
                                    client
                                    nobind
                                    management /var/etc/openvpn/client1/sock unix
                                    remote 85.17.28.145 1149 udp4
                                    auth-user-pass /var/etc/openvpn/client1/up
                                    auth-retry nointeract
                                    capath /var/etc/openvpn/client1/ca
                                    cert /var/etc/openvpn/client1/cert 
                                    key /var/etc/openvpn/client1/key 
                                    tls-auth /var/etc/openvpn/client1/tls-auth 1
                                    ncp-disable
                                    comp-noadapt
                                    resolv-retry infinite
                                    route-nopull
                                    hand-window 120
                                    mute-replay-warnings
                                    persist-remote-ip
                                    reneg-sec 3600
                                    resolv-retry 60
                                    tls-cipher TLS-DHE-RSA-WITH-AES-256-GCM-SHA384:TLS-DHE-RSA-WITH-AES-256-CBC-SHA256:TLS-DHE-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-DHE-RSA-WITH-AES-256-CBC-SHA:TLS-RSA-WITH-CAMELLIA-256-CBC-SHA:TLS-RSA-WITH-AES-256-CBC-SHA
                                    tls-timeout 5
                                    tun-mtu  1500
                                    fragment 1300
                                    mssfix
                                    remote-cert-tls server
                                    

                                    I'm not sure you can force that in pfSense. What you could do would be to add floating outbound block rules on WAN for the T1 and T2 server IPs so only T3 can connect directly.

                                    Let's assume for now that pfSense cannot force this. How exactly do I create the rules?

                                    If you can copy/paste the actual logs into replies using he code tags it's much, much easier to search than pictures on the logs.

                                    I can't add logs because the VPN provider is reported as spam.

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

                                      Like this:

                                      Screenshot_2020-10-25 2220 stevew lan - Firewall Rules Floating Edit.png
                                      And the same the T2 server IP. Only the T3 server IP should be seen as an outbound connection on WAN.

                                      Steve

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

                                        What you could do would be to add floating outbound block rules on WAN for the T1 and T2 server IPs so only T3 can connect directly.

                                        And the same the T2 server IP.

                                        Okay. I understood that I should only create two rules.

                                        Like these?

                                        Screenshot_2020-10-25 pfSense localdomain - Firewall Rules Floating.png

                                        T3 can still connect, but the others are (pending).

                                        Screenshot_2020-10-25 pfSense localdomain - Status OpenVPN.png

                                        Only the T3 server IP should be seen as an outbound connection on WAN.

                                        I don't know how this is meant.

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

                                          I mean if you look at the states for port 1149 (:1149) on WAN you should only see the T3 client.

                                          Check the logs to see what the T2 client is doing. It should be trying to connect on the T3 client interface. If it isn't what is it doing? Did it error out trying to connect before T3 had connected and stop?

                                          Steve

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

                                            Sorry for the stupid questions, but are floating rules for t1 and t2 correct?

                                            Only the T3 server IP should be seen as an outbound connection on WAN.

                                            Does this refer to floating t2 rule or to a new one with t3?

                                            I mean if you look at the states for port 1149 (:1149) on WAN you should only see the T3 client.

                                            Here is the output:

                                            3dba7c21-6206-4c70-ada4-2288e24ecd8b-grafik.png

                                            556d22d9-48e9-489c-a370-181c71989fb6-grafik.png

                                            Check the logs to see what the T2 client is doing. It should be trying to connect on the T3 client interface.

                                            At Diagnostics-> States?

                                            95b8dcea-f476-4c15-a01c-ff0e44da7a4e-grafik.png

                                            The same is also for T3.

                                            Does that mean that all 3 tunnels run parallel and not tunnel through tunnel?

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