Построение 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.
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**:
**Рекомендованы, но не обязательны.
Блокируем:
Разрешаем:
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:
ip ipsec profile add dh-group=modp2048 enc-algorithm=aes-256 hash-algorithm=sha256 lifetime=8h name= S2SVPN nat-traversal=no
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.
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.
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.
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,
Пример из GUI WinBox.
ip ipsec profile print:
ip ipsec policy print:
ip ipsec proposal print:
ip ipsec peer print:
В WinBox нужно лишь зайти в IP → IPSec:
На роутере NSX Edge окно настроек* будет следующим:
*Подробная информация по настройке NSX Edge в инструкции
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 в обратную сторону:
На скриншоте видим, что 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.
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: