guía

Soporte para IPv6 en VestaCP.

Han pasado 80 años... y VestaCP todavía no soporta IPv6. Pero vamos a cambiar eso.

Imágen de portada

Por increible que parezca, año 2020, VestaCP no soporta IPv6 de manera nativa. Si bien hay un fork con soporte para esta característica, además de certificados Let's Encrypt para mail y panel, está en beta. Por lo que da algo de miedo la posibilidad de reventar el servidor. Pero fear not my friend, podemos a agregar la funcionalidad del nuevo protocolo sin perder la compatibilidad con el IPv4 que todos conocemos.

En esta guía vamos a explicar cómo habilitar IPv6 en CentOS 7 y editar los templates de hosting de Vesta. Vamos a tener que editar los parámetros del kernel (sysctl) y red cómo root por lo que supongo que si estás leyendo, estimado lector, tienes experiencia en administración de servidores y VestaCP. Dicho esto, el usual disclaimer:
⚠️ este proceso fue probado, pero no significa que no puedas tener problemas en el camino. Hacer backups / snapshots para trabajar seguro ⚠️.

Paso 1: IPv6 en CentOS 7.

Comenzamos con lo más riesgoso primero. Estas modificaciones pueden hacer que pierdas conectividad o el servidor no inicie, trabajar con cuidado y atención. Lo primero que hay que hacer es habilitar las opciones en el kernel editando y agregando las siguientes líneas en el archivo /etc/sysctl.conf

net.ipv6.conf.default.disable_ipv6 = 0
net.ipv6.conf.all.disable_ipv6 = 0

Luego hay que habilitar el servicio agregando la siguiente linea al archivo /etc/sysconfig/network

NETWORKING_IPV6=yes

La última configuración es sobre el script de inicio de la interfaz de red. En nuestro caso la interfaz se llama eth0 por lo que tenemos que agregar lo siguiente en /etc/sysconfig/network-scripts/ifcfg-eth0. Si la interfaz tuviera otro nombre, editar el archivo correspondiente.

Estos datos normalmente los publica tu proveedor hosting.

  • IPv6-DIRECCION es la dirección de IPv6 del servidor. Ej: 2607:5300:201:3100::2607
  • IPv6-GATEWAY-o-PUERTA_ENLACE es la IPv6 de la puerta de enlace de la dirección asignada. Ej: 2607:5300::1
IPV6INIT=yes
IPV6ADDR=IPv6-DIRECCION
IPV6_DEFAULTGW=IPv6-GATEWAY-o-PUERTA_ENLACE

El momento de la verdad, reiniciar el servicio de red. Si todo funcionó correctamente, no debería haber ningún cambio aparente y todo seguiría corriendo normalmente. Si no, se va a cortar la conexión SSH y vas a tener que ingresar por la consola que ofrece el proveedor de hosting (o restaurar el snapshot).

# /etc/init.d/network/restart

Paso 2: Registros AAAA.

Esta es la parte más sensilla. Tenemos que agregar tantos registros AAAA cómo registros A haya en el servidor DNS. Una vez hecho esto, esperar que se realice la dispersión y ya estaría listo el acceso. Si tu ISP no te da una conexión IPv6 podés hacer ping al servidor desde este sitio IPv6Now ingresando el nombre de dominio o la dirección de IP. El resultado de la prueba se realiza sobre IPv4 e IPv6.

Agregar registros AAAA DNS VestaCP

Paso 3: Editar templates VestaCP.

Si llegaste hasta acá, esto es pan comido. Finalmente hay que cambiar los templates de hosting para habilitar la flamante dirección de IPv6. Para probar se puede hacer hacer la modificación sobre los archivos que están en /home/USUARIO/conf/web/. Pero si queremos hacer los cambios de manera permanente, debemos editar los templates. La estructura es simple:

  • /usr/local/vesta/data/templates/web/httpd/ se encuentran los templates de Apache (httpd).
  • /usr/local/vesta/data/templates/web/nginx/ se encuentran los templates de Nginx.

En esos directorios se encuentran dos archivos por cada template, uno con extension .tpl y otro .stpl, el primero para conexión plana (tpl) y el otro para SSL (stpl). Para el ejemplo vamos a utilizar los archivos default.stpl, tanto para httpd cómo para nginx.

Editar web template (httpd).

Tenemos que copiar el bloque que inicia con <VirtualHost %ip%:%web_ssl_port%> y termina con </VirtualHost> y pegarlo a continuación. Reemplazar %ip% del segundo bloque (el pegado) por [IPv6-DIRECCION] ([2607:5300:201:3100::2607]). Quedaría así:

Configuración template vestacp httpd

Hay que hacer lo mismo con el template default.tpl y quedaría listo.

Editar proxy template (nginx).

Nginx es más simple, sólo hay que duplicar la línea que dice listen %ip%:%proxy_port%; y a la copia reemplazar %ip% por [IPv6-DIRECCION] ([2607:5300:201:3100::2607]). Quedaría así:

Configuración template vestacp nginx

Hay que hacer lo mismo con el template default.tpl y quedaría listo.

Finale.

Para aplicar la nueva configuración, cambiar el template de default a hosting y volver a default nuevamente, por ejemplo. Puedes testear que está la nueva IPv6 funcionando utilizando este servicio IPv6.

IPv6 Ready

Portada.

Photo by Anastasia Dulgier on Unsplash



Comentarios