58 votes

Comment diriger une route IP à travers une interface spécifique dans OS X ?

Je suis sur un mac et j'essaie d'acheminer une adresse particulière via une passerelle spécifique sur ma connexion wifi.

Je l'utilise :

route add -host 54.81.143.201 192.168.15.1

Parfois, cela fonctionne, d'autres fois non. Ce que j'ai découvert, c'est que l'interface qu'il choisit est différente à chaque fois. Il faut que ce soit en0 pour travailler

netstat -nr la sortie quand elle ne fonctionne pas :

54.81.143.201      192.168.15.1       UGHS            1       89     en5

Voici quand cela fonctionne : (note en0)

54.81.143.201      192.168.15.1       UGHS            0        1     en

Pourquoi est-ce que je fais ça ? Parce que notre entreprise a un proxy sur lequel HipChat ne fonctionne pas. Je fais donc passer le trafic de HipChat par un réseau wifi ouvert tout en restant sur le réseau Ethernet de mon entreprise.

EDITAR:

J'ai également 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é ma table de routage complète, 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

1voto

Daniel B Points 52129

L'OS X route est documentée aquí . Le site -ifscope Le paramètre et sa valeur vous permettent de spécifier une route liée à une interface.

Ce n'est toutefois pas ce que vous voulez. Vous devez réparer vos réseaux pour que leurs plages d'adresses IP soient uniques. En dehors de cela, les métriques d'interface (alias priorités) affectent l'interface qui est choisie parmi d'autres options tout aussi opportunes.

0voto

parleer Points 107

Voici comment traduire le nom défini par l'utilisateur "Wi-Fi" en n'importe quel nom de périphérique (par exemple, en0, en1, en9, ...) que MacOS a attribué à ce moment-là.

Vous pouvez placer ces fonctions dans un script spécifique, ou simplement les garder dans vos .bash_profile .

function get_srvc_name ()
{
  cat <<EOF | scutil | \
    grep 'UserDefinedName' | \
    awk -F': ' '{print $2}'
show Setup:/Network/Service/$1
EOF
}

function get_srvc_ids ()
{
  cat <<EOF | scutil | \
    sed -nEe '
/ServiceOrder/ {
  :ids
  n
  /[0-9]+ :/ {
    s/ *[0-9]+ : ([0-9A-Z-]+) */\1/p
    b ids
  }
}'
show Setup:/Network/Global/IPv4
EOF
}

function get_srvc_id_by_name ()
{
  local srvc_ids=$(get_srvc_ids)

  for srvc_id in $srvc_ids
  do
    local srvc_name=$(get_srvc_name "$srvc_id")
    if [[ "$srvc_name" == "$1" ]]
    then
      echo $srvc_id
      return
    fi
  done
}

function get_int_name ()
{
  local srvc_id=$(get_srvc_id_by_name "$1")

  cat <<EOF | scutil | \
    sed -nEe '
    s/ *DeviceName : ([a-zA-Z0-9]+) */\1/p'
show Setup:/Network/Service/$srvc_id/Interface
EOF
}

Alors appelez simplement get_int_name 'Wi-Fi' pour obtenir le nom du périphérique attribué.

Par exemple :

route add -host 54.81.143.201 -interface $(get_int_name 'Wi-Fi')

-1voto

BRampersad Points 582

Vous devriez essayer d'ajouter le nom de la carte réseau :

route add -net 10.13.0.0 netmask 255.255.0.0 dev NicNameHere

Cela fonctionne pour moi sous CentOS.

-1voto

KaneNFL443 Points 1

Donc, le serveur du fournisseur avec lequel vous essayez de parler concernant le service "HipChat" que vous revendiquez est 54.81.143.201 ? Dans ce cas, je ferais une entrée de routage pour 54.81.143.0 255.255.255.0 pour lui donner une plus grande portée. Peut-être que lorsque vous utilisez le logiciel, vous ne parlez pas toujours à ce serveur spécifique, mais à un groupe d'entre eux sur le même sous-réseau 54.81.143.0/24. En outre, assurez-vous que vos métriques de route sont correctes lorsque vous créez une nouvelle entrée. Si vous créez une route vers 54.81.143.0/24 192.168.15.1 Metric 20 En5, mais que vous avez également une route vers 0.0.0.0/0 10.7.90.1 Metric 10 En0. L'ordinateur ignorera votre nouvelle entrée et continuera à acheminer le trafic par la route par défaut (via En0) parce qu'elle est plus préférable. Je n'ai fait qu'effleurer le sujet et je voulais le signaler. Merci !

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