¿Puedo ejecutar procesos de red en paralelo en un sistema basado en UNIX / Linux / Mac, cada uno con una dirección IP separada que le he asignado a mi computadora?

Hago esto todo el tiempo en servidores Solaris o Linux que alojan instancias de servidores web. Normalmente, un servidor * nix tendrá múltiples interfaces de red definidas. Dependiendo de cómo se presente su topología de red, es posible que tenga una interfaz reservada para las funciones de administración / administración, una para copias de seguridad y otra para datos (posiblemente enrutamiento a través de un equilibrador de carga).

Como ejemplo, puede tomar la interfaz de datos (por ejemplo, eth2 en un servidor RHEL) y crear múltiples subinterfaces virtuales a partir de eso, cada una con su propia dirección IP. Por ejemplo:

eth0 = 10.10.5.10 (host1 host1.myservice.net

eth1 = 10.10.15.10 (host1-backup host1-backup.myservice.net)

eth2 = 10.10.10.10 (host1-data host1-data.myservice.net)

eth2: 0 = 10.10.10.100 (www1 -> www.myservice.com)

eth2: 1 = 10.10.10.105 (atención al cliente1 -> customer-support.myservice.com)

eth2: 2 = 10.10.10.109 (compra1 -> compra.myservice.com)

El problema aquí es que cada una de las subinterfaces debe estar en el mismo bloque de subred que la interfaz principal a la que está conectada. He “construido” hasta 15 subinterfaces desde una interfaz principal (de ninguna manera un número máximo) en un servidor host individual, cada una representando una instancia de servidor web separada.

Como nota al margen, las URL reales y sus direcciones IP públicas enrutables asociadas probablemente se definirían en el equilibrador de carga, lo que enrutaría el tráfico hacia las direcciones IP del servidor web individual.

Si observa detenidamente mi ejemplo anterior, notará que cada dirección IP del servidor web está compensada por cuatro, esto permite hasta cuatro instancias individuales de cada instancia de servidor web, cada una de las cuales se ejecuta en un servidor host separado. Esto es por redundancia, en caso de que una de las instancias del servidor web, o incluso su servidor host no esté disponible por alguna razón.

También tenga en cuenta que cada interfaz principal está en una subred separada, como lo indica el tercer octeto de la dirección IP, cada una con una función diferente, por lo que ya habría respondido a su pregunta

A2A. Usted pregunta: ¿Puedo ejecutar procesos de red en paralelo en un sistema basado en UNIX / Linux / Mac, cada uno con una dirección IP separada que le he asignado a mi computadora?

Suponiendo que IPv4 (o IPv6) con todos los procesos usan el mismo puerto, en última instancia, depende de la capacidad de cada uno de sus procesos para bind(2) a una dirección diferente, en lugar de solo enlazar a INADDR_ANY (o IN6ADDR_ANY_INIT para IPv6).

Si no tiene control sobre esto (porque no puede modificar el código fuente, o no hay una opción de configuración dedicada), probablemente necesite configurar algún software de virtualización (o, en el caso de sistemas operativos basados ​​en Linux, algo como contenedores de Linux).

Esta es una función estándar en servidores en clúster. Además, cuando se opera un sistema de alta disponibilidad, es mejor hacer esto (a través de múltiples NIC y conexiones, por supuesto) para equilibrar la carga. Entonces, para responder a su pregunta, sí, es muy común hacer esto en ciertas circunstancias.

Depende de la aplicación. Algunas aplicaciones le permitirán especificar a qué dirección IP se une el proceso.

Podrías escribir un programa para hacer eso, sí. Pero no sería una tarea muy simple.