Mikrotik. 2 Провайдера. Входящие соединения, а также проброс DST-NAT в локальную сеть, через любого из 2-х провайдеров: различия между версиями

Материал из Wiki
Перейти к навигации Перейти к поиску
 
(не показано 5 промежуточных версий этого же участника)
Строка 2: Строка 2:
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__
__ОБЯЗАТЕЛЬНОЕ_ОГЛАВЛЕНИЕ__


== Ссылки ==
= Входные данные =
https://radio.obninskiy.net/blog/internet/1588.html
 
== Входные данные ==
 
* Имеется 2 провайдера, у обоих есть статический внешний IP-адрес
* Имеется 2 провайдера, у обоих есть статический внешний IP-адрес
* '''''192.168.1.0/24''''' - локальная сеть
* '''''bridge-local (192.168.1.1)''''' - интерфейс микротика, смотрящий в локалку
* '''''ether3-wan1''''' - интерфейс ISP1
* '''''ether3-wan1''''' - интерфейс ISP1
* '''''ether4-wan2''''' - интерфейс ISP2
* '''''ether4-wan2''''' - интерфейс ISP2
Строка 15: Строка 9:
* '''''172.18.0.129''''' - шлюз ISP2
* '''''172.18.0.129''''' - шлюз ISP2


== Задача ==
= Задача =


* Необходимо чтобы сам маршрутизатор отвечал (например на '''ICMP''' запрос на внешний провайдерский IP-адрес) во внешку по тому провайдеру, по которому запрос пришел
* Необходимо чтобы сам маршрутизатор отвечал (например на '''ICMP''' запрос на внешний провайдерский IP-адрес) во внешку по тому провайдеру, по которому запрос пришел
* Необходимо чтобы при подключении с внешнего провайдерского интерфейса до внешнего IP-адреса любого из 2-х провайдеров, мы могли подключиться до внутреннего сервера через проброс '''dst-nst'''
* Необходимо чтобы при подключении с внешнего провайдерского интерфейса до внешнего IP-адреса любого из 2-х провайдеров, мы могли подключиться до внутреннего сервера через проброс '''dst-nst'''


== Настройка ==
= Настройка =
 
== Актуальная рабочая конфигурация ==
https://mum.mikrotik.com/presentations/RU18M/presentation_6157_1554717194.pdf
 
Создаем группу WAN интерфейсов
 
<code>/interface list</code>
 
<code>add name=-WAN-</code>
 
<code>/interface list member</code>
 
<code>add interface=ether3-wan1 list=-WAN-</code>
 
<code>add interface=ether4-wan2 list=-WAN-</code>
 
SRC-NAT на группе WAN интерфейсов
 
<code>/ip firewall nat</code>
 
<code>add action=masquerade chain=srcnat comment=NAT_masquerade_wan-all out-interface-list=-WAN-</code>
 
Маркировка входящих соединений в INPUT самого микрота (например, WINBOX)
 
<code>/ip firewall mangle</code>
 
<code>add action=mark-connection chain=input comment=conn-input-from-ISP1 in-interface=ether3-wan1 new-connection-mark=conn-input-from-ISP1</code>
 
<code>add action=mark-connection chain=input comment=conn-input-from-ISP2 in-interface=ether4-wan2 new-connection-mark=conn-input-from-ISP2</code>
 
Маркировка входящих соединений DST-NAT (для пробросов порта на хост в локальной сети)
 
<code>/ip firewall mangle</code>
 
<code>add action=mark-connection chain=prerouting comment=conn-input-from-ISP1 connection-mark=no-mark in-interface=ether3-wan1 new-connection-mark=conn-input-from-ISP1 passthrough=yes</code>
 
<code>add action=mark-connection chain=prerouting comment=conn-input-from-ISP2 connection-mark=no-mark in-interface=ether4-wan2 new-connection-mark=conn-input-from-ISP2 passthrough=yes</code>
 
Маркировка соответствующих каждому провайдеру маршрутов на основании маркированных входящих соединений
 
<code>/ip firewall mangle</code>
 
<code>add action=mark-routing chain=prerouting comment=from-ISP1-route-via-ISP1 connection-mark=conn-input-from-ISP1 in-interface-list=!-WAN- new-routing-mark=from-ISP1-route-via-ISP1 passthrough=no</code>
 
<code>add action=mark-routing chain=prerouting comment=from-ISP2-route-via-ISP2 connection-mark=conn-input-from-ISP2 in-interface-list=!-WAN- new-routing-mark=from-ISP2-route-via-ISP2 passthrough=no</code>
 
Маршрут исходящий для соответствующего входящего соединения через соответствующего провайдера (в WAN интерфейс пришел - через шлюз, соответствующий WAN интерфейсу, вышел)
 
<code>/ip firewall mangle</code>
 
<code>add action=mark-routing chain=output comment=from-ISP1-route-via-ISP1 connection-mark=conn-input-from-ISP1 new-routing-mark=from-ISP1-route-via-ISP1</code>
 
<code>add action=mark-routing chain=output comment=from-ISP2-route-via-ISP2 connection-mark=conn-input-from-ISP2 new-routing-mark=from-ISP2-route-via-ISP2</code>
 
Говорим системе, что соединения с определенной маркировкой отправлять через соответствующий шлюз
 
<code>/ip route</code>
 
<code>add comment=from-ISP1-route-via-ISP1 distance=1 gateway=$gw1 routing-mark=from-ISP1-route-via-ISP1</code>
 
<code>add comment=from-ISP2-route-via-ISP2 distance=1 gateway=$gw2 routing-mark=from-ISP2-route-via-ISP2</code>
 
Готово
 
Пробуем пинговать с внешки внешние IP-адреса провайдеров
 
Каждый должен пинговаться
 
Пробуем ходить с внешки на IP-адреса провайдеров по порту 80
 
По каждому провайдеру проходим до веб-сервера 192.168.1.50
 
== НЕ ИСПОЛЬЗОВАТЬ! Устаревший мануал. С ним не работает проброс DST-NAT по RDP ==
Переменные:
Переменные:


Строка 39: Строка 106:
<code>add action=mark-connection chain=input comment=conn-input-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-input-from-ISP2 passthrough=yes</code>
<code>add action=mark-connection chain=input comment=conn-input-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-input-from-ISP2 passthrough=yes</code>


Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера
Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера (это маркировка для '''INPUT''')


<code>/ip firewall mangle</code>
<code>/ip firewall mangle</code>
Строка 55: Строка 122:
<code>add action=mark-connection chain=forward comment=conn-forward-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-forward-from-ISP2 passthrough=yes connection-nat-state=dstnat</code>
<code>add action=mark-connection chain=forward comment=conn-forward-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-forward-from-ISP2 passthrough=yes connection-nat-state=dstnat</code>


Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера
Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера (это маркировка для '''DST-NAT''', то есть для проброса портов с любого провайдера на локальную машину)


<code>/ip firewall mangle</code>
<code>/ip firewall mangle</code>
Строка 70: Строка 137:


<code>add comment=from-ISP2-route-via-ISP2 distance=1 gateway=$gw2 routing-mark=from-ISP2-route-via-ISP2</code>
<code>add comment=from-ISP2-route-via-ISP2 distance=1 gateway=$gw2 routing-mark=from-ISP2-route-via-ISP2</code>
Готово
Пробуем пинговать с внешки внешние IP-адреса провайдеров
Каждый должен пинговаться
Пробуем ходить с внешки на IP-адреса провайдеров по порту 80
По каждому провайдеру проходим до веб-сервера '''192.168.1.50'''

Текущая версия на 15:07, 12 февраля 2024


Входные данные

  • Имеется 2 провайдера, у обоих есть статический внешний IP-адрес
  • ether3-wan1 - интерфейс ISP1
  • ether4-wan2 - интерфейс ISP2
  • 193.34.13.97 - шлюз ISP1
  • 172.18.0.129 - шлюз ISP2

Задача

  • Необходимо чтобы сам маршрутизатор отвечал (например на ICMP запрос на внешний провайдерский IP-адрес) во внешку по тому провайдеру, по которому запрос пришел
  • Необходимо чтобы при подключении с внешнего провайдерского интерфейса до внешнего IP-адреса любого из 2-х провайдеров, мы могли подключиться до внутреннего сервера через проброс dst-nst

Настройка

Актуальная рабочая конфигурация

https://mum.mikrotik.com/presentations/RU18M/presentation_6157_1554717194.pdf

Создаем группу WAN интерфейсов

/interface list

add name=-WAN-

/interface list member

add interface=ether3-wan1 list=-WAN-

add interface=ether4-wan2 list=-WAN-

SRC-NAT на группе WAN интерфейсов

/ip firewall nat

add action=masquerade chain=srcnat comment=NAT_masquerade_wan-all out-interface-list=-WAN-

Маркировка входящих соединений в INPUT самого микрота (например, WINBOX)

/ip firewall mangle

add action=mark-connection chain=input comment=conn-input-from-ISP1 in-interface=ether3-wan1 new-connection-mark=conn-input-from-ISP1

add action=mark-connection chain=input comment=conn-input-from-ISP2 in-interface=ether4-wan2 new-connection-mark=conn-input-from-ISP2

Маркировка входящих соединений DST-NAT (для пробросов порта на хост в локальной сети)

/ip firewall mangle

add action=mark-connection chain=prerouting comment=conn-input-from-ISP1 connection-mark=no-mark in-interface=ether3-wan1 new-connection-mark=conn-input-from-ISP1 passthrough=yes

add action=mark-connection chain=prerouting comment=conn-input-from-ISP2 connection-mark=no-mark in-interface=ether4-wan2 new-connection-mark=conn-input-from-ISP2 passthrough=yes

Маркировка соответствующих каждому провайдеру маршрутов на основании маркированных входящих соединений

/ip firewall mangle

add action=mark-routing chain=prerouting comment=from-ISP1-route-via-ISP1 connection-mark=conn-input-from-ISP1 in-interface-list=!-WAN- new-routing-mark=from-ISP1-route-via-ISP1 passthrough=no

add action=mark-routing chain=prerouting comment=from-ISP2-route-via-ISP2 connection-mark=conn-input-from-ISP2 in-interface-list=!-WAN- new-routing-mark=from-ISP2-route-via-ISP2 passthrough=no

Маршрут исходящий для соответствующего входящего соединения через соответствующего провайдера (в WAN интерфейс пришел - через шлюз, соответствующий WAN интерфейсу, вышел)

/ip firewall mangle

add action=mark-routing chain=output comment=from-ISP1-route-via-ISP1 connection-mark=conn-input-from-ISP1 new-routing-mark=from-ISP1-route-via-ISP1

add action=mark-routing chain=output comment=from-ISP2-route-via-ISP2 connection-mark=conn-input-from-ISP2 new-routing-mark=from-ISP2-route-via-ISP2

Говорим системе, что соединения с определенной маркировкой отправлять через соответствующий шлюз

/ip route

add comment=from-ISP1-route-via-ISP1 distance=1 gateway=$gw1 routing-mark=from-ISP1-route-via-ISP1

add comment=from-ISP2-route-via-ISP2 distance=1 gateway=$gw2 routing-mark=from-ISP2-route-via-ISP2

Готово

Пробуем пинговать с внешки внешние IP-адреса провайдеров

Каждый должен пинговаться

Пробуем ходить с внешки на IP-адреса провайдеров по порту 80

По каждому провайдеру проходим до веб-сервера 192.168.1.50

НЕ ИСПОЛЬЗОВАТЬ! Устаревший мануал. С ним не работает проброс DST-NAT по RDP

Переменные:

:global ifaceWan1 "ether3-wan1";

:global ifaceWan2 "ether4-wan2";

:global gw1 "193.34.13.97";

:global gw2 "172.18.0.129";

Маркируем соединения, приходящие в INPUT микротика с интерфейса каждого провайдера (например ICMP запросы на сам микрот с внешки)

/ip firewall mangle

add action=mark-connection chain=input comment=conn-input-from-ISP1 in-interface=$ifaceWan1 new-connection-mark=conn-input-from-ISP1 passthrough=yes

add action=mark-connection chain=input comment=conn-input-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-input-from-ISP2 passthrough=yes

Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера (это маркировка для INPUT)

/ip firewall mangle

add action=mark-routing chain=output comment=from-ISP1-route-via-ISP1 connection-mark=conn-input-from-ISP1 new-routing-mark=from-ISP1-route-via-ISP1 passthrough=no

add action=mark-routing chain=output comment=from-ISP2-route-via-ISP2 connection-mark=conn-input-from-ISP2 new-routing-mark=from-ISP2-route-via-ISP2 passthrough=no

Маркируем соединения, приходящие в FORWARD микротика с интерфейса каждого провайдера (например запрос до локального веб-сервера 192.168.1.50)

/ip firewall mangle

add action=mark-connection chain=forward comment=conn-forward-from-ISP1 in-interface=$ifaceWan1 new-connection-mark=conn-forward-from-ISP1 passthrough=yes connection-nat-state=dstnat

add action=mark-connection chain=forward comment=conn-forward-from-ISP2 in-interface=$ifaceWan2 new-connection-mark=conn-forward-from-ISP2 passthrough=yes connection-nat-state=dstnat

Маркируем соответствующим routing маркером соединения, которые пришли из соответствующего провайдера (это маркировка для DST-NAT, то есть для проброса портов с любого провайдера на локальную машину)

/ip firewall mangle

add action=mark-routing chain=prerouting comment=from-ISP1-route-via-ISP1 connection-mark=conn-forward-from-ISP1 in-interface=bridge-local new-routing-mark=from-ISP1-route-via-ISP1 passthrough=no

add action=mark-routing chain=prerouting comment=from-ISP2-route-via-ISP2 connection-mark=conn-forward-from-ISP2 in-interface=bridge-local new-routing-mark=from-ISP2-route-via-ISP2 passthrough=no

Говорим системе, что соединения с определенной маркировкой отправлять через соответствующий шлюз

/ip route

add comment=from-ISP1-route-via-ISP1 distance=1 gateway=$gw1 routing-mark=from-ISP1-route-via-ISP1

add comment=from-ISP2-route-via-ISP2 distance=1 gateway=$gw2 routing-mark=from-ISP2-route-via-ISP2