sNAT y MASQUERADE: Cómo funciona el NAT en un router/firewall

Поділитися
Вставка
  • Опубліковано 3 січ 2025

КОМЕНТАРІ •

  • @internetuser6602
    @internetuser6602 4 роки тому +1

    6:16 eso sería un DNAT cierto?
    Y otra pregunta, respecto al lo que comentabas sobre el minuto 8:45, ¿cómo sabe el router o sistema Linux cual es la interfaz que encamina hacia Internet para transformar la variable MASQUERADE a la IP de dicha interfaz si tiene conectada varias tarjetas de red?, lo hace basándose en el tipo de IP: si es IP pública o privada?
    P.D. Buena explicación :D

    • @Juncotic
      @Juncotic  4 роки тому +1

      Ante todo gracias por tus palabras!!
      A la primer pregunta, podría considerarse un DNAT automático. El DNAT se configura para que los paquetes nuevos desde el exterior puedan alcanzar una IP privada en la LAN. En este caso particular del video, los paquetes que entran a la LAN son respuestas a paquetes que previamente salieron vía SNAT/MASQUERADE, por lo que no hay reglas DNAT en el iptables.
      A la segunda pregunta (por cierto, excelente pregunta!), no, no lo hace según el tipo de IP (pub/priv), lo hace según la tabla de enrutamiento: cuando el paquete llega desde la LAN al router/firewall, verifica la tabla de ruteo, y determina que el siguiente "hop" o salto para alcanzar el destino debe ser, por ejemplo, el router XXXX en Internet. A partir de ahí, determina por qué interfaz de red debe salir el paquete para alcanzar dicho router XXXX, y entonces coloca en el campo "source address" del paquete saliente la IP de la interfaz de red que conecta a dicho router, ¿me explico mas o menos?
      Espero te sirva! Cualquier duda acá estoy. Saludos!! @d1cor

    • @internetuser6602
      @internetuser6602 4 роки тому

      @@Juncotic
      Wow!! Creo que lo entiendo más o menos, muchas gracias por la respuesta ;)

    • @Juncotic
      @Juncotic  4 роки тому +1

      A vos por comentar! Lo que necesites escribime!

  • @diegochipana6988
    @diegochipana6988 4 роки тому

    Muy buena la explicacion
    Disculpa una pregunta como podria con iptables bloquear todos los puertos ya sea de entrada o salida menos el puerto 80 para web

    • @Juncotic
      @Juncotic  4 роки тому +1

      Hola Diego! Sí, se puede, una opción es utilizar la policy Drop por defecto para INPUT y OUTPUT, y luego habilitar el puerto 80 de tcp de OUTPUT e INPUT (respuestas), o en su defecto habilitar OUTPUT y utilizar gestión de estados de conexiones con el módulo state.
      Ahora, si lo que querés es solamente navegar en Internet, tenés que tener en cuenta que vas a necesitar más que el puerto tcp 80, hoy casi todos los sitios sirven https (tcp 443) y además necesitás resolución de nombres de dominio (udp 53), por lo que para navegar, mínimo, necesitás esos tres puertos abiertos.
      Espero te sirva! y mil gracias por tus palabras! @d1cor

    • @diegochipana6988
      @diegochipana6988 4 роки тому +2

      @@Juncotic Muchas gracias por su ayuda y pronta respuesta investigare mas al respecto

  • @m0rphe0-8
    @m0rphe0-8 3 роки тому

    Porque no muestra los resultados en v
    ivo , en el powerpoint TODO TODO funciona verdad ?

    • @Juncotic
      @Juncotic  3 роки тому

      Hola Morpheo! Específicamente hablando, es Libreoffice Impress :P
      Se trata de una clase teórica de un curso online de firewalling con iptables, en el curso incluyo las pruebas de concepto en un servidor Debian.
      Saludos y gracias por comentar!

  • @johnfriend2010
    @johnfriend2010 6 років тому

    hola buen video, tengo una consulta ise el nat con iptables
    sudo iptables -t nat -A POSTROUTING -s 192.168.100.0/24 -o wlp3s0 -j MASQUERADE
    todo bien ningun problema, solo que deseo q aparte del nat bloquear paginas por ejemplo facebook etc pero no me funciona ni con output input FORWARD y con pre y post routen no me acepta y ya me esta volviendo loco, podrias ayudarme ?? solo quiero eso usar nat y bloquear paginas gracias de antemano

    • @Juncotic
      @Juncotic  6 років тому

      Hola! Primero una aclaración: nat no se usa para filtrar nada.
      NAT sirve para hacer traducción de direcciones y puertos de red, no para filtrar, por lo que si estás usando la tabla nat para filtrar no te va a funcionar.
      La regla que pusiste, la de MASQUERADE en POSTROUTING está bien, es para cambiar las direcciones IP origen de los paquetes salientes.
      Si lo que querés es filtrar sitios, hasta te diría que no es recomendable usar iptables, quizás necesites un http-proxy, como squid por ejemplo.
      ¿Por qué? Porque iptables te permite filtrar direcciones IP en capa 3, no dominios, y sitios como facebook o google, o la mayoría de los que trabajan en cloud computing, resuelven un dominio a varias direcciones IP distintas según carga de procesamiento, disponibilidad o geolocalización.
      Esto quiere decir que, si por ejemplo, escribís una regla como esta:
      sudo iptables -A FORWARD -s 192.168.100.0/24 -d facebook.com -j DROP
      En el momento en que llegue un paquete destinado a la ip de facebook desde tu red LAN, iptables va a resolver el dominio facebook.com, y puede que le devuelva una dirección IP distinta de la que tiene tu cliente, entonces no lo va a bloquear.
      Otra opción es cargar una regla por cada una de las direcciones IP de facebook.com y demás, pero esto tiene la contra de que si se actualizan las IP's vas a tener que actualizar tus reglas.
      Para tu requerimiento, te recomiendo que estudies http proxy, en particular squid funciona muy bien en GNU/Linux.
      Espero te sirva!
      Saludos! @d1cor / juncotic.com

    • @johnfriend2010
      @johnfriend2010 6 років тому

      gracias por la explicacion la verdad es solo un caso de estudio y el docente dijo q usemos iptables
      sudo iptables -A FORWARD -s 192.168.100.0/24 -d facebook.com -j DROP
      eso no me funciona, me podrías dar una mano como seria bloqueando cada ip de facebook ?
      nslookup facebook.com
      DNS request timed out.
      timeout was 2 seconds.
      Servidor: UnKnown
      Address: 192.168.0.1
      Respuesta no autoritativa:
      Nombre: facebook.com
      Address: 179.60.193.35

    • @Juncotic
      @Juncotic  6 років тому

      Hola! Perdoná la demora, vengo a mil estos días y no he podido estar online respondiendo consultas :(
      Si esa regla no te está funcionando puede ser por dos motivos:
      1) la dirección IP a la que resuelve el iptables no es la misma que está usando tu navegador.
      2) tenés habilitado el ipv6 en tu red y está utilizando la navegación en ipv6.
      Si NO has establecido sesión con facebook.com, se me ocurre que podés utilizar el modulo "string" para extender los parámetros de selección de tráfico. Algo así:
      iptables -A FORWARD -p tcp --dport 443 -m string --string "facebook.com" --algo bm -j REJECT
      Si cerrás todos los navegadores y ejecutás esa regla en el firewall central debería bloquear el acceso a cualquier sitio que contenga la palabra "facebook.com" en el protocolo.
      Y digo "si cerrás", porque si ya tenés una sesión de facebook abierta (aunque sea sin login) ya se habrá producido el intercambio SSL/TLS y el tráfico contra facebook irá cifrado, por lo que iptables no podrá ver la cadena y no bloqueará nada.
      Otra opción sería averiguarse cuáles son los rangos de IP que suele usar facebook y bloquear cada rango o ip particular utilizando una regla, pero esto core el riesgo de dejar siempre IPs habilitadas y un posible acceso al sitio, por ejemplo, si facebook cambia las direcciones IP de los servicios.
      De nuevo, si bien existen posibilidades como las que te comento para bloquear un sitio utilizando iptables, no es una opción recomendada porque iptables no está hecho para trabajar a nivel de capa 7 (Aplicación / dominios, etc), sino a nivel de capa 3 (red).
      Para bloquear sitios por dominio y otros parámetros es mucho más flexible un proxy http.
      NOTA: estoy considerando la regla iptables con la cadena FORWARD porque supongo que se trata de un firewall que da acceso a toda una red... ahora, si el iptables lo estás configurando para bloquear el facebook "localmente" en tu computadora, deberías usar "OUTPUT" en vez de "FORWARD".
      Espero te sirva! Seguimos en contacto! (@d1cor)

    • @johnfriend2010
      @johnfriend2010 6 років тому +1

      no, ya lo arregle viendo otro canal que explica bien

    • @Juncotic
      @Juncotic  6 років тому

      Genial! :)
      Cualquier duda quedo a disposición! (@d1cor)

  • @jonathanzumbado2893
    @jonathanzumbado2893 Місяць тому

    No entendí