Me gustaría enrutar algunas aplicaciones a través de WiFi y otras a través de ethernet. Dado que OSX tiene una amplia gama de herramientas y utilidades del sistema, así como una rica esfera de aplicaciones, ¿cómo puedo hacer que suceda? *
Me gustaría enrutar algunas aplicaciones a través de WiFi y otras a través de ethernet. Dado que OSX tiene una amplia gama de herramientas y utilidades del sistema, así como una rica esfera de aplicaciones, ¿cómo puedo hacer que suceda? *
Me gustaría enrutar algunas aplicaciones a través de WiFi y otras aplicaciones a través de Ethernet.
Lamentablemente, esta no es la forma en que funciona (en red). No puedes decir que quieres que Safari pase por un puerto de red y que iTunes pase por otro. El problema con esto radica en el hecho de que las aplicaciones en sí mismas no hacen la conexión de red: hacen una llamada a la red ( zócalos de Berkeley ) API que realiza la conexión y vincula el proceso al propio socket.
En los términos más simples, el flujo se ve así:
Cuandosuprocesolocal(laaplicaciónencuestión)deseaestablecerunaconexión,solicitaquesecreeunsocket.PartedeesasolicitudincluyeladirecciónIP,laconexiónserealizaylaaplicaciónestávinculadaaella.Laaplicaciónluegoenvíayrecibedatosatravésdeesesocket.
Laclavearecordaraquíesquelaaplicaciónsolicitaunsocketbasadoenladireccióndered.Apartede(suponiendoqueestáenunaredconunsolosegmento),solotienedosrutas:
Sitienedosinterfacesconectadasaestaredúnica,susrutassesuperpondránylainterfazconprioridadserálaprincipal.
Cualquierasealaaplicaciónqueseejecute,dirá:"Quiero ir a foo.bar.com
", que se traducirá en una dirección IP y se creará un socket en la ruta que lo lleve allí. El punto es que tu aplicación no tiene control sobre el asunto.
Sin embargo, digamos que estás conectado a dos redes diferentes:
Ethernet (en0) -> 1.2.3.0
WiFi (en1) -> 5.6.7.0
Si hay un servidor de archivos con una IP de 1.2.3.4, todo el tráfico destinado a esa dirección pasará a través de Ethernet. Si su WiFi está configurado para acceder a Internet, todas las llamadas a 1.2.3.0 y todas las demás direcciones pasarán por en1. Nuevamente, su aplicación no tiene nada que decir al respecto y el socket se realizará en función del destino.
¿Puede una aplicación utilizar una interfaz de red específica?
Sí, por supuesto que puede, pero esto es algo que se hace en el nivel de origen de la aplicación porque es el que realiza la llamada a la API. Si lo codificas para usar una interfaz específica, lo hará (no es práctico en ningún sentido, pero tienes la capacidad).
Línea inferior: para que una aplicación externa redirija el tráfico en función de la aplicación que use, tendría que insertarse entre la aplicación y la pila de protocolos del sistema operativo y eso simplemente no va a suceder.
Depende de qué aplicaciones estemos hablando y qué es exactamente lo que quieres lograr. En algunos casos, puede sobrevivir utilizando pf y el enrutamiento basado en políticas (enrutamiento de origen) según el puerto de origen o los puertos de destino de sus aplicaciones. Sin embargo, esto normalmente solo es posible con aplicaciones que son "simples" para la red (es decir, por ejemplo, solo se conecta a un único servicio).
Parece que aún no existe una solución genérica en un formato perfectamente empaquetado que solo puede descargar y usar sin una experiencia especial.
Si desea implementar una solución de este tipo, deseará usar la variable de entorno DYLD_INSERT_LIBRARIES al iniciar sus aplicaciones para inyectar su propia biblioteca compartida en el proceso. Esa biblioteca compartida debería entonces anular la llamada bind () para asegurarse de que el proceso se enlaza a la IP de su interfaz WiFi o Ethernet, dependiendo de la aplicación.
Lo más cercano que se me ocurre es que se denomina priorización de paquetes (por lo que las aplicaciones no estarían en la misma conexión Ethernet que interfiere entre ellas) está disponible en la placa base "Fatal1ty Z370 Professional Gaming i7", pero cuesta $ 200. Board y es una solución de hardware, no creo que haya un software capaz de esto, pero podría estar equivocado, espero que esto haya ayudado.
Lea otras preguntas en las etiquetas wifi network ethernet applications router