WAN – 176.107.161.41, белый адрес для доступа в интернет;
LAN – 192.168.150.0/24, локальная сеть типа routed.
WAN – 185.242.123.138, белый адрес для доступа в интернет;
LAN – 10.10.20.0/24, локальная сеть, находящаяся за роутером MikroTik.
Если не требуется, переходим сразу к настройке VPN.
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.
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, то его необходимо создать отдельно и добавить туда нужные интерфейсы.
ip route add distance=1 gateway=<GW>
где <GW> – IP-адрес шлюза по умолчанию, в нашем примере это 185.242.123.137.
Пример из GUI WinBox.
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.
*Рекомендованы, но не обязательны.
|
#Выключаем Telnet |
|
#Выключаем FTP (если не нужен) |
|
#Меняем порт SSH со стандартного TCP/22 на другой (отсекаем брутфорс) |
|
#Выключаем доступ по HTTP |
|
#Выключаем API (если не нужно) |
|
#Выключаем API SSL (если не нужно) |
|
#Включаем доступ по HTTP |
Пример настроек с консоли нашего MikroTik - ip service print:
Пример из GUI WinBox.
**Рекомендованы, но не обязательны.
Блокируем:
Разрешаем:
В конце правило 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 отрабатываются сверху вниз.
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 profile=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-before = 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 окно настроек* будет следующим:
*Подробная информация по настройке NSX Edge в инструкции
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.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: