VPN IPSec (Site-to-Site) zwischen virtuellen Mikrotik-Routern hinter NAT Traversal (NAT-T)

Beschreibung

Betrachten Sie die Struktur der VPN-„Site-to-Site“-Verbindung wie unten dargestellt. Zwei virtuelle remote Mikrotik Router sind über einen temporären Netzknoten - den Router des Providers - mit dem öffentlichen Internet verbunden. Auf diese Weise befinden sich beide Mikrotik-Router hinter dem NAT-T. Der Artikel enthält Beispiele für die Konfiguration der Geräte über die Konsole und auch über die Verwaltungsoberfläche von Winbox (GUI).

Anfangsbedingungen

Die Workstations und auch die vorhandene Infrastruktur befinden sich ebenfalls hinter dem NAT. Jeder der Standorte A und B hat sein eigenes privates Subnetz:

  • 10.10.10.0/24 für Site „A“
  • 10.5.4.0/24 für Site „B“
  • Version für Mikrotik-Router: RouterOS 6.41.2 stabil (CHR).
  • Version für WinBox: 3.18.

Warnung

Abhängig von der Betriebssystemversion des Routers oder der Software kann die nachfolgende Konfiguration variieren.

Bemerkung

Um eine VPN-Verbindung aufzubauen, müssen folgende Voraussetzungen erfüllt sein:

  • Netzwerkverfügbarkeit zwischen den Routern:

    • Protocol: UDP, port 500 (für IKE, um encryption keys zu verwalten).
    • Protocol: UDP, port 4500 (für IPSEC NAT-Traversal mode).
    • Protocol: ESP, value 50 (für IPSEC).
    • Protocol: AH, value 51 (für IPSEC).
  • Die Firewall-Regeln dürfen den Netzwerkverkehr zwischen den Routern und den privaten Teilnetzen nicht blockieren.

  • Private Subnetze, die mittels IPSec verbunden werden, müssen unterschiedlich sein und dürfen sich nicht gegenseitig einschließen.

Client vRouter Floating IP VPC-Network IP Private Network IP
Site „A“ Mikrotik #1 156.67.54.238/32 172.16.0.12/32 10.10.10.1/32
Site „B“ Mikrotik #2 156.67.54.143/32 172.16.0.15/32 10.5.4.11/32

In diesem Beispiel wird die erste Konfiguration der sicheren Site-to-Site-VPN-Verbindung über IPSec vorgenommen, wodurch die privaten Netze 10.10.10.0/24 und 10.5.4.0/24, die sich hinter den Routern befinden, verbunden werden.

../../../_images/IPSec_Mikrotik.png

Site A Konfiguration

1-A. IPsec-Peer konfigurieren. In diesem Schritt müssen die folgenden Parameter eingestellt werden:

  • Adresse (des entfernten Peer-Routers),
  • auth-method (Authentifizierungsmethode),
  • secret (Geheimwort),
  • my-id („my identifier“, Kennung).

Die übrigen Parameter werden unverändert auf ihren Standardwerten belassen. Diese Konfiguration wird im Folgenden über die Konsole vorgenommen:

/ip ipsec peer
add address=156.67.54.143/32 my-id=address:172.16.0.12 auth-method=pre-shared-key secret="123456"

Überprüfen Sie die vorgenommenen Änderungen:

[admin@Site "A"] > ip ipsec peer print
Flags: X - disabled, D - dynamic, R - responder
0      address=156.67.54.143/32 auth-method=pre-shared-key secret="123456" generate-policy=no policy-template-group=default exchange-mode=main
       send-initial-contact=yes nat-traversal=yes my-id=address:172.16.0.12 proposal-check=obey hash-algorithm=sha1
       enc-algorithm=aes-256,aes-128 dh-group=modp1024 lifetime=1d dpd-interval=2m dpd-maximum-failures=5

Wie aus der Ausgabe des Befehls „ip ipsec peer print“ ersichtlich ist, wurden die Parameter korrekt angewendet. Betrachten wir nun, wie die gleiche Konfiguration über die Verwaltungsschnittstelle des Routers vorgenommen wird:

../../../_images/site_a_peers.png ../../../_images/site_a_peers_general.png ../../../_images/site_a_peers_advanced.png ../../../_images/site_a_peers_encryption.png

2-A. Für die folgenden Schritte ist es wichtig, dass die vorgesehenen Authentifizierungs- und Verschlüsselungsalgorithmen in beiden Routern übereinstimmen. In diesem Beispiel werden die Standardeinstellungen der Parameter verwendet. Um die Einstellungen der Proposal-Parameter anzuzeigen und zu überprüfen, führen Sie den Befehl ‚ip ipsec proposal print‘ aus:

[admin@Site "A"] > ip ipsec proposal print
Flags: X - disabled, * - default
 0  * name="default" auth-algorithms=sha1
      enc-algorithms=aes-256-cbc,aes-192-cbc,aes-128-cbc lifetime=30m
      pfs-group=modp1024

3-A. Legen Sie die Richtlinie für IPSec fest:

/ip ipsec policy
add src-address=10.10.10.0/24 src-port=any dst-address=10.5.4.0/24 dst-port=any \
sa-src-address=172.16.0.12 sa-dst-address=156.67.54.143 \
tunnel=yes action=encrypt proposal=default

Überprüfen Sie die Änderungen, die an den Richtlinienparametern vorgenommen wurden:

[admin@Site "A"] > ip ipsec policy print
Flags: T - template, X - disabled, D - dynamic, I - invalid, A - active, * - default
 0 T * group=default src-address=::/0 dst-address=::/0 protocol=all proposal=default template=yes
 1  A  src-address=10.10.10.0/24 src-port=any dst-address=10.5.4.0/24 dst-port=any protocol=all
       action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=172.16.0.12
       sa-dst-address=156.67.54.143 proposal=default ph2-count=1

Wie aus der Ausgabe des Befehls „ip ipsec policy print“ ersichtlich ist, wurden die Parameter korrekt angewendet. Betrachten wir nun, wie die gleiche Konfiguration über die Verwaltungsschnittstelle des Routers vorgenommen wird:

../../../_images/site_a_policies.png ../../../_images/site_a_policy_general.png ../../../_images/site_a_policy_action.png ../../../_images/site_a_policy_status.png

Nachdem die 3 Schritte zur Konfiguration des Routers am Standort A abgeschlossen sind, können wir mit der Konfiguration des Routers für den Standort B beginnen.

Site B Konfiguration

1-B. Die Konfiguration der „IPsec-Peer“-Parameter für Site B ist fast identisch mit der für Site A, mit Unterschieden bei nur zwei Parametern: der IP-Adresse der Gegenstelle (address) und ihrer Kennung (my-id)“.

Durchführung der Konfiguration über die Konsole:

/ip ipsec peer
add address=156.67.54.238/32 my-id=address:172.16.0.15 auth-method=pre-shared-key secret="123456"

Überprüfen Sie die vorgenommenen Änderungen:

[admin@Site "B"] > ip ipsec peer print
Flags: X - disabled, D - dynamic, R - responder
 0     address=156.67.54.238/32 auth-method=pre-shared-key secret="123456" generate-policy=no
       policy-template-group=default exchange-mode=main send-initial-contact=yes nat-traversal=yes
       my-id=address:172.16.0.15 proposal-check=obey hash-algorithm=sha1 enc-algorithm=aes-256,aes-128
       dh-group=modp1024 lifetime=1d dpd-interval=2m dpd-maximum-failures=5

Wie aus der Ausgabe des Befehls „ip ipsec peer print“ ersichtlich ist, wurden die Parameter korrekt angewendet. Betrachten wir nun, wie die gleiche Konfiguration über die Verwaltungsschnittstelle des Routers vorgenommen wird:

../../../_images/site_b_peers.png ../../../_images/site_b_peers_general.png ../../../_images/site_b_peers_advanced.png ../../../_images/site_b_peers_encryption.png

2-B.Überprüfen Sie, ob die Vorschlagsparameter standardmäßig erstellt wurden und mit den Routerparametern für Standort A übereinstimmen:

[admin@Site "B"] > ip ipsec proposal print
Flags: X - disabled, * - default
 0  * name="default" auth-algorithms=sha1 enc-algorithms=aes-256-cbc,aes-192-cbc,aes-128-cbc lifetime=30m
      pfs-group=modp1024

Die Ergebnisse der Ausgabe des Befehls „ip ipsec proposal print“ sind auf beiden Routern gleich, und es wird ein Tunnel zwischen ihnen erstellt.

3-B. Erstellen Sie eine IPsec-Richtlinie am Standort B:

/ip ipsec policy
add src-address=10.1.101.0/24 src-port=any dst-address=10.1.202.0/24 dst-port=any \
sa-src-address=192.168.80.1 sa-dst-address=192.168.90.1 \
tunnel=yes action=encrypt proposal=default

Überprüfen Sie die Änderungen, die an den Richtlinienparametern vorgenommen wurden:

[admin@Site "B"] > ip ipsec policy print
Flags: T - template, X - disabled, D - dynamic, I - invalid, A - active, * - default
 0 T * group=default src-address=::/0 dst-address=::/0 protocol=all proposal=default template=yes
 1  A  src-address=10.5.4.0/24 src-port=any dst-address=10.10.10.0/24 dst-port=any protocol=all
       action=encrypt level=require ipsec-protocols=esp tunnel=yes sa-src-address=172.16.0.15
       sa-dst-address=156.67.54.238 proposal=default ph2-count=1

Wie aus der Ausgabe des Befehls „ip ipsec policy print“ ersichtlich ist, wurden die Parameter korrekt angewendet. Betrachten wir nun, wie die gleiche Konfiguration über die Verwaltungsschnittstelle des Routers vorgenommen wird:

../../../_images/site_b_policies.png ../../../_images/site_b_policy_general.png ../../../_images/site_b_policy_action.png ../../../_images/site_b_policy_status.png

Wenn die Schritte 1-A-3-A und 1-B-3-B korrekt ausgeführt wurden, sollte der Tunnel aufgebaut und zwei Sicherheitszuordnungen auf beiden Routern erstellt sein.

Um zu überprüfen, ob die VPN-Verbindung auf beiden Routern aufgebaut wurde, müssen Sie nacheinander die Befehle „ip ipsec remote-peers print“ und „ip ipsec installed-sa print“ ausführen.

[admin@Site "A"] > ip ipsec remote-peers print
Flags: R - responder, N - natt-peer
 #    ID     STATE              REMOTE-ADDRESS   DYNAMIC-ADDRESS    UPTIME
 0 RN        established        156.67.54.143                       7h55m41s


[admin@Site "B"] > ip ipsec remote-peers print
Flags: R - responder, N - natt-peer
 #    ID     STATE              REMOTE-ADDRESS  DYNAMIC-ADDRESS    UPTIME
 0  N        established        156.67.54.238                      7h58m45s

Aus dem Ergebnis der Ausführung des Befehls „ip ipsec remote-peers print“ ist ersichtlich, dass die Verbindung aufgebaut ist (STATE - established). Das Flag „N“ zeigt hier an, dass sich der Remote-Peer hinter dem NAT befindet.

[admin@Site "A"] > ip ipsec installed-sa print
Flags: H - hw-aead, A - AH, E - ESP
 0  E spi=0xBDAD9B src-address=156.67.54.143:4500 dst-address=172.16.0.12:4500 state=mature auth-algorithm=sha1
      enc-algorithm=aes-cbc enc-key-size=256 auth-key="b09b24558822f70d618f86479ff06c948da2c3d8"
      enc-key="9d41abb6e038fead6b2943251e9a18589cbf96a1b21c9424d62c0d26d8cf3d08" add-lifetime=24m/30m
      replay=128
 1  E spi=0xE4C9D3 src-address=172.16.0.12:4500 dst-address=156.67.54.143:4500 state=mature auth-algorithm=sha1
      enc-algorithm=aes-cbc enc-key-size=256 auth-key="55971cf3d89e5377d1191ed7f9ba4253f1b6fe05"
      enc-key="0415a2ad4d141fd10642bf3c8e99f24e2d424295ac2b0f84d10c351972359706" add-lifetime=24m/30m
      replay=128


[admin@Site "B"] > ip ipsec installed-sa print
Flags: H - hw-aead, A - AH, E - ESP
 0  E spi=0xE4C9D3 src-address=156.67.54.238:4500 dst-address=172.16.0.15:
      state=mature auth-algorithm=sha1 enc-algorithm=aes-cbc enc-key-size=
      auth-key="55971cf3d89e5377d1191ed7f9ba4253f1b6fe05"
      enc-key="0415a2ad4d141fd10642bf3c8e99f24e2d424295ac2b0f84d10c3519723
      add-lifetime=24m/30m replay=128
 1  E spi=0xBDAD9B src-address=172.16.0.15:4500 dst-address=156.67.54.238:
      state=mature auth-algorithm=sha1 enc-algorithm=aes-cbc enc-key-size=
      auth-key="b09b24558822f70d618f86479ff06c948da2c3d8"
      enc-key="9d41abb6e038fead6b2943251e9a18589cbf96a1b21c9424d62c0d26d8c
      add-lifetime=24m/30m replay=128

Regeln für die „Umgehung“ von NAT

In diesem Stadium wird der Traffic, der über den IPsec-Tunnel gesendet wird, nicht funktionieren; die Pakete werden verloren gehen. Dies liegt daran, dass beide Router die NAT-Masquerading-Regeln anwenden, die die Quelladresse ändern, bevor das Paket verschlüsselt wird. Der Router kann das Paket nicht verschlüsseln, da die Quelladresse nicht mit der in der Richtlinienkonfiguration angegebenen Adresse übereinstimmt. Weitere Informationen hierzu finden Sie unter Beispielprotokoll für IPsec-Pakete.

Um diese Situation zu beheben, muss eine NAT-Umgehungsregel erstellt werden.

Site A router

/ip firewall nat
add chain=srcnat action=accept  place-before=0 \
 src-address=10.10.10.0/24 dst-address=10.5.4.0/24
[admin@Site "A"] > ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
 0    chain=srcnat action=accept src-address=10.10.10.0/24 dst-address=10.5.4.0/24 log=no log-prefix=""
 1    chain=srcnat action=masquerade out-interface=WAN log=no log-prefix=""
../../../_images/site_a_firewall_nat.png

Site B router

/ip firewall nat
add chain=srcnat action=accept  place-before=0 \
 src-address=10.5.4.0/24 dst-address=10.10.10.0/24
[admin@Site "B"] > ip firewall nat print
Flags: X - disabled, I - invalid, D - dynamic
 0    chain=srcnat action=accept src-address=10.5.4.0/24 dst-address=10.10.10.0/24 log=no log-prefix=""
 1    chain=srcnat action=masquerade out-interface=WAN log=no log-prefix=""
../../../_images/site_b_firewall_nat.png

Hinweis

Wenn Sie versucht haben, eine IP-Verbindung aufzubauen, bevor die NAT-Bypass-Regel hinzugefügt wurde, müssen Sie die Verbindungstabelle von allen bestehenden Verbindungen löschen oder beide Router neu starten.

Es ist wichtig, dass die Umgehungsregel über allen anderen NAT-Regeln steht.