Между виртуальными роутерами облака SIM-Cloud за NAT Traversal (VPNaaS-VPNaaS)¶
Описаине
Рассмотрим настройку, VPN соединение „site-to-site“ как показано ниже. Два удаленных виртуальных маршрутизатора Mikrotik подключены к публичной сети Интернет, через промежуточный сетевой узел - роутер провайдера. Таким образом оба роутера Mikrotik находятся за NAT-T. Статья содержит примеры конфигурации оборудования через консоль, а также через графический интерфейс управления GIU (winbox ).
Начальные условия
Рабочие станции, а также существующая инфраструктура также находятся за NAT. Каждая сторона Site „A“ и Site „B“ имеет свою собственную приватную подсеть:
- 10.10.10.0/24 для Site „A“
- 10.5.4.0/24 для Site „B“
- Версия маршрутизаторов Mikrotik: RouterOS 6.41.2 stable (CHR).
- Версия WinBox: 3.18.
В зависимости от версии ОС роутера или программного обеспечения, с помощью которого производится подключение и дальнейшая настройка могут отличаться.
Bemerkung
Для установления VPN-соединения необходимо обеспечить выполнения обязательных условий:
Сетевая доступность между маршрутизаторами:
- Protocol: UDP, port 500 (for IKE, to manage encryption keys).
- Protocol: UDP, port 4500 (for IPSEC NAT-Traversal mode).
- Protocol: ESP, value 50 (for IPSEC).
- Protocol: AH, value 51 (for IPSEC).
Правила фаерволов не должны блокировать сетевой трафик между маршрутизаторами и приватными подсетями.
Приватные подсети, которые будут соединяться средствами IPSec, должны быть разными, а также не включать в себя друг друга.
| 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 |
В данном примере будет выполнена первоначальная настройка защищенного VPN соединения IPSec „site-to-site“, тем самым соеденим приватные сети 10.10.10.0/24 и 10.5.4.0/24, которые находятся за маршрутизаторами.
Конфигурация Site „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. Для следующих шагов важно, чтобы предложенные алгоритмы аутентификации и шифрования совпадали на обоих маршрутизаторах. В этом примере мы будем использовать настройки параметров «по умолчанию». Чтобы просмотреть и проверить настройки параметра „proposal“ выполняем команду „ip ipsec proposal print“:
[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. Задаем policy (полтитики) для 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
Проверяем внесенные изменения в параметры „policy“:
[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“, параметры применились корректно. Теперь рассмотрим как эти же настройки применить через графический интерфейс управления роутером:
После того как мы выполнили предыдущие 3 шага по настройке маршрутизатора на стороне „A“, переходим к настройке роутера на стороне „B“.
Конфигурация Site „B“
1-B. Настройка параметров „IPsec peer“ для Site „B“ практически идентична конфигурации Site „A“, отличаются только два параметра: IP-адрес удаленного пира - „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. Cоздадим политики 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
Проверяем внесенные изменения в параметры „policy“:
[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“, туннель должен установиться и на обоих маршрутизаторах должны быть созданы две ассоциации безопасности .
Для проверки установления VPN-соединения на обоих маршрутизаторах необходимо поочередно выполнить команды „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
Из результата вывода выполнения команды „ip ipsec remote-peers print“ видно, что соединение установилось (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 (маскарад), которые изменяют адрес источника перед шифрованием пакета. Маршрутизатор не может зашифровать пакет, поскольку адрес источника не совпадает с адресом, указанным в конфигурации политики. Для получения дополнительной информации см. Пример потока пакетов IPsec.
Чтобы это исправить, необходимо настроить правило обхода NAT.
Маршрутизатор Site „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=""
Маршрутизатор Site „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=""
Bemerkung
Если вы ранее пытались установить IP-соединение до того, как было добавлено правило обхода NAT, вы должны очистить таблицу соединений от существующего соединения или перезапустить оба маршрутизатора.
Очень важно, чтобы правило обхода было в верхней части всех других правил NAT.