X
X
X
X

Base de conocimientos

Página principalBase de conocimientosLinux - MultiVPS IPv6+IPv4My application needs an IPv4-format...

My application needs an IPv4-formatted IP on Linux, but ip addr shows IPv6s only. How can I communicate to/from it?

Advertencia: Esta guía ha sido traducida por un sistema automático. En todo momento, si tiene alguna duda, debe consultar la versión en inglés cambiando el idioma a «EN» y abriendo una nueva ventana.

Los problemas comunes exigen a veces soluciones poco comunes

Ocasionalmente, alguna que otra aplicación (no actualizada/perezosa) puede no soportar el uso directo cuando el punto de partida es una dirección IPv6, porque están diseñadas para usar una dirección con formato IPv4. A pesar de esto, normalmente son tolerantes al rango IPv4 que estés usando, permitiéndote especificar IPv4s internos (que están en el rango 10.x.x.x/8, 172.16.x.x/12 - 172.32.x.x/12, o 192.168.x.x/16), como ya tendrías en cualquier otro VPS NAT comprado, ya que no distinguen entre direcciones.

La única diferencia entre C-Servers y otros proveedores en VPS NAT es que mientras otros proporcionan una dirección interna NAT IPv4 por defecto (que no es pública, sólo privada), nosotros preferimos proporcionar una dirección pública IPv6 que es de doble función (también envía/recibe peticiones IPv4) y luego traducir + enrutar internamente su petición a/desde el IPv4 del servidor principal.

Debido a que las plantillas SolusVM 2 y las imágenes cloud-init no predicen una dirección IPv4 interna alternativa, y a la postura de C-Servers como una empresa que da prioridad a IPv6, no proporcionamos dichas direcciones de forma predeterminada. Sin embargo, en esta guía, te mostraremos como tener conectividad IPv4 en aplicaciones que demandan una dirección IPv4 solamente. Esto se logra mediante un simple proceso de tres pasos:

- deshabilitando cloud-init en su VPS;
- añadiendo la dirección IPv4 interna al sistema;
- creando un socat interno entre ese IPv4 e IPv6 para una conectividad completa.

Los paquetes que llegan a tu VPS desde IPv6 ya están completos, la redirección es totalmente interna a nivel de socket TCP/IP, y esta ha sido una solución utilizada desde hace bastante tiempo.

Cómo tener conectividad IPv4 interna nativa en MultiVPS

Primero, vamos a desactivar los cambios cloud-init para su VPS. Esto es meramente un ejemplo; usted puede querer editar manualmente un área diferente para desactivar cloud-init o incluso editar directamente la sección de redes de su distro Linux.

SSH o VNC en su servidor y crear un archivo para evitar que cloud-init se ejecute en los arranques posteriores:

sudo touch /etc/cloud/cloud-init.disabled

Si esto no funciona, es posible que desee editar directamente su archivo para evitar cualquier recreación de la interfaz que borre lo que estamos a punto de hacer. Dado que cloudinit (a veces formateado como cloud-init) es simplemente un script ejecutado por SolusVM 2 al final de cada reinicio, puede simplemente hacer

que cloudinit

o

which cloud-init

para ver dónde está su script en el disco - a veces se carga desde la sección del archivo de configuración de red, a veces es un script completo por derecho propio. Otra alternativa es comprobar directamente el registro del sistema Linux. Simplemente escriba, en su línea de comandos

journalctl

y utiliza la tecla PgDn / Page Down de tu teclado para desplazarte hacia abajo hasta el último registro de arranque que hayas hecho en tu VPS - que es exactamente la pantalla que ves durante cada arranque de Linux. Preste atención a la hora / día que aparece en el lado izquierdo de cada registro para rastrear las acciones y ubicaciones de inicio en la nube.

Para obtener más ayuda siempre se puede utilizar Google o una IA al configurar esto.
Añade una dirección IPv4 estática a tu interfaz de red. Esto es sólo un ejemplo para Enterprise Linux y distribuciones basadas en Debian, por favor, compruebe el proceso específico necesario para su sistema operativo elegido y la versión Edite el archivo de configuración de red (la ubicación depende de su distribución):
Para Ubuntu 22.04/24.04 (usando Netplan):

sudo nano /etc/netplan/01-netcfg.yaml

Dentro de este archivo, no borre nada más, y añada (de nuevo, sólo un ejemplo, compruebe el proceso para su SO)

network:
version: 2
ethernets:
eth0: # El nombre de tu interfaz puede ser diferente
direcciones:
- 10.0.0.10/24 # Agregue la entrada y eventualmente reemplace con su rango y subred IPv4 interna deseada (bloques 172.16.x.x/12, 192.168.x.x/16)

Ctrl+O para guardar, Enter para confirmar, Ctrl+X para salir del editor Nano.
Para Enterprise Linux (RHEL/CentOS/Tencent/AlmaLinux/Rocky Linux, ejemplo para RHEL 9/AlmaLinux 9), en una línea de comandos normal a través de SSH o VNC, escriba:

nmcli con mod eno1 ipv4.addresses 192.168.1.100/24 [puede insertar cualquier otro rango IPv4 privado, asegúrese de que la subred y la IP están bien].
nmcli con mod eno1 ipv4.gateway 192.168.1.1 [desde dentro del mismo rango IPv4 privado elegido, siempre la primera dirección del mismo].
nmcli con mod eno1 ipv4.dns 8.8.8.8 [utilizar cualquier DNS IPv4 normal].
nmcli con mod eno1 ipv4.method manual [NO insertar auto, esta es una dirección no DHCP].
Para establecer la conexión simplemente inserte:

nmcli con up eno1

Instale socat si no está ya instalado:

sudo apt update && sudo apt install socat -y # Para Debian/Ubuntu, O
sudo dnf install socat # Para distros basadas en RHEL (el ejemplo funciona para distros basadas en RHEL8/RHEL9)

Y active el soporte de reenvío IPv4 e IPv6 en sysctl:

echo «net.ipv4.ip_forward=1» | sudo tee -a /etc/sysctl.conf
echo «net.ipv6.conf.all.forwarding=1» | sudo tee -a /etc/sysctl.conf
sudo sysctl -p

Cree un servicio systemd para ejecutar socat y reenviar el tráfico de su IPv4 interno a IPv6:
sudo nano /etc/systemd/system/ipv4-to-ipv6-routing.service
Añada el siguiente contenido:

[Unidad]
Descripción=IPv4 a Servicio de enrutamiento IPv6 Socat
After=red.destino

[Servicio]
Type=simple
ExecStart=/usr/bin/socat TCP4-LISTEN:PUERTO,bind=10.0.0.10,reuseaddr,su=nadie,fork TCP6:[SU_DRESS_IPV6]:PUERTO
Restart=siempre
RestartSec=5

[Instalar]
WantedBy=multi-user.target


Reemplazar:

10.0.0.10 con su dirección IPv4 interna deseada
[YOUR_IPV6_ADDRESS] con la dirección IPv6 pública proporcionada para su VPS
PORT con un número de puerto que desee reenviar

Habilite e inicie el servicio:

sudo systemctl enable ipv4-to-ipv6-proxy.service
sudo systemctl start ipv4-to-ipv6-proxy.service

Y este servicio se iniciará automáticamente en cada arranque.

Si necesita que se reenvíen varios puertos, puede crear varios archivos de servicio o modificar el comando socat para que gestione varios puertos.
Socat trabaja TCP/UDP, de IPv4 a IPv6, y de IPv6 a IPv4. Ejemplos de comandos son:

socat UDP4-LISTEN:10683,bind=10.0.0.10,reuseaddr,su=nobody,fork UDP6:[2a00::212:4b00:615:a1f7]:10683 « dice que escuche UDP en el puerto 10683 en la conexión IPv4 interna, enruta a una dirección IPv6 pública en la dirección dada y en el mismo puerto.

socat TCP6-LISTEN:10022,bind=[2a00::212:4b00:615:a1f7],reuseaddr,su=nobody,fork TCP4:10.0.0.10:10022 « dice que escuche TCP bajo IPv6 en el puerto 10022 en la dirección IPv6 pública dada, enruta a la pila IP interna VPS IPv4 en el mismo puerto.

Advertencia

Esta solución es persistente y se mantendrá en cada reinicio.

Sin embargo, si esto falla por alguna razón (por ejemplo, actualizaciones que cambian systemd, socat o funciones de red), puede que necesite crear un script para ejecutar en cada arranque - crontab o herramientas de scripting similares pueden ser interesantes para esto - de tal manera que el IPv4 se reinserte en cada arranque en su VPS. Si esto es necesario, también puede ser una buena idea hacer lo mismo con socat.

Solus VM 2 tiene cloud-init, que usualmente provee la información de red en cada arranque, borrando la información previa - a menos que un usuario lo desactive y automatice el proceso de incluir una IP al arrancar en su VPS (que, como se origina desde el espacio de usuario, nunca colisiona con cloud-init).

Si todo lo demás va mal, simplemente utilice nuestro servicio de copia de seguridad C-Servers GoBack para restaurar su VPS a un punto anterior en el tiempo, o simplemente reinstale el VPS utilizando una de nuestras plantillas de SO, desde cero.

Una cosa es segura

Esta solución arreglará la mayoría de los problemas con aplicaciones IPv4-only.

¿No puede encontrar la información que busca?

Crear un ticket de soporte
¿Lo encontraste útil?
(534 veces vistas / 1 personas lo encontraron útil)

Powered by WISECP
Top