Simulador de interfaz de red

Estoy buscando un simulador de interfaz de red, que ofrezca ambos extremos de una red en una sola máquina (particularmente para UDP).

La forma en que com0com funciona para puertos serie, pero simulando una tarjeta de red en lugar de un puerto serie.

¿Es posible este comportamiento utilizando la pila de red existente de forma creativa? (¿Reenvío de puertos o algo así?) ¿O alguna configuración creativa de OpenVPN, L2TP/IPSec, SoftEther, PPTP, etc.?

Tengo un software que no puedo cambiar, que se une a ciertos puertos UDP y envía mensajes salientes en esos mismos puertos. Me gustaría interceptar y enrutar esos mensajes, pero no puedo vincularme a esos mismos puertos porque ese software ya los vincula.

Respuestas (2)

En primer lugar, ya tiene uno en casi todas las plataformas que tienen una interfaz de red. Se llama interfaz de bucle invertido y, de hecho, es una de las formas más rápidas de hacer este tipo de cosas. De manera predeterminada, esto proporciona una dirección para todo el sistema, pero en muchas plataformas, pero si usa IPv4, puede agregar varias direcciones fuera del bloque 127.0.0.0/8 y, por lo general, funcionará correctamente (lamentablemente, no puede). No haga esto con IPv6, ya que solo hay una dirección reservada allí para el uso de loopback).

Sin embargo, existen múltiples opciones alternativas, según el sistema en el que se esté ejecutando:

  • Interfaces de puente de software. En muchos sistemas UNIX, puede crear puentes Ethernet en el software para proporcionar un puente transparente entre varias interfaces físicas. En la mayoría de estos sistemas, en realidad no tiene que vincular ninguna interfaz física a ellos, y solo puede usar los puentes como interfaces de red internas privadas.
  • Linux proporciona un controlador especial que se puede usar para hacer literalmente exactamente lo que está pidiendo. Los dispositivos virtuales que proporciona se conocen como "dispositivos virtuales de pares de ethernet". Con este controlador, obtiene dos interfaces de red que simulan un enlace Ethernet (latencia casi nula).
  • Muchos sistemas operativos que tienen una pila de red moderna proporcionan un tipo especial de interfaz de red que permite que una aplicación proporcione una emulación de red básica. En la mayoría de los sistemas, se conocen como interfaces tune tap(la diferencia es qué capa están emulando) y se usan para una amplia variedad de cosas, desde interfaces VPN hasta emulación de red para máquinas virtuales.
  • Un poco poco convencional, pero ya mencionó el software de emulación en serie, así que lo mencionaré aquí: podría ejecutar PPP o SLIP sobre el enlace en serie emulado. En realidad, esta podría ser una de las mejores opciones, ya que debería evitar cualquier optimización del sistema operativo que pueda interferir con el enrutamiento que desea hacer.
  • Como mencionó Lucio Crusca, podría usar una máquina virtual para esto, aunque diría que probablemente sea una exageración en la mayoría de los sistemas (excepto Windows, porque hacer cosas complicadas de red es un dolor de cabeza).
  • VDE , también conocido como Virtual Distributed Ethernet, podría funcionar para lo que necesita. Está diseñado principalmente para proporcionar una red ethernet emulada a máquinas virtuales que están ubicadas físicamente lejos unas de otras, pero también puede operar localmente.
  • Open vSwitch , otra tecnología orientada a la virtualización, también puede serle útil.
Gracias por el lote de grandes ideas! Una solución nativa de pila de red como 127.0.0.0/8 sería increíble: ¿sabe cómo hacerlo? Estoy un poco familiarizado con tun and tap de OpenVPN: ¿podemos llegar a eso de alguna manera nativa? (Mi preocupación más inmediata es Windows, actualizaré la etiqueta de mi Q).
Aquí hay algo sobre el uso del controlador tun de OpenVPN por sí mismo , que parece no funcionar para lo que están intentando, pero no está claro si funcionaría para UDP.
Creo que puede hacer lo mismo que los controladores tuny tapen Windows utilizando controladores creados de forma nativa (esto es lo que hacen la mayoría de las ofertas de VM en Windows), pero es mucho más esfuerzo.

No dijo qué sistema operativo está usando, de todos modos, siempre es posible instalar una máquina virtual ( VirtualBox en Windows, qemu/KVM en Linux, por ejemplo) e instalar su software en eso.

A partir de ahí tienes toda una red virtual donde puedes añadir todo tipo de routers virtuales que necesites.

¡Gracias! Consideré una máquina virtual, pero es bastante pesado solo para el controlador de Ethernet, y hacer que se active al iniciar la máquina y luego iniciar nuestro software parece mucho.
Si lo compara con la molestia de configurar interfaces virtuales en Windows, probablemente esté mejor con la virtualización. Por cierto, iniciar una máquina virtual en el arranque es bastante sencillo con VirtualBox o cualquier otro sistema de virtualización, lo mismo es cierto para su software en la máquina virtual...