Cómo prescindir del hairpin-nat

Pues debes implementar hairpin nat. Es decir, no evitarlo, sino hacerlo.
 
Lo hice y no tira.
1643312803713.png
 
En el manual de tips&tricks tienes otra manera de hacerlo, prueba y me dices si te funciona o no.

Saludos!
 
Funcionando perfectamente.
Me asalta la duda, por que poniendo la list public-ip funciona y con interface in no. ( me gusta aprender)
Gracias
 
Funcionando perfectamente.
Me asalta la duda, por que poniendo la list public-ip funciona y con interface in no. ( me gusta aprender)
Gracias
Pásame la regla que tenías, a ver cómo la hacías (el export del nat completo porfa). A ver si vemos qué falla.

Saludos!
 
Buenas! He estado revisando el post y efectivamente, si en adguard home, en la reescritura de DNS genero la regla hola.synology.me (ddns que tengo con certificado wildcard de lets) me redirecciona perfecto a la ip del NAS con el certificado.

Vale, pero, ahora te presento otro caso que no llego a saber cómo tengo que implementarlo. En mi synology uso un proxy inverso tengo 3 contenedores a los que querría entrar con la misma dirección tanto desde dentro como fuera de la LAN.

Y sería por ej: https://bitwarden.hola.synology.me:443 a http://IPNAS:9999 /// https://jellyfin.hola.synology.me:443 a http://IPNAS:10000 y así

Imagino que en este caso tendría que hacerlo con el mikrotik haciendo un hairpin-nat, no?
 
Buenas! He estado revisando el post y efectivamente, si en adguard home, en la reescritura de DNS genero la regla hola.synology.me (ddns que tengo con certificado wildcard de lets) me redirecciona perfecto a la ip del NAS con el certificado.

Vale, pero, ahora te presento otro caso que no llego a saber cómo tengo que implementarlo. En mi synology uso un proxy inverso tengo 3 contenedores a los que querría entrar con la misma dirección tanto desde dentro como fuera de la LAN.

Y sería por ej: https://bitwarden.hola.synology.me:443 a http://IPNAS:9999 /// https://jellyfin.hola.synology.me:443 a http://IPNAS:10000 y así

Imagino que en este caso tendría que hacerlo con el mikrotik haciendo un hairpin-nat, no?
Si vas a querer entrar desde fuera y dentro con el mismo dominio, mejor implementa hairpin. El DNS de mikrotik sólo sabe relacionar IP y dominio, pero no puertos, así que todo lo que vas a poder hacer es apuntar todos los dominios a la misma IP del nginx. Si sólo vas a tocar la parte de delante del dominio, debería funcionarte. Pero si vas a tratar de discernir por puerto, esa situación no te vale.

Saludos!
 
Vale, pues me voy a mirar la documentación del post tips & tricks que tienes por el foro y a ver si lo consigo.

Muchas gracias!!
 
Buenas a todos,

Para no configurar Hairpin NAT y como todos los servicios que apunta mi dominio van a parar a un proxy inverso (Traefik) dentro de un servidor alojado en la IP 192.168.1.11. He metido la ruta estática tal y como se indica aquí. Los puertos 80 y 443 los tengo abiertos (desde el exterior puedo acceder sin problemas) pero desde la red local no consigo entrar a los servicios del servidor.
Al hacer un ping al dominio, éste lo resuelve con la ip local (por lo que está resolviendo con la configuración estática).

Ya no sé si será problema de configuración del Router o en su defecto es ya tema del proxy inverso que no termina de estar bien su configuración, aunque me extraña que no sepa entrar a través de la ip local.

Mi configuración es:
Código:
# aug/22/2022 12:01:32 by RouterOS 7.3.1
# software id = DTSX-MQAR
#
# model = RB750Gr3
# serial number = CC210F687668
/interface bridge
add admin-mac=DC:2C:6E:5A:8F:25 auto-mac=no comment=defconf name=bridge
/interface vlan
add interface=ether1 name=vlan20-internet vlan-id=20
/interface pppoe-client
add add-default-route=yes disabled=no interface=vlan20-internet name=internet \
    use-peer-dns=yes user=XXXXXXXXX@digi
/interface list
add comment=defconf name=WAN
add comment=defconf name=LAN
/interface wireless security-profiles
set [ find default=yes ] supplicant-identity=MikroTik
/ip pool
add name=dhcp ranges=192.168.1.100-192.168.1.254
/ip dhcp-server
add address-pool=dhcp interface=bridge name=defconf
/port
set 0 name=serial0
/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
/ip neighbor discovery-settings
set discover-interface-list=LAN
/interface list member
add comment=defconf interface=bridge list=LAN
add comment=defconf interface=internet list=WAN
/ip address
add address=192.168.1.1/24 comment=defconf interface=bridge network=\
    192.168.1.0
/ip dhcp-server lease
add address=192.168.1.11 client-id=\
    ff:5d:e2:6c:15:0:2:0:0:ab:11:89:6e:5d:f5:e2:a5:e5:8d mac-address=\
    70:85:C2:25:FC:F4 server=defconf
add address=192.168.1.24 client-id=1:0:5:cd:ce:de:60 mac-address=\
    00:05:CD:CE:DE:60 server=defconf
add address=192.168.1.44 mac-address=98:CD:AC:38:F0:87 server=defconf
add address=192.168.1.2 client-id=1:2c:4d:54:49:8e:90 mac-address=\
    2C:4D:54:49:8E:90 server=defconf
add address=192.168.1.16 client-id=1:98:e7:43:1e:37:a mac-address=\
    98:E7:43:1E:37:0A server=defconf
add address=192.168.1.31 client-id=1:8c:85:90:7:e5:6 mac-address=\
    8C:85:90:07:E5:06 server=defconf
/ip dhcp-server network
add address=192.168.1.0/24 comment=defconf gateway=192.168.1.1 netmask=24
/ip dns
set allow-remote-requests=yes
/ip dns static
add address=192.168.1.1 comment=defconf name=router.lan
add address=192.168.1.11 name=antrox.ovh
/ip 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 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=dst-nat chain=dstnat dst-port=80 in-interface=internet protocol=\
    tcp to-addresses=192.168.1.11 to-ports=80
add action=dst-nat chain=dstnat dst-port=443 in-interface=internet protocol=\
    tcp to-addresses=192.168.1.11 to-ports=443
add action=dst-nat chain=dstnat dst-port=6881 in-interface=internet protocol=\
    tcp to-addresses=192.168.1.11 to-ports=6881
add action=dst-nat chain=dstnat dst-port=995 in-interface=internet protocol=\
    tcp src-address-list="" to-addresses=192.168.1.11 to-ports=22
/ip service
set www port=8880
set www-ssl port=8443
/ipv6 address
add from-pool=pool6 interface=bridge
/ipv6 dhcp-client
add interface=internet pool-name=pool6 request=address,prefix
/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
/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
 
Si usas un proxy reverso, te toca usar por narices hairpin, si la memoria no me falla. Puesto que la petición, para que funcione el proxy reverso, ha de entrar por la IP pública de la conexión.

Saludos!
 
/ip dns static add address=192.168.88.100 name=nas.pericopalotes.com

Genial!

Un crack, @pokoyo, con ello me evito estar escribiendo las direcciones y luego le falla a uno la memoria. Con lo que se aprende aquí...

Pues me ha venido genial ese tip, porque tengo un webserver en el NAS y he visto que ahora el navegador si reconoce el certificado Let's Encrypt que tengo en mis páginas. Gracias!!

S@lu2.

Me pasó lo mismo, creo que nunca le había visto el candadito a mi NAS, vamos, que ni sabía que podría aparecer o_O

Saludos!
 
Hola

Tengo funcionando el DNS para la red interna con todos los subdominios de *.midominio.com.

En el NAT el 443 de internet lo llevo a una IP de un nginx y de aquí ya redirijo a la ip interna y puerto de cada servicio. Para los accesos desde dentro es el DNS quien devuelve la IP para esos mismos subdominios. Hasta aquí todo perfecto, todos los subdominios con su wildcard de letsencrypt.

La duda que me surge ahora es que como estoy accediendo con la misma URL tanto para dentro como para fuera...pues accedo por ssl ya que todo lo tengo por https. No le veo ningún problema nada más que algo estético porque usar ssl para acceder por lan es absurdo...es feo.

Ahora bien, me ha surgido la duda de si por alguna de aquellas me quedara sin internet...seguiría pudiendo navegar por la lan usando esas mismas url? Esto es la gran ventaja frente al hairpin (obliga a ir a inet en cada petición) pero no sé si por el tema del https (y su certificado) es posible.

Cómo lo ves @pokoyo ?
 
Hola

Tengo funcionando el DNS para la red interna con todos los subdominios de *.midominio.com.

En el NAT el 443 de internet lo llevo a una IP de un nginx y de aquí ya redirijo a la ip interna y puerto de cada servicio. Para los accesos desde dentro es el DNS quien devuelve la IP para esos mismos subdominios. Hasta aquí todo perfecto, todos los subdominios con su wildcard de letsencrypt.

La duda que me surge ahora es que como estoy accediendo con la misma URL tanto para dentro como para fuera...pues accedo por ssl ya que todo lo tengo por https. No le veo ningún problema nada más que algo estético porque usar ssl para acceder por lan es absurdo...es feo.

Ahora bien, me ha surgido la duda de si por alguna de aquellas me quedara sin internet...seguiría pudiendo navegar por la lan usando esas mismas url? Esto es la gran ventaja frente al hairpin (obliga a ir a inet en cada petición) pero no sé si por el tema del https (y su certificado) es posible.

Cómo lo ves @pokoyo ?
Si la petición local no está saliendo a internet cuando accedes desde local (no haces hairpin nat), no dependes de ninguna IP pública ni de ningún tipo de validación exterior. La negociación SSL/TLS se producirá a nivel local y se comparará el dominio para el que se solicitó el certificado con el que encuentre instalado, y se validará con una CA pública que también tiene descargada el navegador. Es decir, debería funcionarte sin mayor problema (al menos, en mi cabeza, compila).

Saludos!
 
Arriba