Difference between revisions of "Default IPsec route configuration between Teltonika and Fortigate devices"

From Teltonika Networks Wiki
(10 intermediate revisions by the same user not shown)
Line 1: Line 1:
 +
Default IPsec route configuration between Teltonika Networks and Fortigate devices
 
  <p style="color:red">The information in this page is updated in accordance with [https://wiki.teltonika-networks.com/view/FW_%26_SDK_Downloads'''00.07.07.2'''] firmware version.</p>  
 
  <p style="color:red">The information in this page is updated in accordance with [https://wiki.teltonika-networks.com/view/FW_%26_SDK_Downloads'''00.07.07.2'''] firmware version.</p>  
  <p style="color:red">The information in this page is updated in accordance with '''Fortigate v7.4.3''' firmware version.</p>
 
 
==Introduction==
 
==Introduction==
Normally we configure IPsec for LAN-to-LAN communication, also known as split-tunnel VPN, when only specific hosts or subnets should be reachable via a VPN tunnel. However, we may also take a different approach and configure a VPN tunnel using the full tunnel method. This means that any non-directly connected network (i.e. lan interface) will be reachable only via IPsec tunnel and not via the typical default route.
+
Normally we configure IPsec for LAN-to-LAN communication, also known as split-tunnel VPN, when only specific hosts should be reachable via a VPN tunnel. However, we may also take a different approach and configure a VPN tunnel using the full tunnel method. This means that any non-directly connected network (i.e. lan interface) will be reachable only via IPsec tunnel and not via the typical default route.
 
 
 
==Configuration overview and prerequisites==
 
==Configuration overview and prerequisites==
 
Before we begin, let's look at the configuration we are attempting to achieve and the prerequisites that make it possible.
 
Before we begin, let's look at the configuration we are attempting to achieve and the prerequisites that make it possible.
 +
'''Prerequisites:'''
 +
'''• '''One RUT/RUTX series router with RUTOS firmware;
  
'''Prerequisites:'''
+
''''''One Fortigate series router;
  
* One RUT/RUTX series router or TRB gateway with RUTOS firmware;
+
'''• '''An end device (PC, Laptop) for configuration;
* One Fortigate series router;
 
* An end device (PC, Laptop) for configuration;
 
  
If you're having trouble finding this page or some of the parameters described here on your device's WebUI, you should turn on '''"Advanced WebUI" mode.''' You can do that by clicking the "Advanced" button, located at the top of the WebUI.
+
If you're having trouble finding any page or some of the parameters described here on your device's WebUI, you should turn on '''"Advanced WebUI"''' mode. You can do that by '''clicking''' the '''"Basic"''' button '''under "Mode"''' which is located at the top-right corner of the WebUI.  
[[File:Networking_rutos_manual_webui_basic_advanced_mode_75.gif|border|center|class=tlt-border|1102x93px]]
 
  
 
==Topology==
 
==Topology==
'''Fortigate''' – The '''Fortigate''' will act as a "default gateway" for the RUT device. '''Fortigate''' has a LAN subnet of 192.168.5.0/24 and WAN subnet of 192.168.10.2/24 configured on it, which should be reachable by the RUT.
 
  
'''RUT''' – The '''RUTX11''' in this case will be connected to '''Fortigate''' for basic internet access. '''RUT''' has a LAN subnet of 192.168.1.0/24 and WAN subnet of 192.168.10.1/24 configured on it.
+
'''Fortigate''' – The Fortigate will act as a '''hub'''. A hub is a server, to which our spoke will be connected (IPsec responder). It will be our "default gateway" for the spoke device. Fortigate has a LAN subnet of 192.168.5.0/24 configured on it, which should be reachable by the spoke.
 +
 
 +
'''RUT''' – '''RUTX11''' will act as a '''spoke'''. A spoke is a client, that will be connected to the spoke (IPsec initiator). It will be connected to a '''hub''' for basic internet access. RUTX11 has a LAN subnet of 192.168.1.0/24 configured on it.
 +
 
 +
==Fortigate (Hub) configuration==
 +
Start by configuring the hub (Fortigate) device. Login to the WebUI, navigate to '''VPN → IPsec Tunnels → Create new → IPsec Tunnel → Template Custom'''. Configure everything as follows.  
  
[[File:TopologijaIPsecDefaultRoute_RUT_Fortinet.png|border|class=tlt-border|center]]
 
==Fortigate configuration==
 
Start by configuring the '''Fortigate''' device. Login to the WebUI, navigate to '''1. VPN → 2. IPsec Tunnels → 3. Create new → 4. IPsec Tunnel → 5. Your desired name → 6. Template type: Custom → 7. Click on the button next'''.
 
----
 
<table class="nd-othertables_2">
 
    <tr>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=2>[[File:Fortinet_Firewall_create_new.png|border|class=tlt-border|497x209px|left]]</th>
 
    </tr>
 
    <tr>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=1>[[File:Fortinet_Firewall_type_next_v2.png|border|class=tlt-border|437x209px|right]]</th>
 
    </tr>
 
    </table>
 
 
'''Note:''' ''Not specified fields can be left as is or changed according to your needs.''
 
'''Note:''' ''Not specified fields can be left as is or changed according to your needs.''
 
===Network configuration===
 
===Network configuration===
----
+
1. Remote Gateway – '''''Static IP Address;'''''
Configure everything as follows.  
+
 
Make the following changes:
+
2. IP Address – '''''192.168.10.1;'''''
# Remote Gateway – '''''Static IP Address;'''''
+
 
# IP Address – '''''192.168.10.1;'''''
+
3. Interface – '''''wan1;'''''
#Interface – '''''wan1;'''''
+
 
[[File:Fortigate_IPsec_Network_Configuration.png|border|class=tlt-border|center]]
 
 
===Authentication configuration===
 
===Authentication configuration===
----
+
 
Make the following changes:
+
1. Method – '''''Pre-shared Key;'''''
# Method – '''''Pre-shared Key;'''''
+
 
# Pre-shared Key – '''''your desired password;'''''
+
2. Pre-shared Key – '''''your desired password;'''''
# Version – '''''2;'''''
+
 
[[File:Fortigate_IPsec_Authentication_Configuration.png|border|class=tlt-border|center]]
+
3. Version – '''''2;'''''
 +
 
 
===Phase 1 Proposal configuration===
 
===Phase 1 Proposal configuration===
----
 
'''Note:''' ''This is only an example of a secure configuration. Other algorithms or even combinations of them could be used. However, we strongly recommend refraining from using older encryption and hashing algorithms unless support for certain legacy systems is required.''
 
  
Make the following changes:
+
1. Encryption – '''''AES256;'''''
# Encryption – '''''AES256;'''''
+
 
# Authentication -  '''''SHA512;'''''
+
2. Authentication -  '''''SHA512;'''''
# Diffie-Hellman Group – '''''16;'''''
+
 
# Key Lifetime (seconds) – '''''86400;'''''
+
3. Diffie-Hellman Group – '''''16;'''''
[[File:Fortigate_IPsec_Phase1_Proposal_Configuration.png|border|class=tlt-border|center]]
+
 
 +
4. Key Lifetime (seconds) – '''''86400;'''''
 +
 
 
===Phase 2 Selectors configuration===
 
===Phase 2 Selectors configuration===
----
+
'''''Click on Advanced settings;'''''
'''Note:''' ''This is only an example of a secure configuration. Other algorithms or even combinations of them could be used. However, we strongly recommend refraining from using older encryption and hashing algorithms unless support for certain legacy systems is required.''
 
  
Make the following changes:
+
1. Encryption – '''''AES256;'''''
'''''Click on Advanced settings;'''''
+
 
# Encryption – '''''AES256;'''''
+
2. Authentication -  '''''SHA512;'''''
# Authentication -  '''''SHA512;'''''
+
 
# Diffie-Hellman Group – '''''16;'''''
+
3. Diffie-Hellman Group – '''''16;'''''
# Key Lifetime – '''''Seconds;'''''
+
 
# Seconds – '''''86400;'''''
+
4. Key Lifetime – '''''Seconds;'''''
[[File:Fortigate_IPsec_Phase2_Proposal_Configuration.png|border|class=tlt-border|center]]
+
 
 +
5. Seconds – '''''86400;'''''
  
===Firewall configuration===
 
After setting up our IPsec instance, we will need to configure our firewall accordingly. Navigate to '''Policy & Objects → Firewall Policy → and click on a Create new button.'''. Configure everything as follows.
 
----
 
In this example, we are allowing all types of traffic through the tunnel, but you can restrict certain traffic by specifying the services that are allowed via the tunnel.
 
  
Make the following changes:
+
==RUT (Spoke) configuration==
# Incoming interface - '''''Tunnel interface name (In this case it is Teltonika);'''''
+
Start by configuring the spoke (RUT) device. Login to the WebUI, navigate to '''Services → VPN → IPsec and add a new IPsec instance.''' Configure everything as follows.  
# Outgoing interface - '''''wan2 (choose WAN port from which Fortigate gets internet);'''''
 
# Source - '''''192.168.1.0/255.255.255.0;'''''
 
# Destination - '''all;'''
 
# Service - '''ALL;'''
 
[[File:Fortinet_Ipsec_Firewall_default_route.png|border|class=tlt-border|center]]
 
===Static Routes configuration===
 
After setting up our IPsec instance and firewall, we will need to configure our static route accordingly. Navigate to '''Network → Static routes → and click on a Create new button.'''. For that we will need to create two static routes, one for blackhole and one for accessing our RUT device, configure everything as follows.
 
----
 
Make the following changes:
 
<table class="nd-othertables_2">
 
    <tr>
 
        <th width=330; style="border-bottom: 1px solid white;></th>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=2>[[File:Fortinet_IPsec_Add_route_tunnel.png|border|class=tlt-border|center]]</th>
 
    </tr>
 
    <tr>
 
        <td style="border-bottom: 4px solid white>
 
# Destination - '''''192.168.1.0/255.255.255.0;'''''
 
# Interface - '''''Tunnel interface name (In this case it is Teltonika);'''''
 
        </td>
 
    </tr>
 
</table>
 
----
 
Then create a new static route for blackhole.
 
Make the following changes:
 
<table class="nd-othertables_2">
 
    <tr>
 
        <th width=330; style="border-bottom: 1px solid white;></th>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=2>[[File:Fortinet_IPsec_Add_route_to_blackhole.png|border|class=tlt-border|center]]</th>
 
    </tr>
 
    <tr>
 
        <td style="border-bottom: 4px solid white>
 
# Destination - '''''192.168.1.0/255.255.255.0;'''''
 
# Interface - '''''Blackhole;'''''
 
# Administrative distance - '''''254;'''''
 
        </td>
 
    </tr>
 
</table>
 
==RUT configuration==
 
Start by configuring the '''RUT''' device. Login to the WebUI, navigate to '''Services → VPN → IPsec and add a new IPsec instance.''' Configure everything as follows.  
 
 
'''Note:''' ''Not specified fields can be left as is or changed according to your needs.''  
 
'''Note:''' ''Not specified fields can be left as is or changed according to your needs.''  
 
===Instance configuration===
 
===Instance configuration===
----
+
1. '''''Enable''''' instance;
Make the following changes:
+
 
# '''''Enable''''' instance;
+
2. Remote endpoint - '''''Fortigate WAN IP;'''''
# Remote endpoint - '''''Fortigate WAN IP;'''''
+
 
# Authentication method - '''''Pre-shared key;'''''
+
3. Authentication method - '''''Pre-shared key;'''''
# Pre-shared key - the '''''same password''''' you have '''''set on Fortigate''''' when configuring the '''''Fortigate IPsec instance;'''''
+
 
# Local identifier – '''''RUT WAN IP;'''''
+
4. Pre-shared key - the '''''same password''''' you have '''''set on Fortigate''''' when configuring the '''''Fortigate HUB instance;'''''
# Remote identifier – '''''Fortigate WAN IP;'''''
+
 
[[File:Networking_webui_manual_IPsec_Instance_Configuration.png|border|class=tlt-border|center]]
+
5. Local identifier – '''''RUT WAN IP;'''''
 +
 
 +
6. Remote identifier – '''''Fortigate WAN IP;'''''
 +
 
 
===Connection general section configuration===
 
===Connection general section configuration===
----
 
Make the following changes:
 
# Mode - '''''Start;'''''
 
# Type - '''''Tunnel;'''''
 
# Local subnet – '''''192.168.1.0/24;'''''
 
# Remote subnet – '''''0.0.0.0/0;'''''
 
# Key exchange - '''''IKEv2;'''''
 
  
[[File:Networking_webui_manual_IPsec_configuration_connection_settings_v1.png|border|class=tlt-border|686x482px|center]]
+
1. Mode - '''''Start;'''''
 +
 
 +
2. Type - '''''Tunnel;'''''
 +
 
 +
3. '''''Enable default route;'''''
 +
 
 +
4. Local subnet – '''''192.168.1.0/24;'''''
 +
 
 +
5. Remote subnet – '''''0.0.0.0/0;'''''
 +
 
 +
6. Key exchange - '''''IKEv2;'''''
  
 
===Connection advanced section configuration===
 
===Connection advanced section configuration===
----
+
 
Make the following changes:
+
1. '''''Enable local firewall'''''
# '''''Enable local firewall'''''
+
 
#Remote DNS – '''''8.8.8.8;'''''
+
2. Remote DNS – '''''8.8.8.8;'''''
# Passthrough subnets – '''''192.168.1.0/24;'''''
+
 
[[File:Networking_webui_manual_IPsec_Connection_advanced_Configuration.png|border|class=tlt-border|686x482px|center]]
+
3. Passthrough subnets – '''''192.168.1.0/24;'''''
 +
 
 
===Proposal configuration===
 
===Proposal configuration===
----
+
'''Phase 1'''
'''Note:''' ''This is only an example of a secure configuration. Other algorithms or even combinations of them could be used. However, we strongly recommend refraining from using older encryption and hashing algorithms unless support for certain legacy systems is required.''
+
 
 +
1. Encryption - '''''AES256;'''''
  
Make the following changes:
+
2. Authentication - '''''SHA512;'''''
<table class="nd-othertables_2">
 
    <tr>
 
        <th width=330; style="border-bottom: 1px solid white;></th>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=2>[[File:Networking_webui_manual_IPsec_configuration_proposal_phase1_settings_v1.png|border|class=tlt-border|671x336px|center]]</th>
 
    </tr>
 
    <tr>
 
        <td style="border-bottom: 4px solid white>
 
# Encryption - '''''AES256;'''''
 
# Authentication - '''''SHA512;'''''
 
# DH group - '''''MODP4096;'''''
 
# IKE lifetime - '''86400s'''.
 
        </td>
 
    </tr>
 
</table>
 
  
----
+
3. DH group '''''MODP4096;'''''
<table class="nd-othertables_2">
 
    <tr>
 
        <th width=330; style="border-bottom: 1px solid white;></th>
 
        <th width=800; style="border-bottom: 1px solid white;" rowspan=2>[[File:Networking_webui_manual_IPsec_configuration_proposal_phase2_settings_v1.png|border|class=tlt-border|644x331px|center]]</th>
 
    </tr>
 
    <tr>
 
        <td style="border-bottom: 4px solid white>
 
# Encryption - '''''AES256;'''''
 
# Authentication - '''''SHA512;'''''
 
# PFS group - '''''MODP4096;'''''
 
# Lifetime – '''''86400s;'''''
 
        </td>
 
    </tr>
 
</table>
 
  
 +
4. IKE lifetime – '''''86400s;'''''
  
==Testing the configuration==
+
'''Phase 2'''
----
 
If you have followed all the above steps, your configuration should be finished. But as with any other configuration, it is always wise to test the setup in order to make sure that it works properly.
 
  
Using the <code><span class="highlight">'''ipsec status'''</span></code> or we can use <code><span class="highlight">'''ipsec statusall'''</span></code> command for a more verbose output. With these commands we can see that the IPsec tunnel is successfully established on RUT router. The command output on a '''RUT''' device:
+
1. Encryption - '''''AES256;'''''
  
[[File:Networking_ssh_manual_IPsec_configuration_IPsec_statusall_test_v1.png|border|class=tlt-border|971x135px|center]]
+
2. Hash - '''''SHA512;'''''
----
 
Also, we should be able to access internet routed via Fortigate, we can check it out by pinging 8.8.8.8 and checking what public IP we get by executing this command via command line on RUT device: <code><span class="highlight" >'''curl icanhazip.com'''</span></code> and <code><span class="highlight" >'''ping 8.8.8.8'''</span></code>:
 
[[File:RutIpsecCurlPingTest.png|border|class=tlt-border|506x133px|center]]
 
----
 
To check if IPsec tunnel is working properly from '''Fortigate''', we can try pinging our '''RUT''' device by using this command in command line interface on Fortigate<code><span class="highlight" >'''exec ping 192.168.1.1'''</span></code>, if you are not able to ping '''RUT''' device, try changing the source interface from which we try pinging, by executing this command <code><span class="highlight" >'''exec ping-options source 192.168.5.99'''</span></code>:
 
[[File:Fortinet_IPsec_test_ping.png|border|class=tlt-border|center]]
 
----
 
We can also check if IPsec tunnel is working properly from '''Fortigate''' WebUI, navigate to '''VPN → IPSec Tunnels''' and there you will see if the tunnel is working:
 
[[File:Fortinet_IPsec_WebUI_tunnel_status.png|border|class=tlt-border|center]]
 
==See also==
 
  
[https://wiki.teltonika-networks.com/view/RUTX12_VPN#IPsec IPsec on Teltonika Networks devices]
+
3. PFS group – '''''MODP4096;'''''
  
==External links==
+
4.  lifetime – '''''86400s;'''''
  
[https://openwrt.org/docs/guide-user/services/vpn/strongswan/basics OpenWrt Ipsec basics]
+
==Testing the configuration==
 +
 
 +
If you have followed all the above steps, your configuration should be finished. But as with any other configuration, it is always wise to test the setup in order to make sure that it works properly.  
  
[https://docs.fortinet.com/document/fortigate/7.4.2/administration-guide/762500/general-ipsec-vpn-configuration Fortigate Ipsec configuration]
+
Using the ipsec status command we can see that IPsec tunnel is successfully established on RUT router. The command output on a spoke (RUT) device:

Revision as of 10:16, 18 June 2024

Default IPsec route configuration between Teltonika Networks and Fortigate devices

The information in this page is updated in accordance with 00.07.07.2 firmware version.

Introduction

Normally we configure IPsec for LAN-to-LAN communication, also known as split-tunnel VPN, when only specific hosts should be reachable via a VPN tunnel. However, we may also take a different approach and configure a VPN tunnel using the full tunnel method. This means that any non-directly connected network (i.e. lan interface) will be reachable only via IPsec tunnel and not via the typical default route.

Configuration overview and prerequisites

Before we begin, let's look at the configuration we are attempting to achieve and the prerequisites that make it possible. Prerequisites: One RUT/RUTX series router with RUTOS firmware;

One Fortigate series router;

An end device (PC, Laptop) for configuration;

If you're having trouble finding any page or some of the parameters described here on your device's WebUI, you should turn on "Advanced WebUI" mode. You can do that by clicking the "Basic" button under "Mode" which is located at the top-right corner of the WebUI.

Topology

Fortigate – The Fortigate will act as a hub. A hub is a server, to which our spoke will be connected (IPsec responder). It will be our "default gateway" for the spoke device. Fortigate has a LAN subnet of 192.168.5.0/24 configured on it, which should be reachable by the spoke.

RUTRUTX11 will act as a spoke. A spoke is a client, that will be connected to the spoke (IPsec initiator). It will be connected to a hub for basic internet access. RUTX11 has a LAN subnet of 192.168.1.0/24 configured on it.

Fortigate (Hub) configuration

Start by configuring the hub (Fortigate) device. Login to the WebUI, navigate to VPN → IPsec Tunnels → Create new → IPsec Tunnel → Template Custom. Configure everything as follows.

Note: Not specified fields can be left as is or changed according to your needs.

Network configuration

1. Remote Gateway – Static IP Address;

2. IP Address – 192.168.10.1;

3. Interface – wan1;

Authentication configuration

1. Method – Pre-shared Key;

2. Pre-shared Key – your desired password;

3. Version – 2;

Phase 1 Proposal configuration

1. Encryption – AES256;

2. Authentication - SHA512;

3. Diffie-Hellman Group – 16;

4. Key Lifetime (seconds) – 86400;

Phase 2 Selectors configuration

Click on Advanced settings;

1. Encryption – AES256;

2. Authentication - SHA512;

3. Diffie-Hellman Group – 16;

4. Key Lifetime – Seconds;

5. Seconds – 86400;


RUT (Spoke) configuration

Start by configuring the spoke (RUT) device. Login to the WebUI, navigate to Services → VPN → IPsec and add a new IPsec instance. Configure everything as follows. Note: Not specified fields can be left as is or changed according to your needs.

Instance configuration

1. Enable instance;

2. Remote endpoint - Fortigate WAN IP;

3. Authentication method - Pre-shared key;

4. Pre-shared key - the same password you have set on Fortigate when configuring the Fortigate HUB instance;

5. Local identifier – RUT WAN IP;

6. Remote identifier – Fortigate WAN IP;

Connection general section configuration

1. Mode - Start;

2. Type - Tunnel;

3. Enable default route;

4. Local subnet – 192.168.1.0/24;

5. Remote subnet – 0.0.0.0/0;

6. Key exchange - IKEv2;

Connection advanced section configuration

1. Enable local firewall

2. Remote DNS – 8.8.8.8;

3. Passthrough subnets – 192.168.1.0/24;

Proposal configuration

Phase 1

1. Encryption - AES256;

2. Authentication - SHA512;

3. DH group – MODP4096;

4. IKE lifetime – 86400s;

Phase 2

1. Encryption - AES256;

2. Hash - SHA512;

3. PFS group – MODP4096;

4. lifetime – 86400s;

Testing the configuration

If you have followed all the above steps, your configuration should be finished. But as with any other configuration, it is always wise to test the setup in order to make sure that it works properly.

Using the ipsec status command we can see that IPsec tunnel is successfully established on RUT router. The command output on a spoke (RUT) device: