Вопрос или проблема
Я запускаю контейнер homeassistant на Mac Mini (фаерволы отключены). Я добавил переадресацию портов, но не могу подключиться к нему извне. Внутри все работает отлично. В логах я нашел следующую ошибку:
dstnat: in:ether1 out:(unknown 0), src-mac XX:XX:XX:XX:XX:XX, proto TCP (SYN), 174.238.224.109:13647->XX.XXX.XX.XX1:8888, len 64
Вот моя конфигурация
/ip firewall nat print
Флаги: X - отключено, I - недействительно, D - динамический
0 ;;; defconf: masquerade
chain=srcnat action=masquerade out-interface-list=WAN ipsec-policy=out,none
1 chain=dstnat action=dst-nat to-addresses=192.168.68.3 to-ports=80 protocol=tcp in-interface-list=WAN dst-port=9999 log=no log-prefix=""
2 chain=dstnat action=dst-nat to-addresses=192.168.68.3 to-ports=8081 protocol=tcp in-interface-list=WAN dst-port=8081 log=no log-prefix=""
3 chain=dstnat action=dst-nat to-addresses=192.168.68.3 to-ports=8082 protocol=tcp in-interface-list=WAN dst-port=8082 log=no log-prefix=""
4 chain=dstnat action=dst-nat to-addresses=192.168.68.3 to-ports=554 protocol=tcp in-interface-list=WAN dst-port=554 log=no log-prefix=""
5 chain=dstnat action=dst-nat to-addresses=192.168.68.5 to-ports=8123 protocol=tcp dst-port=8888 log=yes log-prefix=""
6 chain=srcnat action=masquerade out-interface=ether1
7 chain=srcnat action=masquerade out-interface=ether1
/ip firewall filter print
Флаги: X - отключено, I - недействительно, D - динамический
0 D ;;; специальное фиктивное правило для отображения счетчиков fasttrack
chain=forward action=passthrough
1 ;;; defconf: accept established,related,untracked
chain=input action=accept connection-state=established,related,untracked
2 chain=input action=accept protocol=tcp in-interface-list=WAN dst-port=8888
3 ;;; defconf: drop invalid
chain=input action=drop connection-state=invalid
4 ;;; defconf: accept ICMP
chain=input action=accept protocol=icmp
5 ;;; defconf: accept to local loopback (для CAPsMAN)
chain=input action=accept dst-address=127.0.0.1
6 ;;; defconf: drop all not coming from LAN
chain=input action=drop in-interface-list=!LAN
7 ;;; defconf: accept in ipsec policy
chain=forward action=accept ipsec-policy=in,ipsec
8 ;;; defconf: accept out ipsec policy
chain=forward action=accept ipsec-policy=out,ipsec
9 ;;; defconf: fasttrack
chain=forward action=fasttrack-connection connection-state=established,related
10 ;;; defconf: accept established,related, untracked
chain=forward action=accept connection-state=established,related,untracked
11 ;;; defconf: drop invalid
chain=forward action=drop connection-state=invalid
Ответ или решение
Для решения проблемы с порт-форвардингом на MikroTik, когда внутренние подключение работают, но внешние подключения не проходят, давайте рассмотрим вашу конфигурацию и потенциальные причины.
Анализ конфигурации
-
Правила NAT (dstnat):
- Вы настраиваете правила для перенаправления внешних портов на IP-адреса внутренних устройств. Например, правило 5 настраивает перенаправление для порта 8888:
chain=dstnat action=dst-nat to-addresses=192.168.68.5 to-ports=8123 protocol=tcp dst-port=8888
- Убедитесь, что внутренний IP-адрес 192.168.68.5 действительно соответствует вашему контейнеру Home Assistant и что он работает на порту 8123.
- Вы настраиваете правила для перенаправления внешних портов на IP-адреса внутренних устройств. Например, правило 5 настраивает перенаправление для порта 8888:
-
Правила фильтрации (filter):
- Вы должны удостовериться, что ваше правило для порта 8888 действительно позволяет входящие соединения:
chain=input action=accept protocol=tcp in-interface-list=WAN dst-port=8888
- Это правило действительно, и оно должно пропускать трафик, поэтому оно выглядит корректным.
- Вы должны удостовериться, что ваше правило для порта 8888 действительно позволяет входящие соединения:
-
Проверка интерфейса:
- Проверьте, правильно ли настроена информация об интерфейсе
ether1
. Убедитесь, что это интерфейс, через который ваш MikroTik подключен к интернету.
- Проверьте, правильно ли настроена информация об интерфейсе
Возможные решения
-
Проверка IP-адресов:
- Убедитесь, что ваш внешний IP-адрес, с которого вы пытаетесь подключиться, совпадает с адресом, на который вы перенаправляете трафик. Иногда провайдеры используют NAT или динамические адреса.
-
Настройки маршрутизации:
- Убедитесь, что у вас правильные настройки маршрутизации для трафика, который приходит на ваш MikroTik. Важно, чтобы трафик, приходящий на
ether1
, правильно обрабатывался.
- Убедитесь, что у вас правильные настройки маршрутизации для трафика, который приходит на ваш MikroTik. Важно, чтобы трафик, приходящий на
-
Логи:
- Вы можете включить логирование для вашего правила в
dstnat
, добавивlog=yes
, чтобы лучше понять, обрабатывается ли трафик вашим устройством.
- Вы можете включить логирование для вашего правила в
-
Проверка Firewall:
- Проверьте, чтобы в фильтрах не было других правил, которые могут блокировать трафик. Особенно обратите внимание на правило 6:
chain=input action=drop in-interface-list=!LAN
- Это правило будет блокировать всё, что не приходит из локальной сети. Убедитесь, что всё корректно настроено.
- Проверьте, чтобы в фильтрах не было других правил, которые могут блокировать трафик. Особенно обратите внимание на правило 6:
-
Проверка с помощью других инструментов:
- Попробуйте использовать
telnet
илиnc
(netcat), чтобы протестировать подключение к порту 8888 с внешнего IP-адреса. Это может помочь диагностировать проблему.
- Попробуйте использовать
-
Проверка наличия дополнительных устройствами:
- Иногда дополнительные маршрутизаторы или устройства управления сетью могут конфликтовать с настройками. Убедитесь, что они не блокируют трафик.
Заключение
Если после проверки всех вышеперечисленных параметров проблема не решится, возможно, стоит обратиться в техническую поддержку MikroTik или попробовать обновить прошивку вашего устройства. Удачи в решении вашей проблемы с порт-форвардингом!