3 votes

OSX Yosemite - Comment ajouter une route ayant deux passerelles par défaut ?

Je suis sous OSX Yosemite et j'ai deux connexions actives différentes... - WIFI (en0) - Tethering USB (en7)

SnakeBook:~ root# netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           14        4     en0
default            192.168.42.129     UGScI           0        0     en7

Maintenant... j'ai besoin d'ajouter une route pour naviguer sur certains sites web avec une connexion tethering. Par exemple, je veux effectuer un test de vitesse sur speedtest.net en utilisant en7. Speedtest est résolu de cette façon par mon DNS (192.168.1.1 qui utilise OpenDNS)...

SnakeBook:~ root# nslookup speedtest.net
Server:     192.168.1.1
Address:    192.168.1.1#53

Non-authoritative answer:
Name:   speedtest.net
Address: 216.146.46.10
Name:   speedtest.net
Address: 216.146.46.11

Maintenant, j'ai ajouté deux itinéraires :

SnakeBook:~ root# route add -host 216.146.46.10 192.168.42.129
add host 216.146.46.10: gateway 192.168.42.129
SnakeBook:~ root# route add -host 216.146.46.11 192.168.42.129
add host 216.146.46.11: gateway 192.168.42.129
SnakeBook:~ root# netstat -nr
Routing tables

Internet:
Destination        Gateway            Flags        Refs      Use   Netif Expire
default            192.168.1.1        UGSc           14        4     en0
default            192.168.42.129     UGScI           0        0     en7
127                127.0.0.1          UCS             0        0     lo0
127.0.0.1          127.0.0.1          UH              3    13259     lo0
169.254            link#4             UCS             0        0     en0
169.254            link#12            UCSI            0        0     en7
192.168.1          link#4             UCS             3        0     en0
192.168.1.1/32     link#4             UCS             1        0     en0
192.168.1.1        0:1c:f0:38:4e:49   UHLWIir        17      509     en0   1199
192.168.1.4/32     link#4             UCS             0        0     en0
192.168.1.7        30:59:b7:a6:3b:cf  UHLWI           0        0     en0   1155
192.168.1.8        64:9a:be:ee:43:93  UHLWI           0        0     en0   1105
192.168.1.255      ff:ff:ff:ff:ff:ff  UHLWbI          0        3     en0
192.168.42         link#12            UCS             1        0     en7
192.168.42.114/32  link#12            UCS             1        0     en7
192.168.42.129/32  link#12            UCS             1        0     en7
192.168.42.129     76:0:b4:4:cc:38    UHLWIir         3        2     en7    713
192.168.42.255     ff:ff:ff:ff:ff:ff  UHLWbI          0        3     en7
216.146.46.10      192.168.42.129     UGHS            0        0     en7
216.146.46.11      192.168.42.129     UGHS            0        0     en7

et en essayant un traceroute sur speedtest.net, cela semble fonctionner correctement.

SnakeBook:~ root# traceroute speedtest.net
traceroute: Warning: speedtest.net has multiple addresses; using 216.146.46.11
traceroute to speedtest.net (216.146.46.11), 64 hops max, 52 byte packets
 1  192.168.42.129 (192.168.42.129)  0.760 ms  0.192 ms  0.366 ms
 ...
 ...    
12  * *^C

Le problème se pose lorsque j'utilise mon navigateur. En utilisant le navigateur, le trafic passe toujours par en0 gw et non par en7 gw. Ce problème est-il dû à l'existence de "deux" passerelles par défaut ?

J'ai essayé de supprimer le gw en7, mais il supprime toujours mon gw en0 :

SnakeBook:tmp root# netstat -nr | grep default
default            192.168.1.1        UGSc           30        4     en0
default            192.168.42.129     UGScI           0        0     en7
SnakeBook:tmp root# 
SnakeBook:tmp root# 
SnakeBook:tmp root# route delete default 192.168.42.129
delete net default: gateway 192.168.42.129
SnakeBook:tmp root# 
SnakeBook:tmp root# 
SnakeBook:tmp root# netstat -nr | grep default
default            192.168.42.129     UGScI           0        0     en7

Une suggestion ?

Merci de votre attention !

3voto

titusn Points 105

Je me suis attaqué à un problème similaire : Comment définir des métriques d'interface spécifiques à une route sous Mac OS X et je suis tombé sur la réponse à votre question. Voici ce que fait Mac OS X : comme il voit deux routes vers la cible, il choisit celle qui a la priorité la plus élevée (comme indiqué dans cette excellente réponse : https://superuser.com/a/525592/169461 ). Bien entendu, modifier cette priorité pour chaque itinéraire n'est pas ce que vous souhaitez.

Ce que vous voulez faire, c'est ajouter une route vers cette IP particulière avec l'interface spécifiée :

sudo route add -host 216.146.46.10 -iface en7

Notez qu'après un redémarrage, cet itinéraire disparaîtra à nouveau. Je n'ai pas encore réussi à faire persister des routes statiques dans OS X Yosemite (j'ai essayé une approche utilisant un fichier .plist dans /Library/LaunchAgents comme discuté ici : https://www.jverdeyen.be/mac/persistent-static-routes-mac-os-x/ ).

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X