IPsec VPN між віртуальними маршрутизаторами MikroTik за NAT Traversal (NAT-T)
Опис
У прикладі налаштовується VPN між двома віддаленими віртуальними маршрутизаторами MikroTik. Вони виходять до публічного інтернету через маршрутизатор провайдера, тому обидва перебувають за NAT-T. Налаштування наведено для консолі та графічного інтерфейсу WinBox.
Початкові умови
Робочі станції та інфраструктура також перебувають за NAT. Кожен майданчик має власну приватну підмережу:
10.10.10.0/24для майданчика A;10.5.4.0/24для майданчика B.
Версія MikroTik: RouterOS 6.41.2 stable (CHR).
Версія WinBox: 3.18.
Попередження
Кроки можуть відрізнятися залежно від версій RouterOS і програмного забезпечення.
Примітка
Для встановлення VPN мають виконуватися такі вимоги:
між маршрутизаторами є мережева доступність:
UDP, порт 500 — IKE та керування ключами;
UDP, порт 4500 — IPsec NAT Traversal;
ESP, значення 50 — IPsec;
AH, значення 51 — IPsec.
Правила брандмауера не блокують трафік між маршрутизаторами та приватними підмережами.
Приватні підмережі, з’єднані через IPsec, відрізняються й не перетинаються.
Маршрутизатор |
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 |
У прикладі створюється захищене IPsec-з’єднання між приватними мережами
10.10.10.0/24 і 10.5.4.0/24 за маршрутизаторами.
Налаштування майданчика A
1-A. Налаштуйте IPsec peer із такими параметрами:
address— адреса віддаленого маршрутизатора;auth-method— метод автентифікації;secret— попередньо узгоджений секрет;my-id— локальний ідентифікатор.
Інші параметри залиште стандартними. Виконайте в консолі:
/ip ipsec peer
add address=156.67.54.143/32 my-id=address:172.16.0.12 auth-method=pre-shared-key secret="123456"
Перевірте зміни:
[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
Результат ip ipsec peer print підтверджує застосування параметрів. Ті самі
налаштування у графічному інтерфейсі показано нижче:
2-A. Алгоритми автентифікації та шифрування мають збігатися на обох маршрутизаторах. У прикладі використано стандартні значення. Перевірте їх:
[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. Створіть політику IPsec:
/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
Перевірте політику:
[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
Результат ip ipsec policy print підтверджує застосування параметрів. Ті самі
налаштування у графічному інтерфейсі показано нижче:
Після трьох кроків на майданчику A налаштуйте маршрутизатор майданчика B.
Налаштування майданчика B
1-B. Конфігурація IPsec peer майданчика B майже ідентична майданчику A.
Відрізняються адреса віддаленого вузла address і локальний ідентифікатор my-id.
Задайте параметри в консолі:
/ip ipsec peer
add address=156.67.54.238/32 my-id=address:172.16.0.15 auth-method=pre-shared-key secret="123456"
Перевірте зміни:
[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
Результат ip ipsec peer print підтверджує застосування параметрів. Ті самі
налаштування у графічному інтерфейсі показано нижче:
2-B. Переконайтеся, що стандартний proposal існує та збігається з майданчиком A:
[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
Результат ip ipsec proposal print має бути однаковим на обох маршрутизаторах.
3-B. Створіть політику IPsec на майданчику 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
Перевірте політику:
[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
Результат ip ipsec policy print підтверджує застосування параметрів. Ті самі
налаштування у графічному інтерфейсі показано нижче:
Після правильного виконання кроків 1-A–3-A та 1-B–3-B тунель має встановитися, а на кожному маршрутизаторі має бути створено дві асоціації безпеки.
Для перевірки виконайте ip ipsec remote-peers print і
ip ipsec installed-sa print на обох маршрутизаторах.
[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
Стан STATE - established підтверджує встановлене з’єднання. Прапорець N
означає, що віддалений вузол перебуває за NAT.
[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
Правила обходу NAT
На цьому етапі трафік IPsec-тунелю буде відкинуто. Правила NAT masquerade на обох маршрутизаторах змінюють адресу джерела до шифрування, тому вона більше не відповідає політиці. Докладніше дивіться в прикладі обробки IPsec-пакетів.
Створіть правило обходу NAT.
Маршрутизатор майданчика A
/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=""
Маршрутизатор майданчика B
/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=""
Примітка
Якщо ви намагалися встановити IPsec до додавання правила обходу NAT, видаліть наявне з’єднання з таблиці відстеження або перезапустіть обидва маршрутизатори.
Правило обходу має розташовуватися вище за всі інші правила NAT.