Mikrotik HAIRPIN

Hola buenas, soy nuevo por aquí!! Uno de tantos que han estado deshojando la margarita preguntándose: Mikrotik si... Mikrotik no... Y al final las ganas de cacharrear han podido con el "si no tienes tiempo para meterte en estos fregados!!!". En fin, con ello ando, dándome porrazos, cabreos, alegrías y poco a poco aprendiendo un poco mas de este mundo. Quiero agradecer enormemente el esfuerzo que se hace en este foro, ya que de una manera totalmente desinteresada estáis ayudando a mucha gente a entrar en este mundo. Si no es por la cantidad y calidad de información que se tiene os aseguro que no me hubiera atrevido.
Comentar también que no soy experto en redes, ni me dedico a ellas, si bien es cierto que por circunstancias del trabajo me ha tocado lidiar bastante a menudo con estos temas. Mi intención de primeras es crear la configuración básica que sustituyera mi antiguo router, pero sobre todo comprenderla para, en una segunda instancia, montar una configuración mas compleja, de momento a lo fácil. Al lío:

Siguiendo todas las recomendaciones del foro actualice mi Mikrotik Hap ac3 a la versión 7. Generé la configuración por defecto, lo uní al HGU de O2 en monopuesto, firewall por defecto, y aparentemente todo correcto. En mi red tengo un controlador domótico Home Assistant al cual podía acceder desde casa y desde fuera. Generé el NAT a los puertos 8123 y 443 hacia HA y conseguí el acceso desde fuera de casa. Como en HA se suele usar duckDNS, de momento mantengo que sea HA quien actualice la IP del dominio.
El problema lo tengo al intentar acceder desde dentro de casa a HA, entiendo que debido al HAIRPIN. He montado los masquerade tipo que se recomendaban por aquí y en la documentación de Mikrotik, pero nada. Ni poniéndolos en la primera posición de las reglas de NATeo se genera trafico por ahí. Pero lo que mas extraño me resulta, y ahí ya si me pierdo, es que no entiendo porque si desde mi red hago un xxxxxx.duckdns.org me redirige a la pagina de configuración del router pero si hago un https://xxxx.duckdns.org:8123 no alcanzo HA. Si hago un telnet desde mi red a xxxx.duckdns.org por 443 si responde (no se si HA o la web de Mikrotik) pero por el 8123 no alcanza. ¿Alguna idea de por donde pueden ir los tiros?
 
Postea la config, que lo vemos rápido.

Saludos, y bienvenido al club!
 
Postea la config, que lo vemos rápido.

Saludos, y bienvenido al club!

Postea la config, que lo vemos rápido.

Saludos, y bienvenido al club!

Ahí va la config. Por cierto, ¿hay alguna forma de ocultar los datos sensibles? o todo el mundo los quita a manurrio?


# apr/25/2022 19:56:36 by RouterOS 7.2.1
# software id = xxxxxxxx
#
# model = RBD53iG-5HacD2HnD
# serial number = XXXXXXXXXXXXX
/interface bridge
add admin-mac=2C:C8:1B:A0:AD:CD auto-mac=no comment=defconf name=bridge
/interface wireless
set [ find default-name=wlan1 ] band=2ghz-b/g/n channel-width=20/40mhz-XX \
country=spain disabled=no distance=indoors frequency=auto installation=\
indoor mode=ap-bridge ssid=XXXXXXXXXXXX wireless-protocol=802.11
set [ find default-name=wlan2 ] band=5ghz-a/n/ac channel-width=\
20/40/80mhz-XXXX country=spain disabled=no distance=indoors frequency=\
auto installation=indoor mode=ap-bridge ssid=XXXXXXXXXXXX \
wireless-protocol=802.11
/interface vlan
add interface=ether1 mtu=1492 name=vlan_internet vlan-id=6
/interface pppoe-client
add add-default-route=yes disabled=no interface=ether1 name=pppoe-out1 \
use-peer-dns=yes user=adslppp@telefonicanetpa
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] authentication-types=wpa2-psk eap-methods="" mode=\
dynamic-keys supplicant-identity=MikroTik
/ip pool
add name=dhcp ranges=192.168.88.10-192.168.88.254
add name=vpn ranges=192.168.89.2-192.168.89.255
/ip dhcp-server
add address-pool=dhcp interface=bridge name=defconf
/ppp profile
set *FFFFFFFE local-address=192.168.89.1 remote-address=vpn
/interface bridge port
add bridge=bridge comment=defconf interface=ether2
add bridge=bridge comment=defconf interface=ether3
add bridge=bridge comment=defconf interface=ether4
add bridge=bridge comment=defconf interface=ether5
add bridge=bridge comment=defconf interface=wlan1
add bridge=bridge comment=defconf interface=wlan2
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface l2tp-server server
set enabled=yes use-ipsec=yes
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=ether1 list=WAN
add interface=pppoe-out1 list=WAN
/interface pptp-server server
# PPTP connections are considered unsafe, it is suggested to use a more modern VPN protocol instead
set enabled=yes
/interface sstp-server server
set default-profile=default-encryption enabled=yes
/ip address
add address=192.168.88.1/24 comment=defconf interface=bridge network=\
192.168.88.0
add address=192.168.1.1/24 interface=ether1 network=192.168.1.0
/ip cloud
set ddns-enabled=yes
/ip dhcp-client
add comment=defconf disabled=yes interface=ether1
/ip dhcp-server lease
add address=192.168.88.104 comment="Tuya Led" mac-address=18:69:D8:4C:CA:99 \
server=defconf
add address=192.168.88.101 comment="Broadlink RM" mac-address=\
78:0F:77:17:EA:A9 server=defconf
add address=192.168.88.100 client-id=1:dc:a6:32:a9:cf:9c comment=\
"Home Assistant" mac-address=DC:A6:32:A9:CF:9C server=defconf
add address=192.168.88.102 client-id=1:cc:b1:1a:23:89:21 comment="TV Samsung" \
mac-address=CC:B1:1A:23:89:21 server=defconf
/ip dhcp-server network
add address=192.168.88.0/24 comment=defconf dns-server=192.168.88.1 gateway=\
192.168.88.1
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.88.1 comment=defconf name=router.lan
/ip firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=accept chain=input comment="allow IPsec NAT" dst-port=4500 \
protocol=udp
add action=accept chain=input comment="allow IKE" dst-port=500 protocol=udp
add action=accept chain=input comment="allow l2tp" dst-port=1701 protocol=udp
add action=accept chain=input comment="allow pptp" dst-port=1723 protocol=tcp
add action=accept chain=input comment="allow sstp" dst-port=443 protocol=tcp
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMP" protocol=icmp
add action=accept chain=input comment=\
"defconf: accept to local loopback (for CAPsMAN)" dst-address=127.0.0.1
add action=drop chain=input comment="defconf: drop all not coming from LAN" \
in-interface-list=!LAN
add action=accept chain=forward comment="defconf: accept in ipsec policy" \
ipsec-policy=in,ipsec
add action=accept chain=forward comment="defconf: accept out ipsec policy" \
ipsec-policy=out,ipsec
add action=fasttrack-connection chain=forward comment="defconf: fasttrack" \
connection-state=established,related hw-offload=yes
add action=accept chain=forward comment=\
"defconf: accept established,related, untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop all from WAN not DSTNATed" connection-nat-state=!dstnat \
connection-state=new in-interface-list=WAN
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
add action=masquerade chain=srcnat comment="masq. vpn traffic" src-address=\
192.168.89.0/24
add action=dst-nat chain=dstnat comment="NAT Home Assistant 8123 TCP" \
dst-port=8123 in-interface-list=WAN log=yes protocol=tcp src-port="" \
to-addresses=192.168.88.100 to-ports=8123
add action=dst-nat chain=dstnat comment="NAT Home Assistant 8123 UDP" \
dst-port=8123 in-interface-list=WAN log=yes packet-mark="" protocol=udp \
src-port="" to-addresses=192.168.88.100 to-ports=8123
add action=dst-nat chain=dstnat comment="NAT Home Assistant 443 TCP" \
dst-port=443 in-interface-list=WAN log=yes protocol=tcp src-port="" \
to-addresses=192.168.88.100 to-ports=443
add action=dst-nat chain=dstnat comment="NAT Home Assistant 443 UDP" \
dst-port=443 in-interface-list=WAN log=yes protocol=udp src-port="" \
to-addresses=192.168.88.100 to-ports=443
add action=masquerade chain=srcnat comment="NAT LOOPBACK - Home Assistant" \
dst-address=192.168.88.100 dst-port=8123 out-interface-list=LAN protocol=\
tcp src-address=192.168.88.0/24
add action=masquerade chain=srcnat comment="NAT LOOPBACK - Home Assistant" \
dst-address=192.168.88.100 dst-port=8123 log=yes out-interface-list=LAN \
protocol=udp src-address=192.168.88.0/24
add action=masquerade chain=srcnat comment="NAT LOOPBACK - Home Assistant" \
dst-address=192.168.88.100 dst-port=443 log=yes out-interface-list=LAN \
protocol=tcp src-address=192.168.88.0/24
add action=masquerade chain=srcnat comment="NAT LOOPBACK - Home Assistant" \
dst-address=192.168.88.100 dst-port=443 log=yes out-interface-list=LAN \
protocol=udp src-address=192.168.88.0/24
/ipv6 firewall address-list
add address=::/128 comment="defconf: unspecified address" list=bad_ipv6
add address=::1/128 comment="defconf: lo" list=bad_ipv6
add address=fec0::/10 comment="defconf: site-local" list=bad_ipv6
add address=::ffff:0.0.0.0/96 comment="defconf: ipv4-mapped" list=bad_ipv6
add address=::/96 comment="defconf: ipv4 compat" list=bad_ipv6
add address=100::/64 comment="defconf: discard only " list=bad_ipv6
add address=2001:db8::/32 comment="defconf: documentation" list=bad_ipv6
add address=2001:10::/28 comment="defconf: ORCHID" list=bad_ipv6
add address=3ffe::/16 comment="defconf: 6bone" list=bad_ipv6
/ipv6 firewall filter
add action=accept chain=input comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=input comment="defconf: drop invalid" connection-state=\
invalid
add action=accept chain=input comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=input comment="defconf: accept UDP traceroute" port=\
33434-33534 protocol=udp
add action=accept chain=input comment=\
"defconf: accept DHCPv6-Client prefix delegation." dst-port=546 protocol=\
udp src-address=fe80::/10
add action=accept chain=input comment="defconf: accept IKE" dst-port=500,4500 \
protocol=udp
add action=accept chain=input comment="defconf: accept ipsec AH" protocol=\
ipsec-ah
add action=accept chain=input comment="defconf: accept ipsec ESP" protocol=\
ipsec-esp
add action=accept chain=input comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=input comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=\
!LAN
add action=accept chain=forward comment=\
"defconf: accept established,related,untracked" connection-state=\
established,related,untracked
add action=drop chain=forward comment="defconf: drop invalid" \
connection-state=invalid
add action=drop chain=forward comment=\
"defconf: drop packets with bad src ipv6" src-address-list=bad_ipv6
add action=drop chain=forward comment=\
"defconf: drop packets with bad dst ipv6" dst-address-list=bad_ipv6
add action=drop chain=forward comment="defconf: rfc4890 drop hop-limit=1" \
hop-limit=equal:1 protocol=icmpv6
add action=accept chain=forward comment="defconf: accept ICMPv6" protocol=\
icmpv6
add action=accept chain=forward comment="defconf: accept HIP" protocol=139
add action=accept chain=forward comment="defconf: accept IKE" dst-port=\
500,4500 protocol=udp
add action=accept chain=forward comment="defconf: accept ipsec AH" protocol=\
ipsec-ah
add action=accept chain=forward comment="defconf: accept ipsec ESP" protocol=\
ipsec-esp
add action=accept chain=forward comment=\
"defconf: accept all that matches ipsec policy" ipsec-policy=in,ipsec
add action=drop chain=forward comment=\
"defconf: drop everything else not coming from LAN" in-interface-list=\
!LAN
/ppp secret
add name=vpn
/system clock
set time-zone-name=Europe/Madrid
/tool mac-server
set allowed-interface-list=LAN
/tool mac-server mac-winbox
set allowed-interface-list=LAN
 
Te edito el post para ponerlo bonito usando los códigos bb. Así la parte del export la declaramos como código, y no nos salen caritas raras ni esas cosas. En la v7 el código ya va con hide-sensitive por defecto, aunque si tú consideras que hay más cosas sensibles, camufla lo que quieras.

Tienes varias razones por las que esto no funciona. La primera y más obiva: el puerto 443 lo está usando el propio router para el servicio de VPN SSTP. Si no quieres que eso sea así y vas a usar ese puerto en un equipo de dentro de la red, quita esta regla del firewall filter en el chain de input (y deshabilita el servicio de paso):
Código:
/ip firewall filter
add action=accept chain=input comment="allow sstp" dst-port=443 protocol=tcp

El servidor SSTP se habilita al habilitar desde el quick setup el uso de VPN (da de alta pptp, l2tp y sstp, todo de golpe). Yo de ti deshabilitaría también PPTP, es inseguro.
Los servidores los tienes en el menú PPP, cada uno en su botón. Desmarcas el "enabled" del que no uses, y andando.
1650913919202.png


Hecho esto, tendrás el 443 disponible para pasar hacia abajo. Antes de que lo pases, una aclaración:
Ni poniéndolos en la primera posición de las reglas de NATeo se genera trafico por ahí. Pero lo que mas extraño me resulta, y ahí ya si me pierdo, es que no entiendo porque si desde mi red hago un xxxxxx.duckdns.org me redirige a la pagina de configuración del router pero si hago un https://xxxx.duckdns.org:8123 no alcanzo HA. Si hago un telnet desde mi red a xxxx.duckdns.org por 443 si responde (no se si HA o la web de Mikrotik) pero por el 8123 no alcanza. ¿Alguna idea de por donde pueden ir los tiros?
Cuando ponías https://xxxx.duckdns.org llegabas a la página del router porque el router estaba usando ese puerto en input, y se lo quedaba él.
Pero si quieres acceder de manera interna, no necesitas (y créeme, no quieres) abrir el puerto 8123, puesto que ese es el puerto por defecto HTTP del servidor de home assistant, pero no HTTPS (hasta donde he podido leer, corrígeme si me equivoco). Para acceder de manera local, accede a la IP:puerto, por HTTP (es local, da igual que sea inseguro) o crea un alias en el propio DNS de router, tipo esto:
Código:
/ip dns static
add address=192.168.88.100 name=ha.lan

Tal que desde local puedas acceder a http://ha.lan:8123

Ahora, ¿cómo abro el puerto 443 y se lo mando a esa IP, sin morir en el intento ni secuestrar todo tu tráfico https). De la página de mikrotik:
Código:
/ip firewall nat
add action=masquerade chain=srcnat dst-address=192.168.88.100 out-interface=LAN protocol=tcp src-address=192.168.88.0/24
Es decir, todo lo que venga desde mi propia LAN, con origen mi subred y destino un host de la misma, le cambias la IP privada por mi IP pública, tal que parezca que venga de fuera esa petición.

Importante, antes de meter la regla anterior: el NAT trabaja como una escalera con agujeritos. Cuando el tráfico se cuela por un escalón superior, no sigue bajando. Así que, antes de meter esa nueva relga, borra todo el NAT salvo las dos primeras líneas de masquerade que vienen con la configuración por defecto. El resultado de todo tu NAT, debería ser algo así, incluyendo la apertura de puertos y el hairpin nat
Código:
/ip firewall nat
add action=masquerade chain=srcnat comment="defconf: masquerade" \
ipsec-policy=out,none out-interface-list=WAN
add action=masquerade chain=srcnat comment="masq. vpn traffic" src-address=\
192.168.89.0/24
add action=dst-nat chain=dstnat comment="Mapping 443 to HA" \
dst-port=443 in-interface-list=WAN protocol=tcp \
to-addresses=192.168.88.100 to-ports=443
add action=masquerade chain=srcnat comment="Hairpin NAT" \
src-address=192.168.88.0/24 protocol=tcp out-interface=LAN \
dst-address=192.168.88.100

Saludos!
 
Gracias Pocoyo, me acabas de enfocar otra vez.
A ver, por partes, el sstp y pptp, fuera. Y de paso el accept de los puertos 443 y 1723 del firewall también. Y no quito el L2TP porque quiero probarlo antes de pasarme a WireGuard.

En cuanto al NAT de Home Assistant no me explique bien. Se suele abrir el puerto 8123 desde el exterior para acceder a él (navegar). Y el 443 se abre para que se puedan usar algunos servicios.

La realidad es que haciendo el DNS estático que me has comentado se ha solucionado, tanto desde LAN como desde fuera. Y me resulta curioso porque juraría que esta solución la había intentado aplicar sin éxito, algo haría mal.
Código:
/ip dns static
add address=192.168.88.100 name=xxxxx.duckdns.org

En este punto ya he logrado el objetivo, pero quería hacer el hairpin por cabezonería y por aprender. El caso es que tengo la sensación que éste no se está aplicando, ya que no veo que aumente el numero de paquetes en la regla del firewall nat:
Código:
/ip firewall nat
add action=masquerade chain=srcnat dst-address=192.168.88.100 out-interface-list=LAN protocol=tcp src-address=192.168.88.0/24
 
A ver, por partes, yo también:
A ver, por partes, el sstp y pptp, fuera. Y de paso el accept de los puertos 443 y 1723 del firewall también. Y no quito el L2TP porque quiero probarlo antes de pasarme a WireGuard.
Perfecto. En el NAT te tienen que quedar la del 4500/500 para IPSec y la 1701 para L2TP.

En cuanto al NAT de Home Assistant no me explique bien. Se suele abrir el puerto 8123 desde el exterior para acceder a él (navegar). Y el 443 se abre para que se puedan usar algunos servicios.
A ver si alguien con experiencia en la app nos ilumina aquí (yo soy más de pi-hole, no tengo prácticamente domótica en casa). El puerto 8123, por la documentación del chisme, es el puerto donde corre el servidor, y es un puerto NO seguro (http). Ese puerto NO deberías abrirlo, bajo ningún concepto, puesto que todo el acceso que estás haciendo por él es tráfico que viaja en plano, sin cifrar. La solución "rápida" es acceder usando el servicio de L2TP VPN que has montado. Te conectas a la VPN y accedes a http://ha.lan:8123 (dominio local), el cual apunta a tu IP 192.168.1.100.
Pero ahora imaginemos que no, que tú quieres abrir esto vía web, para poder llegar a él desde cualquier lugar, sin necesidad de andar conectándote a una VPN. En ese caso, la opción correcta de hacerlo es meter una solución de proxy reverso, como se detalla en esta guía: https://dummylabs.com/posts/2021-03-13-the-easiest-way-to-https-home-assistant/
Lo que estarías haciendo ahí sería abrir los puertos 80 y 443 (el 80 lo cerrarías tan pronto tenga el certificado SSL de let's encrypt instalado), que ahora los interceptaría un servidor web, el nginx, de manera segura, y le rebotaría esa petición al puerto no seguro del HA, el 8123, puerto no seguro.
Esta solución es ampliamente usada en mil y una historias, y de hecho es la manera "segura" (siempre y cuando tengas el nginx al día y securizado de manera correcta) de exponer un servicio no seguro a internet.

La realidad es que haciendo el DNS estático que me has comentado se ha solucionado, tanto desde LAN como desde fuera. Y me resulta curioso porque juraría que esta solución la había intentado aplicar sin éxito, algo haría mal.
Si quieres usar hairpin, esta regla hay que quitarla. Date cuenta de que con eso que estás haciendo estás impersonando un DNS público, y diciendo: olvídate de la IP que te devuelva el DNS público, la buena es esta que yo te digo. Te recomiendo que, para local, uses una entrada .lan, como la que ves que crea por defecto para el router, tal que llegues al cacharro haciendo http://ha.lan:8123. De esta manera, le dejas trabajar al hairpin nat.

Ahora, ¿cómo implementamos hairpin NAT? Pues manera hay más que orejas. Revisando lo que te pasé, ya sé por qué no te funciona la regla: la documentación del mikrotik está pensado para alguien con IP estática, no dinámica. Cuando tenemos IP dinámica solemos trabajar con el filtro del in-interface=WAN, lo que nos imposibilita aplicar esta regla, puesto que nuestro tráfico vendrá siempre de la LAN. ¿cómo lo solucionamos? Pues si te das una vuelta por este post del foro oficial, verás que hay maneras de lo más variopintas. Yo, te voy a comentar la que más me gusta: modificar el in-interace=WAN por un filtro que resuelva tu IP pública (lo tienes explicado en el manual de los tips & tricks)

Paso 1: hacemos "algo" que resuelva tu IP pública -> metemos el dominio DDNS que nos regala mikrotik, que ya tienes funcionando en IP -> Cloud, en una lista, tal que se resuelva la IP pública de manera dinámica
Código:
/ip firewall address-list add address=[/ip cloud get dns-name] list=public-ip

Paso 2: modificamos la regla de apertura del puerto, en este caso, la del 443 a la IP 192.168.88.100. Donde antes usábamos el filtro in-interface-list=WAN, ahora usamos el filtro dst-address-list=public-ip. La regla quedaría así:
Código:
/ip firewall nat
# ... resto de reglas
add action=dst-nat chain=dstnat comment="Mapping 443 to HA" \
dst-port=443 dst-address-list=public-ip protocol=tcp \
to-addresses=192.168.88.100 to-ports=443

Paso 3: Y, ahora sí, aplicamos el hairpin NAT. Este puede ser tan estricto o tan laxo como queramos, te pongo los dos ejemplos, elige el que quieras:
Estricto (de mi red al servidor concreto, únicamente para el tráfico que viene de mi LAN = bridge y de tipo tcp)
Código:
add action=masquerade chain=srcnat comment="Hairpin NAT Estricto" \
src-address=192.168.88.0/24 protocol=tcp out-interface=bridge \
dst-address=192.168.88.100

Laxo (de mi red a mi red, todo el tráfico)
Código:
add action=masquerade chain=srcnat comment="Hairpin NAT Laxo" \
src-address=192.168.88.0/24 dst-address=192.168.88.0/24

Y, con esto, ahora sí, deberías tener funcionando el hairpin NAT.

Saludos!
 
Mil gracias Pocoyo, ahora si lo he logrado!!

Y vaya cacao te he metido con Home Assistant. A ver es mas sencillo de lo que piensas, a HA se accede por 8123 pero esa conexión va cifrada por certificados SSL de Let's Encrypt, así que en ese sentido el trafico es "seguro" en cuanto a la no visibilidad de los datos.
El puerto 443 se utiliza para otra cosa, integración de Alexa (hablo de memoria porque hace un año que no toco HA), ya que permito que desde los servidores de Amazon accedan por 443 a HA y puedan controlar los dispositivos domóticos que en él se exponen.
Dicho esto, totalmente de acuerdo con la recomendación de usar proxy inverso, es algo que tengo en mente desde hace tiempo; ya conocía el articulo al que haces referencia, pero me gusta mas la idea de usar un nginx no integrado en HA. Sobre el uso de la VPN reconozco que tenía el run run después de leer un articulo tuyo sobre como llevarte la casa encima (o algo así).

En cuanto al Hairpin solo le veo una pega si no lo he entendido mal, y es que para obtener la IP externa se hace uso del dominio DNS que regala Mikrotik, por lo que a fin de cuentas se crea una dependencia a un tercero externo para una gestión que debería ser completamente local. Es algo que siempre procuro evitar. Y mas cuando cacharreando, he visto que puedo ver mi IP pública así:

Código:
/ip address/print proplist=address where interface =pppoe-out1

A ver si saco un ratillo para investigar si es posible cargar la lista con la ip publica sin usar el dominio de Mikrotik.
 
En cuanto al Hairpin solo le veo una pega si no lo he entendido mal, y es que para obtener la IP externa se hace uso del dominio DNS que regala Mikrotik, por lo que a fin de cuentas se crea una dependencia a un tercero externo para una gestión que debería ser completamente local. Es algo que siempre procuro evitar. Y mas cuando cacharreando, he visto que puedo ver mi IP pública así:
Te tocaría tirar de scripting. Si tu conexión es de tipo PPP, es muy sencillo, porque simplemente creándole un perfil nuevo en PPP -> Profile, copia del perfile "deafult", puedes trabajar con los eventos On UP / On Down, para capturar esa IP del IP > Address y meterla en la lista public-ip
1651042820597.png


Otra opción la tienes en el post que te mandé. En lugar de usar el filtro in-interface-list=WAN o dst-address-list=public-ip, puedes usar el dst-address-type=local, y excluir el propio router. Con ella, al apertura de tu puerto sería así, sin dependencia de la public-ip
Código:
/ip firewall nat
# ... resto de reglas
add action=dst-nat chain=dstnat comment="Mapping 443 to HA" \
dst-port=443 dst-address!=192.168.88.1 dst-address-type=local protocol=tcp \
to-addresses=192.168.88.100 to-ports=443

Pero, com te dice el artículo, tiene el pequeño contratiempo de que está pensada para cuando tienes un único segmento de red en el router. Si tienes varios (no sé si es tu caso), la cosa se empieza a complicar, teniendo que jugar de nuevo con una lista de las posibles direcciones a excluir.

Y, si definitivamente vas a abrir el 8123, asegúrate de haber modificad las opciones generales del home-assistant para indicarle que ahora expone un servicio https, y no http (parámetros ssl_certificate /ssl_key). Te dejo un video donde se explica, en el cambio, justo en el minuto que enlazo. Si eso no lo tienes hecho, insisto en no abrir ese puerto, a menos que tengas un reverse proxy delante.


Saludos!
 
¿Cuál es el motivo de crear otro perfil PPP copia de "default" en lugar de usar el "default"?
De hecho, la solución que propones solo me ha funcionado en el PPP "default". Dejo por aquí como lo he resuelto por si a alguien le interesa:

Se crea una nueva lista "public-ip" con comentario "IP-PUBLICA"
Código:
/ip firewall address-list add list=public-ip comment="IP-PUBLICA"

y desde la opción de scripts de PPP/Profile/"default", en el evento OnUp, añado:
Código:
/ip/firewall/address-list/set [find comment="IP-PUBLICA"] address=[/ip address get [find interface="pppoe-out1"] address]

Poniéndome quisquilloso, veo que éste método actualiza la lista antes que [/ip cloud get dns-name], que tarda unos minutillos.

Sobre la configuración de HA, descuida que esa configuración es la mínima que siempre se recomienda y así está configurado. Al menos hasta que tenga claro como quiero segmentar mi red entre domotica, datos, invitados,... Pero esa es otra pelea.

No me cansaré de darte las gracias por tu ayuda Pocoyo!!!
 
¿Cuál es el motivo de crear otro perfil PPP copia de "default" en lugar de usar el "default"?
De hecho, la solución que propones solo me ha funcionado en el PPP "default". Dejo por aquí como lo he resuelto por si a alguien le interesa:

Se crea una nueva lista "public-ip" con comentario "IP-PUBLICA"
Código:
/ip firewall address-list add list=public-ip comment="IP-PUBLICA"

y desde la opción de scripts de PPP/Profile/"default", en el evento OnUp, añado:
Código:
/ip/firewall/address-list/set [find comment="IP-PUBLICA"] address=[/ip address get [find interface="pppoe-out1"] address]

Poniéndome quisquilloso, veo que éste método actualiza la lista antes que [/ip cloud get dns-name], que tarda unos minutillos.

Sobre la configuración de HA, descuida que esa configuración es la mínima que siempre se recomienda y así está configurado. Al menos hasta que tenga claro como quiero segmentar mi red entre domotica, datos, invitados,... Pero esa es otra pelea.

No me cansaré de darte las gracias por tu ayuda Pocoyo!!!
De nada majo. La única razón de crear un perfil distinto para PPP es no perder la configuración por defecto del perfil, que puede que lo use otra conexión, tipo las VPN

Tu solución es buena, si te funciona mejor que la otra, perfecto.

Saludos!
 
Hola amigos,

Una consulta, ¿por qué puede ser que no me aparezca el campo "Dest. Address List típico para meter la address list que he creado para mi IP pública?

Es raro porque en otros mikrotik lo tengo configurado pero aquí no lo veo...

WhatsApp Image 2022-08-04 at 8.42.21 AM.jpeg

Normalmente está justo arriba de Protocol....
 
Hola amigos,

Una consulta, ¿por qué puede ser que no me aparezca el campo "Dest. Address List típico para meter la address list que he creado para mi IP pública?

Es raro porque en otros mikrotik lo tengo configurado pero aquí no lo veo...

Ver el adjunto 97704
Normalmente está justo arriba de Protocol....
Porque no lo tienes actualizado, y en versiones previas esto estaba en la pestaña “Advanced” ¿puede ser?

Saludos!
 
Arriba