Skip to content
Millaredos

Script para hacer NAT en Debian

13 de julio de 2023
script

En la entrada anterior, Proxmox – Configurar internet una sola interfaz de red, explicaba como desde el anfitrión se compartía internet hacia las VM mediante NAT. En algunos casos, es necesario redirigir puertos, o lo que llamamos en los routers abrir un puerto. Por ejemplo, el 443 para un servidor web. Con este script, lo que hago es automatizar un poco esto y ahorrarme tiempo cada vez que necesito abrir un puerto.

Index

    EL Script

    Digo en Debian, porque yo es donde lo programé y donde lo he testeado. Estoy casi seguro que funcionaría en cualquier otra distribución con iptables.

    #!/bin/bash
    # ©millaredos.com
    # version 1.0
    
    
    # funciones definidas en el script
    
    mainmenu () {
        clear
        echo "Listado de puertos actualmente abiertos:"
        iptables -t nat -v -L PREROUTING -n --line-number
    
        echo
        echo "Seleccione la opción del menú:"
        echo
        echo -e "1.- Abrir puerto \n2.- Borrar puerto abierto \n3.-Salir"
        read option
        case $option in
    
            1) menuad ;;
            2) menudel ;;
            3) exit ;;
            *) echo "Opción incorrecta"
               sleep 5
               mainmenu ;;
        esac
    }
    
    menuad () {
        echo -e "\n Indique el puerto externo a abrir"
        read ext
        echo "Indique el puerto interno al que redirigir"
        read int
        echo "Indique la IP a la que abrir el puerto"
        read ip
        echo "escriba tcp o udp según corresponda"
        read proto
        iptables -t nat -A PREROUTING -i eno1 -p $proto --dport $ext -j DNAT --to $ip:$int
        netfilter-persistent save
        iptables-save > /etc/iptables/rules.v4
        mainmenu
    }
    
    menudel () {
        echo "Del listado de puertos abiertos, teclee el número de línea a eliminar"
        read num
        iptables -t nat -D PREROUTING $num
        iptables-save > /etc/iptables/rules.v4
        mainmenu
    }
    
    # ejecutar el script. Comenzamos llamando a mainmenu
    
    mainmenu

    Creación del fichero

    Esta parte es fácil. Con nano u otro editor, copiar el código de arriba, pegarlo en el fichero y guardarlo con extensión .sh.

    nano puertos.sh

    Ejecución del Script

    Antes de ejecutarlo, hay que darle permisos de ejecución. Se hace con el siguiente comando.

     chmod +x puertos.sh

    para ejecutarlo, simplemente escribimos la ruta del fichero. Si estamos en el directorio donde se ubica, sería de la siguiente forma.

    ./puertos.sh
    puertos
    Así es como se vería

    Consideraciones finales

    Hay que tener en cuenta el nombre que le da el sistema a la tarjeta de red, en mi caso eno1. Si tu tarjeta de red se llama diferente, debes modificarlo en el script. Se puede mirar el nombre de la tarjeta de red leyendo el fichero de la configuración de red.

    cat /etc/network/interfaces

    Espero que os sirva de ayuda.

    Configuración