¿Cómo se depuran las redes domésticas rotas?

2

Tengo una red doméstica pequeña y tengo problemas para acceder a una de las computadoras de esa red. La red doméstica tiene NAT, y he configurado un reenvío de puertos y un DNS dinámico.

  • ryese sienta en mi red doméstica. El puerto público 2222 de mi enrutador se reenvía al ryepuerto 22.
  • sorghumse sienta en mi red doméstica. El puerto público 22 se reenvía al sorghumpuerto 22.
  • teff se sienta en una red externa.

Ahora presento el siguiente escenario extraño:

  1. Puedo usar SSH de teffa dmwit.duckdns.org:2222, por lo que creo que el DNS dinámico funciona correctamente, el reenvío de puertos a ryefunciona correctamente y ryeacepta conexiones de otras computadoras correctamente (es decir, no bloquea las cosas en el nivel del firewall).
  2. Puedo usar SSH de ryea dmwit.duckdns.org:22, así que creo que el reenvío de puertos sorghumfunciona correctamente y sorghumacepta conexiones de otras computadoras correctamente.
  3. Desde ryepedirle a Netcat que se conecte a un puerto sorghumque está siendo bloqueado por sorghumlos resultados del firewall en "No hay ruta al host", mientras que teffpedirle a Netcat que se conecte a los dmwit.duckdns.org:22resultados en "Conexión expiró", por lo que creo que sorghumel firewall no es bloqueando esta conexión
  4. No puedo SSH de teffa sorghum(la conexión agota el tiempo de espera).

Esto me parece un poco desconcertante; La evidencia sugiere que cada pieza de la cadena funciona correctamente, pero toda la cadena está rota. Tengo dos preguntas concretas que no están relacionadas entre sí:

  1. ¿Cómo se puede depurar más este tipo de cosas? ¿Qué herramientas puedo usar para encontrar más detalles sobre lo que está mal?
  2. ¿Cómo lo arreglo para que pueda pasar de teff a sorgo?

EDITAR: He encontrado una pregunta vagamente relacionada que sugería probar Traceroute. Encendido teffpuedo ver una diferencia significativa entre las salidas de Traceroute para los puertos 22 y 2222:

% traceroute -p 2222 -T dmwit.duckdns.org
traceroute to dmwit.duckdns.org (75.164.159.92), 30 hops max, 60 byte packets
 1  gw-40.galois.com (192.168.40.1)  13.722 ms  13.723 ms  17.016 ms
 2  66.162.129.25 (66.162.129.25)  17.957 ms  18.106 ms  18.289 ms
 3  64-129-238-66.static.twtelecom.net (64.129.238.66)  18.949 ms sea2-pr2-xe-0-3-0-0.us.twtelecom.net (66.192.243.34)  19.250 ms 64-129-238-66.static.twtelecom.net (64.129.238.66)  19.242 ms
 4  64.132.69.2 (64.132.69.2)  20.052 ms  20.291 ms  20.284 ms
 5  ptld-agw1.inet.qwest.net (67.14.49.2)  22.658 ms  22.942 ms  22.932 ms
 6  207.225.86.146 (207.225.86.146)  22.924 ms  8.583 ms  8.591 ms
 7  * * *
 8  75-164-159-92.ptld.qwest.net (75.164.159.92)  31.056 ms  29.508 ms  29.714 ms
% traceroute -p 22 -T dmwit.duckdns.org -m 60
traceroute to dmwit.duckdns.org (75.164.159.92), 60 hops max, 60 byte packets
 1  gw-40.galois.com (192.168.40.1)  1.660 ms  5.667 ms  5.912 ms
 2  66.162.129.25 (66.162.129.25)  5.901 ms  12.563 ms  12.555 ms
 3  64-129-238-66.static.twtelecom.net (64.129.238.66)  14.227 ms sea2-pr2-xe-0-3-0-0.us.twtelecom.net (66.192.243.34)  12.796 ms  12.787 ms
 4  64.132.69.2 (64.132.69.2)  12.778 ms  12.769 ms  12.762 ms
 5  ptld-agw1.inet.qwest.net (67.14.49.2)  13.955 ms  13.946 ms  13.937 ms
 6  207.225.86.146 (207.225.86.146)  13.931 ms  10.297 ms  10.256 ms
 7  * * *
 8  * * *
 9  * * *
10  * * *
11  * * *
<snip>

La segunda continúa así durante 20 líneas más (y continúa más si aumenta el conteo máximo de saltos). No estoy 100% seguro de cómo interpretar esto, así que agregue una tercera pregunta:

  1. ¿Qué significa esta salida de traceroute?
Daniel Wagner
fuente
El traceroute es un arenque rojo, creo. En resumen, puede enviar ssh a la IP pública del sorgo desde dentro de su red, pero no desde afuera. Esto es interesante ya que generalmente es lo contrario. Parece que el puerto 22 está bloqueado en la interfaz externa. Cuando intentas esto desde adentro, no aplica el bloqueo a medida que ingresas en la interfaz interna. Para confirmar, ¿podría enviar 22222 a 22 para sorgo?
Paul
@Paul Después de agregar un reenvío de puerto para el puerto externo 22222 a los 22 del sorgo, dmwit.duckdns.org:22 y dmwit.duckdns.org:22222 parecen comportarse de manera idéntica desde teff: las conexiones ssh / netcat caducan, y el traceroute imprime tantas * * *líneas como me gustaría pedir.
Daniel Wagner
¿Puedes pasar de centeno a sorgo usando tus direcciones IP de LAN internas? Me gustaría probar que sólo para una comprobación de validez para asegurarse de que SSH está trabajando en el sorgo y sin tener que salir de su red y de nuevo.
jdwfly
@jdwfly El hecho de que pueda pasar de centeno a sorgo usando dyndns es una fuerte evidencia para mí de que SSH está trabajando en sorgo. Sin embargo, para completar, acabo de confirmar que usar la IP interna en lugar de un DNS también funciona bien para pasar de centeno a sorgo.
Daniel Wagner
Gracias a todas las respuestas agregadas desde que se ofreció la recompensa. Fue difícil elegir un ganador, ya que ninguno hasta ahora ha resuelto mi problema (debido en parte, creo, al tiempo limitado que terminé teniendo que depurar esto). La respuesta que elegí abordaba las tres preguntas y sugería las formas más diferentes de depurar la red, pero todas las respuestas fueron útiles a su manera. Si tuviera los puntos, habría abierto recompensas adicionales para reconocer formalmente sus esfuerzos.
Daniel Wagner

Respuestas:

1

¿Has verificado que no hay un bloqueo SSH saliente en el extremo de teff? Demostró que podía conectarse a un sistema doméstico en el puerto 2222 desde teff, pero podría haber un bloqueo saliente en el puerto 22. Si no ha verificado que son posibles las conexiones salientes del puerto 22 desde teff, intentessh github.comde teff. Debería ver un mensaje sobre la clave de github.com. ¿Ha verificado que tiene una regla de firewall adecuada en el punto de demarcación entre la red externa y su red doméstica interna que permitirá una conexión entrante desde la dirección IP de teff en el puerto 22? Veo que dmwit.duckdns.org no está abierto a la conectividad de Internet en el puerto 22 y parece que solo ha verificado que se puede acceder al sorgo desde una dirección de red doméstica interna, lo que no necesariamente significa que haya una regla de firewall adecuada eso permitirá conexiones del puerto 22 desde otro lugar. Mire el registro del cortafuegos en sorgo; ¿ves algo en el registro que indique un intento de conexión al puerto 22 desde teff? Puede intentar una conexión desde un sistema que no sea teff utilizando la prueba de conectividad del servidor SSH y luego examine el registro del cortafuegos de sorgo para ver si se registró alguna actividad, si el sorgo debería ser accesible al menos en el puerto 22 desde Internet, incluso si el cortafuegos está bloqueando la conexión.

punto de luna
fuente
Gracias por las sugerencias! Puedo pasar de teff a github, al menos en la medida en que github lo permite ("Te has autenticado con éxito, pero GitHub no proporciona acceso de shell"). Veré los registros del cortafuegos en breve.
Daniel Wagner
@Daniel Wagner, revise el registro de firewall del sorgo; si no está registrando conexiones al puerto 22, active el registro y si hay un enrutador / firewall en el borde de su red doméstica entre sorgo y teff, si proporciona algún mecanismo de registro que podría ayudar, active el registro allí también . Desafortunadamente, muchos enrutadores SOHO tienen una capacidad de registro limitada o nula, pero si puede confirmar que el dispositivo está viendo el intento de conexión del puerto 22 desde teff, es un dato útil.
luna
Parece que firewalld no registra las conexiones aceptadas / rechazadas, por lo que no fue muy útil. Hice clic en un botón para activar el inicio de sesión en mi enrutador ... y mi conexión remota a mi red doméstica se interrumpió rápidamente. = PI hará más pruebas una vez que haya podido ir a casa, arreglar lo que hice en el enrutador y volver a una red externa.
Daniel Wagner
Bien, actualización rápida: parece que desde el registro, mis conexiones de teff al menos están llegando al enrutador, lo cual es una señal prometedora. Eso parece una buena evidencia de que algo en el sorgo está causando el problema. Traté de apagar el cortafuegos del sorgo por completo brevemente, lo que no pareció ayudar. A continuación, buscaré posibles problemas con SELinux, aunque me he quedado sin tiempo para solucionar esto por hoy.
Daniel Wagner
@DanielWagner nota: si no ve nada tcpdumpencendido sorghum(como lo ve rye), indica que el problema está antes sorghum (es decir, en el enrutador de su casa). Sin embargo, asegúrese de haber especificado la interfaz de red correcta si tiene varias de ellas (p. Ej. tcpdump -i eth0)
Matija Nalis
1

Intente configurar sshd para escuchar en otro puerto que no sea el puerto 22 en sorgo (> 1024). Esto puede ser algo específico del proveedor, ya sea en el lado de salida de teffs o en el lado de entrada de centeno / sorgo. Algunos proveedores bloquean ciertos puertos reservados, un buen ejemplo sería el puerto 25 smtp porque ningún proveedor disfruta lidiando con los spammers que escanean sus redes en busca de relés abiertos. De todos modos, estoy convencido de que esta puede ser la razón, el puerto se muestra como filtrado en una prueba de sincronización básica, lo que probablemente significa que podría estar siendo filtrado a nivel de proveedor en el lado de centeno / sorgo (ingreso)

"Filtrado significa que estos puertos se identificaron como detenidos por algo a lo largo de la ruta de red. Podría ser un firewall en el destino, pero también podría estar filtrando reglas en cualquiera de los hosts intermedios entre la auditoría y las máquinas de destino".

Pude confirmar el mismo comportamiento de filtrado con múltiples direcciones dentro de la misma red. Sin embargo, sugiero leer las políticas de AUP de su proveedor de servicios, ya que es probable que se le restrinja el uso del puerto predeterminado. Buena suerte señor.

NotAdmin Dave
fuente
1
¡Gracias por la sugerencia! Cambié del reenvío del puerto externo 22 al reenvío del puerto externo 2223 (pero aún al puerto interno 22); después de este cambio, el puerto 2223 no parece comportarse de manera diferente al puerto 22 antes de la prueba.
Daniel Wagner
1
  1. usaría herramientas como tcpdump (8) y / o wireshark (1) para ver a qué paquetes llegan y salen los hosts problemáticos. Entonces, si ve que llega el paquete TCP SYN, pero no se envía ninguna respuesta, eso se debe al firewall local (o enrutamiento). Pero si no ve que llega el paquete TCP SYN, significa que algún firewall lo descartó antes de llegar a su host. Por ejemplo, la configuración de firewall predeterminada de su enrutador o su ISP que considera que la ejecución de servicios en sus hosts viola sus ToS y / o riesgos de seguridad.
  2. Sugeriría cambiar el puerto público 22a, por ejemplo 2223. Si funciona, significa que el firewall del ISP o su enrutador doméstico bloquea el puerto 22.
  3. significa que el enrutador en el salto 6,7 u 8 (es ambiguo debido al enrutador silencioso en 7) está dejando caer paquetes con el puerto de destino 22 (y no aquellos con el puerto 2222). Nuevamente, podría ser el firewall de su ISP o el firewall de su enrutador doméstico o la configuración local (por ejemplo, el enrutador podría reservar el puerto 22 para sí mismo para la administración remota y desconectarlo desde puertos externos). Sospecho que el enrutador local. Nuevamente, lo más fácil de verificar es cambiar el puerto público a 2223 parasorghum
Matija Nalis
fuente
Gracias por las sugerencias! tcpdump me parece que muestra que ninguna solicitud de conexión está llegando hasta el final sorghum. También reenvié el puerto externo 2223 en lugar del puerto externo 22, pero eso no pareció hacer ninguna diferencia: las conexiones ssh al puerto 2223 tefffallaron exactamente de la misma manera.
Daniel Wagner
@DanielWagner tcpdump mostrará los paquetes "en el cable" antes de que lleguen al firewall o aplicación local, por lo que si no ve nada en tcpdump, el enrutador no envió nada allí. ryey sorghumdebería comportarse igual ahora, por lo que indica que su enrutador doméstico no está configurado exactamente igual para ambos. Tal vez uno es declarado host DMZ o hay alguna configuración restante (firewall MAC o similar). Quizás borrar la configuración del enrutador e ingresar redirecciones nuevamente debería ayudarlo a realizar configuraciones idénticas para ambos hosts.
Matija Nalis