¿Cómo forzar que el nombre de host se resuelva en una dirección local en lugar de una dirección pública?

¿Cómo forzar que el nombre de host se resuelva en una dirección local en lugar de una dirección pública?

Tengo un servidor Linux en mi red doméstica que utiliza DNS dinámico proporcionado pornoip.comy un nombre de host correspondiente "xxxx.hopto.org". Desde fuera de mi red, digamos, en una cafetería, puedo usar este nombre de host para hacer ping o SSH a mi servidor. Sin embargo, cuando estoy en mi red local, no puedo hacer ping o SSH en mi servidor usando el nombre de host. La ejecución hostmuestra que el nombre de host de mi servidor se resuelve en su IP pública, que es la misma que la IP pública de mi máquina:

MacBook-Air:~ user$ host xxxx.hopto.org
xxxx.hopto.org has address 47.6.24.149
MacBook-Air:~ user$ curl ipinfo.io/ip
47.6.24.149

Mi experiencia realmente no incluye conceptos de redes, pero puedo ver dos posibles soluciones a este problema:

  1. Fuerzo que el nombre de host se resuelva en la dirección IP local (estática) cuando estoy en la misma red que el servidor.
  2. De alguna manera, déle a mi servidor su propia dirección IP pública.

¿Cómo haría uno (o ambos) de estos? ¿Existe otra solución que sería más fácil/mejor? Gracias por tu ayuda.

Respuesta1

En primer lugar, como AFH mencionó en un comentario, es posible que no necesite hacer esto en absoluto si simplemente desea acceder a sus propios servicios utilizando su dirección IP pública. Lo que necesita es habilitar NAT de horquilla (también conocido como bucle invertido NAT) en su enrutador (u obtener un enrutador que lo admita) para que se pueda acceder a su propia IP pública desde dentro de su red. Esta es la mejor solución, si su infraestructura de red puede manejarla/configurarla (cualquier cosa que no sea de consumo debería poder hacerlo fácilmente).

Ahora bien, si aún desea utilizar el enfoque DNS, el término técnico esDNS de horizonte dividido, donde desea una respuesta DNS diferente según la dirección de origen de la solicitud. Desafortunadamente, la mayoría de los servidores DNS dinámicos no ofrecen esto y no tienes el nivel de control necesario. Entonces terminas con dos posibilidades:

  • Configure un servidor DNS autorizado personalizado para su dominio en un servidor accesible públicamente (por ejemplo, un VPS), o
  • Configure un reenviador de DNS exclusivamente dentro de su red local (muy parecido al integrado en la mayoría de los enrutadores de consumo)

El segundo enfoque probablemente sea más adecuado para usted, pero requiere que configure su servidor DHCP (probablemente en su enrutador) para configurar el reenviador DNS como solucionador.

Básicamente:

  1. Instalardnsmasq(El método depende del sistema operativo de su servidor)
  2. Configure DHCP para que apunte al servidor dnsmasq como su solucionador
  3. Configure el servidor en el que está instalado dnsmasq para resolver la dirección internamente, por ejemplo/etc/hosts en el servidor

Este enfoque significa:

  • Los clientes externos obtienen la IP pública directamente del proveedor de DNS dinámico
  • Los clientes internos acceden a dnsmasq
    • Si solicitan un host público normal, se reenvían a un servidor ascendente (por ejemplo, el servidor DNS del ISP) como de costumbre.
    • Si solicitan uno de los hosts internos que ha configurado, obtienen una respuesta local; esto solo sucede cuando el cliente está dentro de su red local.

Alternativamente, puede utilizar un servidor DNS con más funciones (como bind9) que pueda dividir el horizonte de forma nativa.

Respuesta2

Puede agregarlo al /etc/hostsarchivo, pero sugeriría un apodo para no estropear la resolución desde fuera de su red. Entonces algo como lo siguiente en /etc/hosts:

#internal IP of server       #nickname
192.168.0.24                     hopto.local

Ahora hopto.localse resolverá en la dirección local del servidor.

Para obtener más información sobre /etc/hostsconsulte estopágina de manual

¡Buena suerte!

información relacionada