• #Aplicaciones
  • #Bases de datos
  • #Dispositivos
  • #Hardware
  • #Inversión
  • #Marketing
  • #Programacion
  • #Sistemas
  • Cómo cambiar la dirección IP en VestaCP

    GuíasAplicacionesLinuxPaneles hostingSistemasTipos de aplicaciónVestaCP

    En caso de que tengas un servidor dedicado o un VPS, puede resultar complicado cambiar la dirección IP si no tenéis demasiada experiencia configurando servidores, ya que existen una gran cantidad de servicios que la utilizan y son susceptibles de fallar.

    Modos de cambiar la IP con VestaCP

    Vamos a ver cuales son los mejores modos de hacerlo. El mejor de todos es obviamente el método más rapido, que es descargaros un script, pero veremos los dos y, luego, veremos cómo solucionar algunos posibles problemas.

    Utilizar un script que cambie la IP automáticamente

    Tenemos que descargar y ejecutar un pequeño script que cambie la IP automáticamente. Para ello, podemos ejecutar el siguiente código desde la terminal, conectándonos mediante SSH al servidor. Es necesario que ejecutemos estas tareas con sudo o seamos un usuario con permisos root.

    wget http://www.nobill.tv/dl/changeip.tar.gz
    tar -zxvf changeip.tar.gz
    mv v-change-server-ip /usr/local/vesta/bin/
    v-change-server-ip VIEJAIP NUEVAIP

    Después, entramos en el panel de VestaCP y cambiamos la IP pública. Finalmente reiniciamos el servidor.

    Crear un script que cambie la IP

    Lo primero que tenemos que crear un archivo, que será el que contendrá nuestro script:

    touch /usr/local/vesta/bin/v-cambiar-ip-servidor

    Seguidamente, damos los permisos de ejecución adecuados al script y lo editamos con nano, vi o con nuestro editor de texto preferido:

    chmod 0755 /usr/local/vesta/bin/v-cambiar-ip-servidor
    nano /usr/local/vesta/bin/v-cambiar-ip-servidor

    Y finalmente escribimos nuestro script:

    #!/bin/sh
    
    # codigo para cambiar la IP en un servidor con VestaCP
    # uso del script:
    # $0 <viejaip> <nuevaip>
    
    LOG=/var/log/vesta/system.log
    
    MYUID=`/usr/bin/id -u`
    if [ "$MYUID" != 0 ]; then
      echo "You require Root Access to run this script";
      exit 0;
    fi
    
    if [ $# != 2 ] && [ $# != 3 ]; then
      echo "Uso:";
      echo "$0 <viejaip> <nuevaip> [<file>]";
      echo "has introducido #$#: $0 $1 $2 $3";
      exit 0;
    fi
    
    VIEJA_IP=$1
    NUEVA_IP=$2
    
    TIENE_HTTPD=1
    TIENE_NGINX=1
    
    DATE=`date '+%F %X'`
    BIN=`echo $0 | awk -F/ '{print $NF}'`
    
    log()
    {
      echo -e "$1";
      echo -e "$1" >> $LOG;
    }
    
    swapfile()
    {
      if [ ! -e $1 ]; then
        log "No es posible encontrar $1 para cambiar las IPs. Nos vemos...";
        return;
      fi
    
      TEMP="perl -pi -e 's/${VIEJA_IP}/${NUEVA_IP}/g' $1"
      eval $TEMP;
    
      log "$DATE $BIN $1\t: $VIEJA_IP -> $NUEVA_IP";
    }
    
    if [ $# = 3 ]; then
      swapfile $3;
      exit 0;
    fi
    
    
    IPFILE_OLD=/usr/local/vesta/data/ips/$VIEJA_IP
    IPFILE_NEW=/usr/local/vesta/data/ips/$NUEVA_IP
    if [ ! -e $IPFILE_OLD ]; then
      echo -n "$IPFILE_OLD no existe. Quieres continuar de todos modos? (y/n) : ";
      read YESNO;
      if [ "$YESNO" != "y" ]; then
        exit 0;
      fi
    else
      mv -f $IPFILE_OLD $IPFILE_NEW
      log "$DATE $0 $IPFILE_OLD\t: $VIEJA_IP -> $NUEVA_IP";
    fi
    
    if [ "${TIENE_HTTPD}" -eq 1 ]; then
      if [ -e /etc/httpd/conf.d/${VIEJA_IP}.conf ]; then
        swapfile /etc/httpd/conf.d/${VIEJA_IP}.conf
        mv -f /etc/httpd/conf.d/$VIEJA_IP.conf /etc/httpd/conf.d/${NUEVA_IP}.conf
      fi
      swapfile /etc/httpd/conf.d/mod_extract_forwarded.conf
    fi
    
    if [ "${TIENE_NGINX}" -eq 1 ]; then
      if [ -e /etc/nginx/conf.d/${VIEJA_IP}.conf ]; then
        swapfile /etc/nginx/conf.d/${VIEJA_IP}.conf
        mv -f /etc/nginx/conf.d/$VIEJA_IP.conf /etc/nginx/conf.d/${NUEVA_IP}.conf
      fi
    fi
    
    swapfile /etc/hosts
    
    ULDDU=/usr/local/vesta/data/users
    
    for i in `ls $ULDDU`; do
    {
    
      if [ ! -d $ULDDU/$i ]; then
        continue;
      fi
    
      swapfile $ULDDU/$i/web.conf
      swapfile $ULDDU/$i/dns.conf
      for j in `ls $ULDDU/$i/dns/*.conf`; do
      {
        swapfile $j
      };
      done;
    
      if [ "${TIENE_HTTPD}" -eq 1 ]; then
        swapfile /home/$i/conf/web/httpd.conf
      fi
      if [ "${TIENE_NGINX}" -eq 1 ]; then
        swapfile /home/$i/conf/web/nginx.conf
      fi
    
      for j in `ls /home/$i/conf/dns/*.db`; do
      {
        swapfile $j
      };
      done;
    
    };
    done;
    
    #esto se necesita para actualizar los datos en los archivos de la base de datos
    if [ "${TIENE_HTTPD}" -eq 1 ]; then
      service httpd restart
    fi
    if [ "${TIENE_NGINX}" -eq 1 ]; then
      service nginx restart
    fi
    
    echo "*** Se ha cambiado la ip $VIEJA_IP por la ip $NUEVA_IP ***";

    Y ya tenemos listo el script. Lo ejecutamos y, posteriormente, cambiamos la IP pública en el panel de VestaCP. Por último, reiniciamos el servidor.

    Solución de problemas

    Vamos a ver varios problemas que se os pueden dar.

    Apache no se inicia: Cambiemos la IP del archivo de configuración

    Es posible que Apache no se inicie. El problema es que el script crea un nuevo archivo de configuración de Apache en lugar de editar el anterior, por lo que debemos borrar el archivo anterior.

    Es posible que el archivo se encuentre en este directorio:

    • /etc/apache2/conf.d/TUVIEJAIP.conf

    Aunque en los servidores con CentOS, el archivo estará dentro del siguiente directorio:

    • /etc/httpd/conf.d/TUVIEJAIP.conf

    El el lugar de «TUVIEJAIP», aparecerá vuestra antigua dirección IP. Después de ejecutar el script, debemos borrar ese archivo cuyo nombre se corresponderá con el de vuestra vieja IP. Es importante que no borréis el nuevo archivo que ha creado el script .

    En caso de que Apache os de más errores, podéis ejecutar un chequeo de configuración de Apache para identificar los problemas:

    # apachectl configtest

    Otros archivos en los que cambiar la IP

    Es posible que, dependiendo de nuestra configuración, tengamos que cambiar nuestra IP en más lugares, especialmente si utilizamos Ubuntu. Un lugar es el archivo localizado en «/home/admin/conf/web/apache2.conf». Debemos editarlo y actualizar la IP que aparece en la primera línea, que será la IP del host virtual.

    También es posible que debamos cambiarla en el archivo de configuración de nginx, localizado en «/home/admin/conf/web/snginx.conf». Concretamente, debemos actualizar la IP que se muestra en la segunda línea.

    Esto ha sido todo. Espero que os haya servido de ayuda.

    Encontremos más lugares en los que cambiar la IP

    Si aún tenemos problemas, vamos a buscar todos los archivos en los que puede aparecer la vieja IP:

    # grep -r "VIEJA-IP" /etc/
    ...
    # grep -r "VIEJA-IP" /home/
    ...
    # grep -r "VIEJA-IP" /usr/local/
    ...

    Ahora editamos los archivos que se nos muestren y cambiamos todas las ocurrencias de la IP en todos ellos por la nueva.

    El Firewall: Cambiando la IP que utiliza IPtables

    Si Fail2Ban nos da algún fallo o vemos algún error relacionado con IPTables, editamos el archivo «/etc/iptables.rules» y buscamos la siguiente línea:

    -A INPUT -s VIEJAIP/32 -j ACCEPT

    Debemos cambiarla por:

    -A INPUT -s NUEVAIP/32 -j ACCEPT

    Finalmente, reiniciamos el firewall y, luego, el servidor.

    Si aún no consigues entrar a tus sitios o dan errores…

    Si este es vuestro caso, os aconsejamos reconstruir la configuración web de VestaCP para todos los usuarios. Para ello entramos en VestaCP y ejecutamos la opción «Rebuild Web» para todos. Tras ésto, reiniciamos el servidor.

    2 comentarios en “Cómo cambiar la dirección IP en VestaCP

    Deja una respuesta

    Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

    Ingeniero técnico en informática, actualmente trabajo como desarrollador web y programador de videojuegos.

    https://twitter.com/neeonez