Bash Script – Obtener redes y AS number por su dominio



  • 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é.



  • 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



  • maestro!!



  • Hola

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

    Salu2


Log in to reply