У меня роутер hEX Mikrotik, заводские настройки по умолчанию, последняя прошивка.
По умолчанию он поставляется с мостом от eth2 к eth5 и eth1 в качестве порта «WAN», плюс несколько правил межсетевого экрана. По умолчанию мостовая сеть 192.168.0.0/24.
У меня есть сервер (192.168.0.96) с HTTP-службой, прослушивающей порт 9090, подключенный к одному из мостовых интерфейсов Ethernet. Фиксированный IP со статической арендой DHCP.
Если я следую любому из примеров / руководств по переадресации портов, они упоминают:
/ip firewall nat
add chain=dstnat dst-address=10.42.0.2 protocol=tcp dst-port=9090 action=dst-nat to-address=192.168.0.96 to-port=9090
add chain=srcnat out-interface=WAN action=masquerade
Где dst-address = 10.42.0.2 - это публичный адрес из WAN, а 192.168.0.96 - это внутренний адрес сервера, на который мы хотим перенаправить. Порт, используемый в этом примере, соответствует отображению 1: 1, то есть поступает с 9090 и перенаправляется на порт 9090. Я также видел варианты, в которых вместо dst-address указывается in-interface.
Это вообще не работает. Если я настрою правило NAT для регистрации, оно регистрирует следующее:
dstnat: in: ether1 out: (unknown 0), src-mac ab: cd: f1: ab: cd: f2, proto TCP (SYN), 10.42.0.1:58940->10.42.0.2:9090, len 60
Как будто он не может разрешить адрес назначения. Я вижу, как в правиле увеличивается счетчик пакетов, но на это ничего не реагирует.
Я просто сбросил Mikrotik hEX до заводских настроек, добавил статическую аренду, добавил правило dst-nat и ничего больше. В каждом примере, который я читал, ничего не упоминается о том, чтобы делать что-либо еще с настройками по умолчанию (дополнительные правила, удаление существующих и т. Д.). Все они просто упоминают добавление правила переадресации и, самое большее, правила маскарада.
Я могу легко запросить службу HTTP на порту 9090 с компьютера, который также подключен к любому из интерфейсов Ethernet с мостовым подключением (все они находятся в сети 192.168.0.0/24).
Чего еще может не хватать?
РЕДАКТИРОВАТЬ: отредактированы детали вопроса, чтобы они соответствовали конфигурации, которая у меня есть сейчас, после того, как я попробовал больше вещей и изменил сети.
Еще я удалил ether5 с моста и настроил его отдельно в собственной подсети, чтобы избежать сбоев и невозможности доступа к панели администратора маршрутизатора.
У меня нет реальной глобальной сети, чтобы проверить это прямо сейчас, поэтому я настраиваю статический адрес на ether1 (10.42.0.2) и подключаю к нему Raspberry Pi с адресом 10.42.0.1, а затем выдаю
wget http://10.42.0.2:9090 Подключение к 10.42.0.2:9090 ...
Он остается там навсегда. Выполнение этого изнутри мостовой сети маршрутизатора работает нормально (скажем, запрос от 192.168.0.99 до 192.168.0.96:9090). Выполнение этого извне / ether1 через правило NAT ничего не делает, как я описал. Счетчики растут, но пересылки не происходит.
Вот экспорт:
/ ip dhcp-сервер
добавить отключено = нет интерфейса = имя моста = dhcp-мост
/ IP профиль точки доступа
установить [найти по умолчанию = да] html-directory = flash / hotspot
/ IP пул
добавить комментарий = "пул администратора" name = диапазон пула-администратора = 192.168.3.2
/ ip dhcp-сервер
добавить пул адресов = администратор пула отключен = нет интерфейса = время аренды ether5 = 5 мин имя = dhcp-admin
/айпи адрес
добавить адрес = 192.168.0.1 / 24 комментарий = адрес-мост интерфейс = мост сеть = 192.168.0.0
добавить адрес = 10.42.0.2 / 24 interface = ether1 network = 10.42.0.0
добавить адрес = 192.168.3.1 / 24 комментарий = адрес-админ интерфейс = сеть ether5 = 192.168.3.0
/ ip dhcp-клиент
добавить комментарий = defconf dhcp-options = hostname, clientid interface = ether1
/ ip аренда dhcp-сервера
добавить адрес = 192.168.0.96 mac-address = A1: B1: D1: F1: AA: BB server = dhcp-bridge
добавить адрес = 192.168.0.99 mac-адрес = A2: B2: D2: F2: AA: BB server = dhcp-bridge
добавить адрес = 192.168.0.98 mac-адрес = A3: B3: D3: F3: AA: BB server = dhcp-bridge
/ ip сеть dhcp-сервера
добавить адрес = 10.42.0.0 / 24 шлюз = 10.42.0.1 сетевая маска = 24
добавить адрес = 192.168.0.0 / 24 комментарий = шлюз сетевого моста = 192.168.0.1 маска сети = 24
добавить адрес = 192.168.3.0 / 24 comment = network-admin dns-none = yes gateway = 192.168.3.1 netmask = 24
/ IP DNS
установить allow-remote-requests = да
/ ip dns static
добавить адрес = 192.168.0.1 имя = router.lan
/ ip настройки обнаружения соседа
установить список-интерфейс-обнаружение = LAN
/ ip фильтр межсетевого экрана
добавить действие = принять цепочку = пересылать dst-port = 9090 список-интерфейсов = протокол WAN = tcp src-port = ""
добавить действие = принять цепочку = входной комментарий = "defconf: принять установленное, связанное, неотслеживаемое" состояние соединения = установлено, связанное, неотслеживаемое
add action = drop chain = input comment = "defconf: drop invalid" состояние соединения = недопустимое
добавить действие = принять цепочку = входной комментарий = "defconf: принять ICMP" протокол = icmp
add action = drop chain = input comment = "defconf: отбросить все, что не поступает из LAN" in-interface-list =! LAN
добавить действие = accept chain = forward comment = "defconf: accept in ipsec policy" ipsec-policy = in, ipsec
добавить действие = accept chain = forward comment = "defconf: принять политику ipsec" ipsec-policy = out, ipsec
добавить действие = цепочка соединений fasttrack = forward comment = "defconf: fasttrack" состояние соединения = установлено, связанное
добавить действие = принять цепочку = вперед комментарий = "defconf: принять установленное, связанное, неотслеживаемое" состояние соединения = установлено, связано, не отслеживается
add action = drop chain = forward comment = "defconf: drop invalid" состояние соединения = недопустимое
add action = drop chain = forward comment = "defconf: отбросить все из WAN без DSTNATed" connection-nat-state =! dstnat-состояния-соединения = new in-interface-list = WAN
/ IP брандмауэр нат
добавить действие = dst-nat chain = dstnat dst-port = 9090 in-interface = ether1 log = yes protocol = tcp to-addresses = 192.168.0.96 to-ports = 9090
add action = masquerade chain = srcnat comment = "defconf: masquerade" log = yes out-interface-list = WAN