Forcer une application à utiliser une interface réseau spécifique

48

J'utilise plusieurs interfaces réseau (LAN et sans fil) et j'ai remarqué qu'il était possible de modifier l'ordre des interfaces préférées. Comment puis-je utiliser le réseau câblé pour travailler, vérifier les e-mails, etc. (en toute sécurité) et utiliser le VLAN sans fil pour accéder à d'autres éléments (autrement bloqués par des ports et parfois par WebSense)?

Kami
la source

Réponses:

22

L'astuce consiste à ajuster les tables de routage (qui ne dépendent pas du port de destination ou de l'application source, mais dépendent de l'hôte de destination). Cela suppose que vous êtes sous Linux ou OS X (comme le montrent les tags).

Disons que votre passerelle par défaut est 1.2.3.4 et que vous avez un vpn qui peut acheminer le trafic sur 6.7.8.9. Si vous voulez que votre trafic de courrier route au-dessus de 6.7.8.9, faites juste

sudo route add mail.myserver.com 6.7.8.9

Certaines versions de route peuvent nécessiter un mot clé "gw" entre l'adresse et le saut suivant. Si vous voulez créer un itinéraire complet pour le saut suivant, ajoutez simplement un masque de réseau en notation CIDR pour la destination, comme

sudo route add 192.168.0.0/24 6.7.8.9

Si vous souhaitez afficher la table de routage existante, utilisez

netstat -nrl
or
ip route list

Si vous êtes sur Windows, "net route" vous mènera la plupart du temps, mais la syntaxe est totalement différente.

Tim Hatch
la source
17
Ce n'est pas vraiment une réponse, n'est-ce pas? La question est de savoir comment forcer une application et non un site Web. Par exemple, je voulais que Safari passe par VPN (ppp0) mais Firefox en0 quel que soit le site auquel ils ont accès? C'est la question.
Gman
2
@gman: Rien dans cette réponse n'est spécifique aux sites Web.
Courses de légèreté avec Monica
3
L'OP veut choisir l'interface réseau en fonction du programme d'application. Cette réponse montre comment choisir en fonction de l'hôte de destination.
Bennett McElwee
Je ne vais pas baisser la voix de ce point (c'est un bon conseil pour une autre question), mais je ne vais certainement pas non plus faire de changement de voix (pour les raisons indiquées par @gman et @ bennett-mcelwee).
ratskin
Comme indiqué ci-dessus, cela ne répond pas à la question de savoir comment verrouiller une application spécifique sur une carte réseau spécifique.
catchdave
6

Si vous souhaitez simplement activer deux cartes réseau en même temps, vous pouvez définir la commande de service dans Préférences Système / Réseau en sélectionnant le rapport situé sous la liste des périphériques réseau. Glissez-déposez l'ordre dans lequel vous les souhaitez.

Par exemple, Ether et WiFi sont toujours actifs sur mon MBP avec Ether défini au-dessus de Wi-Fi. Depuis que j'utilise Ether au travail, j'ai configuré cette carte réseau avec les paramètres de proxy et mon réseau Wi-Fi sans. Quand je rentre chez moi, il n’est pas nécessaire de modifier les paramètres. Vous pouvez également le faire depuis un terminal utilisant /usr/bin/networksetup -ordernetworkservices.

Mais pour avoir à la fois actif et une application utilisant le non-défaut, j'ai eu de la chance avec une rotation légèrement plus facile sur les conseils de @ Andor. Si je souhaite qu'une application n'utilise pas Ether dans mon cas, je règle les paramètres de proxy de l'application sur l'adresse IP de mon adaptateur Wi-Fi. Il utilisera cette interface pour sortir et contournera ainsi le proxy de la société et les serveurs de surveillance. Donc, si Ether a une adresse de 1.2.3.4 et vient avant Wi-Fi (5.6.7.8) dans l'ordre de service, mon proxy d'application est défini à 5.6.7.8.

SaxDaddy
la source
5

Pour Mac, il existe une solution simple que j'utilise. C'est en fait une implémentation de la solution de @ Andor. Installez un proxy et configurez vos applications pour l'utiliser:

  1. J'ai installé SquidMan

  2. En configuration, ajoutez la ligne suivante. Vous devez spécifier l'adresse IP que vous utiliserez pour vos applications privées au lieu de x.x.x.x:

    tcp_outgoing_address x.x.x.x
    
  3. Démarrez SquidMan et configurez votre application pour l'utiliser comme proxy.

J'ai passé une heure à trouver cette information sur différentes pages. J'espère donc que cela aidera les autres à le faire plus rapidement.

matrik
la source
Devrait fonctionner de la même façon sous Windows et semble être la seule solution élégante!
TJJ
1

Vous devrez probablement utiliser les fonctions de contrôle IO de bas niveau (ioctl). En particulier:

ioctl( socket, SIOCGIFADDR, ... ); // Get network interface address

et

ioctl( socket, SIOCSIFADDR, ... ); // Set network interface address

Voir cette page de manuel pour plus de détails.


la source
1

Le problème est que vous allez avoir plusieurs passerelles vers votre connexion réseau, ce qui est un peu difficile à gérer ...

Certains outils unix et linux liés au serveur ou au réseau ont généralement un drapeau appelé "interface", qui indique quelle interface vous souhaitez utiliser, comme dans tcpdump, par exemple:

tcpdump -i eth0

Mais comme je pense que vous parlez du routage des logiciels de bureau standard, cela devient un peu plus difficile ...

Quoi qu'il en soit, je peux vous donner une astuce ... Mon moyen habituel de résoudre ce problème consiste à utiliser un proxy et à ne disposer que d’une passerelle. Presque tous les logiciels qui utilisent Internet de nos jours ont des options pour configurer un proxy. Vous pouvez donc le faire de l'une des façons suivantes:

1.- Configurer un proxy sur la partie "non sécurisée" de votre réseau et indiquer votre logiciel à ce proxy.

2.- Configurer un serveur SSH sur un autre lieu "non sécurisé", par exemple votre domicile ou un serveur dédié que vous avez sur Internet, et ouvrir une connexion via une fonction spéciale de SSH qui crée un serveur proxy chaussettes:

ssh -D 1234 user@host

Cela créerait sur votre ordinateur un serveur proxy chaussettes sur le port "1234", qui se connecterait à votre "hôte", en utilisant votre "utilisateur", et passerait à Internet via la connexion que votre "hôte" avait ... Ensuite, sur votre logiciel local, vous devez uniquement ouvrir les outils de configuration de proxy et pointer sur localhost: 1234.

Astuces pour éviter les politiques Internet des entreprises: P

:RÉ

Andor
la source
1

Je lance mes applications métier dans une machine virtuelle. J'ai utilisé les instructions ci-dessus pour définir le WiFi comme connexion préférée, puis j'ai configuré la machine virtuelle pour utiliser le port Ethernet en tant qu'adaptateur "ponté".

Tout ce qui tourne à l'intérieur de la machine virtuelle est maintenant lié au port Ethernet. Le WiFi est ma connexion préférée pour toutes les autres applications (en dehors de la machine virtuelle), à ​​condition que je dispose d'une connexion WiFi connectée.

Je crois qu'il existe des utilitaires pouvant forcer la liaison d'une application à un port Ethernet particulier, mais je n'ai pas effectué de recherche à ce sujet pour MacOS.

La méthode de routage mentionnée précédemment est quelque peu complexe pour le "profane", mais elle semble également être une bonne approche viable, en particulier si vous obtenez à plusieurs reprises la même adresse IP sur vos connexions.

Riches
la source
0

Même si cette question concerne OSX, je vais laisser ici le texte suivant, qui fonctionne sous Windows 7 64 bits. Cette question est apparue comme l'un des meilleurs résultats lors de la recherche sur Google pour forcer les applications à passer par un adaptateur spécifique . Les points suivants pourraient donc être utiles aux autres.

http://www.howtogeek.com/117890/how-to-force-an-application-to-use-a-specific-network-card/

Le guide ci-dessus utilise un utilitaire appelé ForceBindIp sur lequel il est annoncé de travailler, Windows NT/2000/XP/2003 mais je n’ai eu aucun problème à le faire fonctionner sous Windows 7 - 64 bits.

En outre, les questions avec ForceBindIP sur Windows 7 (64 bits)

Ashutosh Jindal
la source