Netgate Discussion Forum
    • Categories
    • Recent
    • Tags
    • Popular
    • Users
    • Search
    • Register
    • Login

    Bash Script – Obtener redes y AS number por su dominio

    Español
    2
    4
    1.2k
    Loading More Posts
    • Oldest to Newest
    • Newest to Oldest
    • Most Votes
    Reply
    • Reply as topic
    Log in to reply
    This topic has been deleted. Only users with topic management privileges can see it.
    • J
      javcasta
      last edited by

      Hola.

      Una aportación a la causa :)

      Un bash-script (para ser ejecutado desde shell), para un pfSense, para obtener el AS number y las redes de un dominio.

      Como funciona, paso a paso:

      Para obtener la IPv4 del dominio: pfsense.org

      host -4 pfsense.org | grep "pfsense.org has address" | cut -d " " -f 4
            208.123.73.69

      Para obtener el AS number de ese dominio por su IPv4

      whois -h v4.whois.cymru.com – "-c 208.123.73.69"

      AS      | IP              | CC | AS Name

      30312  | 208.123.73.69    | US | NETGATE - Netgate, US

      Filtramos para obtener solo el nº

      whois -h v4.whois.cymru.com – "-c 208.123.73.69" | grep -v "AS" | cut -d "|" -f 1

      30312

      Obtenemos las redes/subredes del AS Number

      whois -h whois.radb.net – '-i origin AS30312' | awk '/^route:/ {print $2;}' | sort | uniq

      192.207.126.0/24
          208.123.73.0/24

      El código del script:

      #!/bin/bash
      ############################################################################
      #                         GET Nets and AS by domain                        #
      #                       BASH SCRIPT FOR PFSENSE 2.3                        #
      #             BY JAVIER CASTAÑÓN - 2016 - HTTPS://JAVCASTA.COM             #
      ############################################################################
      #      uso: alojar getNetsByDomain.sh en carpeta,p.e. /tmp o /scripts      #
      #        ejecutarlo desde shell:# sh /tmp/getNetsByDomain.sh               #
      ############################################################################
      read -p 'Enter domain (foo.bar): ' INPUTDOMAIN
      LAIP=$(host -4 $INPUTDOMAIN | grep "$INPUTDOMAIN has address" | cut -d " " -f 4)
      printf "IP for $INPUTDOMAIN is $LAIP \n"
      printf "getting AS NUMBER... \n"
      ASNUMBER=$(whois -h whois.cymru.com -- "-c $LAIP" | grep -v "AS" | cut -d "|" -f 1)
      ASSTRING="AS$ASNUMBER"
      printf "ASN for $INPUTDOMAIN is $ASSTRING \n"
      whois -h whois.radb.net -- "-i origin $ASSTRING" | awk '/^route:/ {print $2;}' | sort | uniq > /tmp/thenet.tmp
      THENET=$(cat /tmp/thenet.tmp)
      printf "The nets for $INPUTDOMAIN is in file /tmp/thenet.tmp: \n"
      echo $THENET
      

      (Nota: a veces el whois a whois.cymru.com da un time out, y suele tardar unos 30sg, no ejecutar demasiados whois queries ya que el servidor ese se satura bastante y te corta)

      Lo tengo en: https://www.javcasta.com/pfsense-bash-script-obtener-redes-y-as-por-su-dominio-getnetsbydomain-sh/

      Salu2

      – add --

      Las redes obtenidas el script las guarda en /tmp/thenet.tmp , con el objeto de vía scripting poder confeccionar aliases de pfSense para un dominio de forma cómoda, cuando lo tenga, ya avisaré.

      Javier Castañón
      Técnico de comunicaciones, soporte y sistemas.

      Mi web: https://javcasta.com/

      Soporte scripting/pfSense https://javcasta.com/soporte/

      1 Reply Last reply Reply Quote 0
      • J
        javcasta
        last edited by

        Hola

        Se me olvidaba lo más importante. Como pfSense trae la utilidad Bulk import para Alias, no sigo con scripting para esto, pues ya es trivial implementar el alias:

        Una vez obtenida la lista de redes de un dominio vía el script en /tmp/thenet.tmp

        Para crear un alias para ese dominio, por ejemplo si hemos obtenido la lista para facebook.es:

        Copiamos el contenido de /tmp/thenet.tmp editandolo. (se puede usar Diagnostics > Edit file)

        Vamos a    Firewall> Aliases > IP: [ Import ] (abajo a la derecha)

        Y pegamos la lista de redes en Aliases to import, (ponemos un name al alias facebook_es y descripción si se desea y save)

        Y hemos creado un alias para un dominio

        Salu2

        Javier Castañón
        Técnico de comunicaciones, soporte y sistemas.

        Mi web: https://javcasta.com/

        Soporte scripting/pfSense https://javcasta.com/soporte/

        1 Reply Last reply Reply Quote 0
        • F
          Finger
          last edited by

          maestro!!

          1 Reply Last reply Reply Quote 0
          • J
            javcasta
            last edited by

            Hola

            Finger, jaja, no, maestro no,  parado, tengo tiempo :)

            Salu2

            Javier Castañón
            Técnico de comunicaciones, soporte y sistemas.

            Mi web: https://javcasta.com/

            Soporte scripting/pfSense https://javcasta.com/soporte/

            1 Reply Last reply Reply Quote 0
            • First post
              Last post
            Copyright 2025 Rubicon Communications LLC (Netgate). All rights reserved.