VPN IPSec (Site-to-Site) zwischen virtuellen Mikrotik-Routern hinter NAT Traversal (NAT-T)¶
- Beschreibung
- Anfangsbedingungen
- Site A Konfiguration
- Site B Konfiguration
- `Regeln für die Umgehung von NAT`_
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.
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:
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:
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:
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:
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=""
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=""
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.