Je suis sur un Mac et j'essaie de router une adresse particulière via une passerelle spécifique sur ma connexion wifi.
J'utilise:
route add -Host 54.81.143.201 192.168.15.1
Parfois, cela fonctionnera, d'autres fois, cela ne fonctionnera pas. Ce que j'ai trouvé, c'est que l'interface choisie est différente à chaque fois. Il faut ot en0
pour fonctionner
netstat -nr
sortie quand ça ne marche pas:
54.81.143.201 192.168.15.1 UGHS 1 89 en5
C'est quand ça marche: (note en0)
54.81.143.201 192.168.15.1 UGHS 0 1 en
Pourquoi est-ce que je fais cela? Parce que notre société a un proxy sur lequel HipChat ne fonctionne pas. Je dirige donc le trafic hipchat via un réseau wifi ouvert tout en restant connecté à Ethernet.
MODIFIER:
J'ai aussi essayé d'ajouter l'entrée en utilisant uniquement l'interface
route add -Host 54.81.143.201 -interface en0
54.81.143.201 78:31:c1:c7:52:74 UHS 0 2 en0
HipChat ne parvient pas à se connecter.
EDIT 2: Quelqu'un a demandé toute ma table de routage, la voici aujourd'hui. Notez que 54.81.143.201 est maintenant lié à en3 et non en0
Internet:
Destination Gateway Flags Refs Use Netif Expire
default 10.7.90.1 UGSc 31 6 en3
10.7.90/24 link#4 UCS 4 0 en3
10.7.90.1 0:23:ac:3d:db:c2 UHLWIir 16 0 en3 1200
10.7.90.44 40:6c:8f:19:4a:bb UHLWI 0 3 en3 946
10.7.90.63 127.0.0.1 UHS 0 0 lo0
54.81.143.201 192.168.15.1 UGHS 0 0 en3
127 127.0.0.1 UCS 0 0 lo0
127.0.0.1 127.0.0.1 UH 3 209 lo0
169.254 link#4 UCS 1 0 en3
169.254.255.255 0:23:ac:3d:db:c2 UHLSW 0 0 en3
Essayer:
route add -Host 54.81.143.201 -interface en0
Comme d'autres l'ont indiqué, il s'agit en réalité de 3 problèmes.
Votre interface sans fil semble changer entre en0, en3 et en5.
Sur mon MacBook Air, en0 est toujours sans fil. Thunderbolt-to-Ethernet est toujours en3 et USB-to-Ethernet est toujours en5. Mais si vous connectez un adaptateur à un autre port de votre Mac, son nom NIC change. Vous devez d'abord résoudre ce problème. Assurez-vous que votre réseau sans fil porte toujours le même nom. Sinon, lorsque vous entrez la commande static route, s'il n'y a pas de NIC connecté à l'emplacement en0
, la commande échouera (évidemment) avec une "erreur d'adresse" (l'adresse physique n'a pas de lien).
De même, assurez-vous que l'adaptateur se connecte toujours au même SSID. L'adresse de la passerelle doit évidemment être valide pour le sous-réseau, et différents réseaux WiFi auront différents sous-réseaux. Cela peut provoquer un autre type d'erreur.
Vous n'avez pas précisé si le sans fil est votre seule connexion réseau. Compte tenu de ce qui précède, je suppose que non ...? Ceci et la mise en réseau virtuelle due à VMware ou Parallels peuvent entraîner des complexités supplémentaires. (Par exemple, si les deux réseaux connectés utilisent le même espace IP ... Les machines virtuelles sont souvent reliées par un pont et possèdent leurs propres adresses IP/routes/liens ...). L'affichage d'une topologie de réseau serait utile.
Une fois que cela est fait, essayez soit Sudo route add -Host 54.81.143.201 -iface en0
, soit Sudo ipfw
. Si vous n'êtes pas sûr du nom de l'adaptateur, vous pouvez plutôt spécifier son adresse MAC, comme suit: Sudo route add -Host 54.81.143.201 -link 14:10:9f:e7:fd:0a
Connexes: https://discussions.Apple.com/thread/5049994?searchText=policy%20route
Si vous redémarrez, cela ne persistera peut-être pas. Vous devrez gérer cela séparément.
Cette solution fonctionne sur le dernier MacOS 10.12 (Sierra). Voici le Gist .
#!/bin/bash
# NOTE: wifi network interface is: en1
wifi_router=192.168.200.1
wifi_address=en1:ec.35.86.4f.00.cc
TOADDR=`ifconfig en1 inet | sed -nl 's/\w*inet \([^ ]*\).*/\1/p'`
TO=`echo -n ${TOADDR//[[:space:]]}`
echo "ADDING ROUTE TO $1 VIA en1 (wi-fi): $TO"
route -n add -Host $1 $wifi_router -ifp $wifi_address -ifa $TO -static
echo ""
echo "ROUTE ADDED:"
route get $1
Utilisez comme ceci:
> Sudo ./route_wifi.sh IP_ADDRESS
Il suppose que l’interface wifi est: en1 .
N'oubliez pas de mettre les valeurs correctes pour wifi_router et wifi_address variables. Remarque wifi_address format, qui est: nom de l’interface réseau ': ' adresse mac d’interface avec '. 'délimiteurs. Bien sûr, la plupart des informations requises peuvent être analysées à partir de ifconfig , mais je suis trop paresseux pour cela =)
J'ai pu ajouter une route via une interface en utilisant l'option -link
pour spécifier une adresse MAC.
route add -Host 54.81.143.201 -link [mac addr of 192.168.15.1 on en0]
Cela enverra du trafic pour 54.81.143.201
par l'interface appropriée.
Vous avez attribué deux adresses d'hôte 192.168.15.*
distinctes, une à chaque interface, n'est-ce pas? Sinon, vous pouvez envoyer du trafic à partir de l'une ou l'autre interface, mais le trafic sera renvoyé sur l'adresse IP source des paquets.
Sudo route -n add -net 54.81.143.201/32 192.168.15.1
La commande route
de OS X est documentée ici . Le paramètre -ifscope
et sa valeur vous permettent de spécifier un itinéraire lié à une interface.
Ce n'est cependant pas ce que vous voulez. Vous devez réparer vos réseaux pour que leurs plages IP soient uniques. En dehors de cela, les métriques d'interface (ou priorités) affectent l'interface choisie parmi les options tout aussi opportunes.