30.5.2020
Han pasado 80 años... y VestaCP todavía no soporta IPv6. Pero vamos a cambiar eso.
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.
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í:
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í:
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.
Portada.
Photo by Anastasia Dulgier on Unsplash