Skip to main content
search

Пример построения VPN

Построение IPsec VPN между NSX Edge и MikroTik

1. ПРИМЕР КОНФИГУРАЦИИ

1. NSX Edge:

WAN – 176.107.161.41, белый адрес для доступа в интернет; LAN – 192.168.150.0/24, локальная сеть типа routed.

2. MikroTik:

WAN – 185.242.123.138, белый адрес для доступа в интернет;

LAN – 10.10.20.0/24, локальная сеть, находящаяся за роутером MikroTik.

2. БАЗОВАЯ НАСТРОЙКА РОУТЕРА MIKROTIK:

Если не требуется, переходим сразу к настройке VPN.

1. Настройка WAN:

ip address add address=<WAN_ip/mask> interface=<WAN_interface> network=<WAN_subnet_addr>

где

WAN_ip/mask – ваш IP-адрес и маска, в нашем примере это 185.242.123.138/29,

<WAN_interface> – интерфейс типа uplink, например, ether1,

<WAN_subnet_addr> – адрес подсети, в нашем примере это 185.242.123.136/29.

Пример из GUI WinBox.

2. Настройка LAN:

ip address add address=<LAN_ip/mask> interface=<LAN_interface> network=<LAN_subnet_addr>

где <LAN_ip/mask> – 10.10.20.0/24,

<LAN_interface> – интерфейс локальной сети, например, bridge1*, <LAN_subnet_addr> – 10.10.20.0.

Пример из GUI WinBox.

*Если для LAN используется интерфейс типа Bridge, то его необходимо создать отдельно и добавить туда нужные интерфейсы.

3. Настройка Default route:

ip route add distance=1 gateway=<GW>

где <GW> – IP-адрес шлюза по умолчанию, в нашем примере это 185.242.123.137.

Пример из GUI WinBox.

4. Настройка NAT для локальной сети:

ip firewall nat add chain=srcnat out-interface=<WAN_interface> action=masquerade

где <WAN_interface> – интерфейс типа uplink, например, ether1.

Пример из GUI WinBox.

5. Настройка DNS:

ip dns set servers=<server1>,<server2>

где <server1>,<server2> – это адреса DNS-серверов, например, публичные DNS Google 8.8.8.8, 8.8.4.4.

Пример из GUI WinBox.

6. Настройки безопасности*:

*Рекомендованы, но не обязательны.

ip service set telnet disabled=ye s

ip service set ftp disabled=yes

ip service set ssh port=<SSH_po rtnum>

#Выключаем Telnet

#Выключаем FTP (если не нужен)

#Меняем порт SSH со стандартного TCP/22 на другой (отсекаем брутфорс)

ip service set www disabled=ye s

ip service set api disabled=yes

ip service set api-ssl disabled=y es

ip service set www-ssl disabled =no

#Выключаем доступ по HTTP

#Выключаем API (если не нужно)

#Выключаем API SSL (если не нужно)

#Включаем доступ по HTTP

Пример настроек с консоли нашего MikroTik — ip service print:

Пример из GUI WinBox.

6.1. Настройки Firewall**:

**Рекомендованы, но не обязательны.

Блокируем:

•внешние DNS-запросы;
•WEB proxy;
•Microsoft-DS;
•LOC-SRV.

Разрешаем:

•ICMP;
•доступ по HTTPS и Winbox;
•Established и Related соединения;
•IPSEC ESP и AH;
•порты UDP/500 и UDP/4500 для IKE.
Вконце правило drop для всех всех входящих на интерфейс типа Uplink пакетов.

ip firewall filter add action=drop chain=input dst-port=53 in-interface=ether1 protocol=tcp

ip firewall filter add action=drop chain=input dst-port=53 in-interface=ether1 protocol=udp ip firewall filter add action=drop chain=input dst-port=8080 in-interface=ether1 protocol=tcp ip firewall filter add action=drop chain=input dst-port=135,445 in-interface=ether1 protocol=tcp ip firewall filter add action=accept chain=input in-interface=ether1 protocol=icmp

ip firewall filter add action=accept chain=input dst-port=443,8291 in-interface=ether1 protocol=tcp

ip firewall filter add action=accept chain=input connection-state=established,related in-interface=ether1 ip firewall filter add action=accept chain=forward connection-state=established,related in-interface=ether1 ip firewall filter add action=accept chain=input in-interface=ether1 protocol=ipsec-esp ip firewall filter add action=accept chain=input in-interface=ether1 protocol=ipsec-ah

ip firewall filter add action=accept chain=input dst-port=500,4500 in-interface=ether1 protocol=udp ip firewall filter add action=drop chain=input in-interface=ether1

Пример настроек с консоли нашего — MikroTik ip firewall filter print:

Пример из GUI WinBox. Очередность действий для создания одного правила указаны. Вывод всех правил на скриншоте присутствует. Порядок правил очень важен, т.к. правила firewall отрабатываются сверху вниз.

3. НАСТРОЙКА VPN:

На роутере MikroTik:

1.Создаем профиль IPSec под именем S2SVPN, где указываем параметры шифрования:

ip ipsec profile add dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 lifetime=8h name= S2SVPN nat-traversal=no

Пример из GUI WinBox.

2. Создаем IPSec proposal под именем S2SVPN:

ip ipsec proposal add auth-algorithms=sha256 enc-algorithms=aes-256-cbc,aes-256-ctr,aes-256-gcm lifetime =1h name=S2SVPN pfs-group=modp2048

Пример из GUI WinBox.

3.Создаем IPsec-пир под именем S2SVPN, привязываем к нему ранее созданный IPsec profile S2SVPN:

ip ipsec peer add address=<remote_peer> exchange-mode=ike2 local-address=<WAN_IP> name=S2SVPN pro file=S2SVPN

где <remote_ peer> – IP-адрес NSX Edge, у нас 176.107.161.41, <WAN_IP> – IP uplink, у нас 185.242.123.138.

Пример из GUI WinBox.

4. Создаем PSK-secret и привязываем его к ранее созданному пиру:

ip ipsec identity add peer=S2SVPN secret=<IPSec_secret>

где <IPSec_secret> – пароль для соединения, в нашем примере – qwerty123.

Пример из GUI WinBox.

5.Создаем политику с привязкой к ранее созданному пиру и proposal, в которой указываем связность между локальной подсетью и удаленной локальной подсетью:

ip ipsec policy add dst-address=<remote_subnet> peer=S2SVPN proposal=S2SVPN sa-dst-address=<remote_ peer> sa-src-address=<WAN_ip> src-address=<local_subnet> tunnel=yes

где <remote_subnet> – локальная подсеть в облаке, у нас 192.168.150.0/24, <local_subnet> – локальная подсеть на MikroTik, у нас 10.10.20.0/24,

<remote_peer> – IP-адрес NSX Edge, у нас 176.107.161.41, <WAN_IP> – IP uplink, у нас 185.242.123.138.

Пример из GUI WinBox.

*ВАЖНО! Если в Site-to-Site VPN нужно добавить несколько локальных сетей, то нужно будет создать отдельную policy, а в поле Level во вкладке Action указать значение unique для каждой policy.

6.Дописываем правила в IP Firewall для того, чтобы разрешить трафик между сайтами VPN:

ip firewall nat add chain=srcnat dst-address=<remote_subnet> src-address=<local_subnet> (place-before = 0 *)

ip firewall raw add chain=prerouting dst-address=<local_subnet> src-address=<remote_subnet> (place-befor e = 0 *)

где <remote_subnet> – локальная подсеть в облаке, у нас 192.168.150.0/24, <local_subnet> – локальная подсеть на MikroTik, у нас 10.10.20.0/24,

*Созданные в п. 3.6 правила ip firewall filter обязательно перемещаем вверх, т. е. они должны быть перед последним запрещающим правилом или ранее; для этого используется команда place-before. В данном случае правила нужно поставить первыми в списке, поэтому place-before = 0. Если же в цепочке правил данное правило будет первым, то команду place-before писать не нужно.

Пример из GUI WinBox.

7. Проверяем настройки:

ip ipsec profile print:

ip ipsec policy print:

ip ipsec proposal print:

ip ipsec peer print:

В WinBox нужно лишь зайти в IP → IPSec:

На роутере NSX Edge окно настроек* будет следующим:

•PFS – Disable;
•Local ID и Local Endpoint – 176.107.161.41, внешний адрес NSX Edge;
•Local Subnets – 192.168.150.0/24, локальная сеть, которая используется для IPsec VPN за NSX;
•Peer ID и Peer Endpoint – 185.242.123.138, внешний адрес MikroTik;
•Peer Subnets – 10.10.20.0/24 – сеть, которая будет использоваться для IPsec VPN на стороне MikroTik;

*Подробная информация по настройке NSX Edge в инструкции

•Encryption Algorithm – AES256, в соответствии с настройками из пункта Настройка WAN – enc-algorithm=aes-256 на MikroTik;
•Authentication – PSK;
•Pre-Shared Key – ключ, который будет использоваться для аутентификации, он должен совпадать с ключом на стороне MikroTik из пункта Настройка NAT для локальной сети – <IPSec_secret>. В нашем случае ключ будет qwerty123;
•Diffie-Hellman Group – DH14 в соответствии с настройками на Mikrotik из пункта Настройка WAN — dh-group=modp2048;
•Digest Algorithm – SHA256, в соответствии с настройками из пункта Настройка WAN – hash-algorithm=sha256 на MikroTik;
•IKE Option – IKEv2, в соответствии со значением exchange-mode=ike2 из пункта Настройка Default route в настройке IPSec VPN на MikroTik;
Sesion Type – Policy Based Session.

4. ПРОВЕРКА РАБОТОСПОСОБНОСТИ

4.1. Проверка со стороны NSX Edge:

Channel Status – OK.

Tunnel Status – OK.

4.2. На консоли NSX Edge:

show service IPSec – Status: UP.

4.3. Проверка со стороны MikroTik:

Ip ipsec active-peers print – State Established.

WinBox:

4.4. Проверка ping между машинами:

Врамках примера проверим доступность командой ping машины, которая находится в локальной сети за MikroTik и имеет IP 10.10.20.10. Проверку осуществим с машины, которая находится в локальной сети за NSX Edge и имеет IP 192.168.150.10:

Проверим ping в обратную сторону:

На скриншоте видим, что ping есть и туннель работает исправно.

Если туннель не поднялся, смотрите дальше.

5. TROUBLESHOOTING ПРОБЛЕМ ПРИ ПОСТРОЕНИИ ТУННЕЛЯ:

5.1. Проверяем идентичность настроек c обеих сторон, особое внимание стоит обратить на алгоритм шифрования (Encryption Algorithm), DH Group и PSK ключ.

5.2. Проверяем наличие разрешающих правил FW:

5.2.1. Для работы IPSec между белыми адресами на стороне оборудования MikroTik на стороне NSX Edge данные правила ставятся автоматически.

5.2.2. Для прохождения трафика между локальными сетями на NSX и MikroTik.

*Пример корректных настроек Firewall на MikroTik можно посмотреть в пункте Настройки безопасности.

5.3. Проверяем MTU:

Необходимо с роутера MikroTik выполнить пинг внешнего IP-адреса NSX Edge, используя команду ping с дополнительными параметрами:

ping <remote-peer> src-address=<local-peer> do-not-fragment size=1500

где <remote-peer> – 176.107.161.41, а <local-peer> – 185.242.123.138.

WinBox:

Если получим сообщение типа packet too large and cannot be fragmented, fragmentation needed and DF set, то необходима дополнительная настройка TCP MSS. Для этого создадим соответствующее правило в Mangle:

ip firewall mangle add chain=postrouting action=change-mss new-mss=clamp-to-pmtu passthrough=yes tcp-flags=syn protocol=tcp out-interface=<uplink-interface> log=no

где <uplink-interface> – интерфейс типа Uplink, в нашем случае это был бы ether1.

5.4. Проверяем логи со стороны оборудования MikroTik, например, командой Log print, отфильтровать лог можно, добавив в команду follow where topics~»название события». Для удобства мы рекомендуем собирать логи на Syslog-сервер и далее смотреть там.

Фрагмент лога можно увидеть на скриншоте:

5.5. Если есть проблемы с работоспособностью IPSec-туннеля, например, не устанавливается вторая фаза и т.д. и т.п., следует включить дебаг IPSec и найти причину в подробном логе.

На MikroTik это делается следующим образом:

system logging add action=memory topics=ipsec prefix=IPSec

Winbox:

 

Close Menu