Question Obtenir l'interface et l'adresse IP utilisées pour se connecter à un hôte spécifique (ip)


Je suis sûr que cette question a déjà été posée et que l'on y a déjà répondu, mais je n'ai pas réussi à la trouver. J'espère donc que cela permettra au moins de relier quelqu'un au bon endroit.

Je souhaite connaître mon interface locale et mon adresse IP utilisées pour atteindre un hôte donné. Par exemple, si trois adaptateurs sont connectés à ma boîte et qu’ils sont tous les trois connectés à des réseaux différents, j'aimerais savoir lequel des trois (son adresse IP en particulier) est utilisé pour accéder à my.local.intranet (dans ce cas). cas, ce serait une interface de tunnel VPN). Je suppose que c'est un travail pour ifconfig ou traceroute, mais je n'ai pas été en mesure de trouver les bons commutateurs.

J'utilise OSX 10.7 (Darwin)

EDIT: Pour faciliter l’accès, c’est ce que j’ai écrit pour réussir le tour de main:

ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/"

Toute amélioration / optimisation est la bienvenue.


6
2018-06-22 20:19


origine




Réponses:


Vous pouvez essayer "route" pour imprimer votre table de routage qui vous montrera les réseaux et les passerelles de destination pour vos différentes interfaces.

Si les adresses IP ne vous aident pas à déterminer facilement l'interface, exécutez "traceroute", après avoir exécuté route, examinez le premier saut et comparez-le aux passerelles associées depuis "route" et voilà, votre interface.

#route
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
145.67.4.0      switch47        255.255.255.0     U     0      0      eth0
192.168.1.0     localrouter     255.255.255.0     U     0      0      eth1

#traceroute <destination>
1    switch47.ba.foo.com   (145.67.4.1)    0.5 ms  .....
2    xxxxx.xxx.xxxx        (xxx.xxx.xxx.xxx)   0.Xms. ...

7
2018-06-22 20:30



J'ai fini par utiliser route. Je vous remercie. Voici ma dernière commande: ifconfig `route get <host> | grep "interface: " | sed "s/[^:]*: \(.*\)/\1/"` | grep "inet " | sed "s/.*inet \([0-9.]*\) .*/\1/". Cela fonctionne, mais toute suggestion / optimisation est la bienvenue. - umop
Ahh ok, j'allais juste dire, je recommanderais vraiment l'approche de mgorven indiquée ici, mais si vous n'avez pas d'ip sur Mac OS, je suis heureux que cela aide. - Univ426


route -n obtenir www.yahoo.com

Je cours sous x 10.6.8


6
2018-01-05 17:24



C'est ce que je cherchais quand je suis arrivé ici. Bon travail. - Amos Shapira


Vous pouvez utiliser ip route get pour trouver et sortir l'itinéraire qui serait utilisé pour une destination spécifiée. La sortie doit inclure l'interface et l'adresse source.

% ip route get 8.8.8.8
8.8.8.8 via 172.16.4.1 dev eth1  src 172.16.4.36

3
2018-06-22 20:43



Je suis désolé. J'ai oublié de spécifier le système d'exploitation. Je suis sous OSX. Non ip ici. = ( - umop


Je ne sais pas si cela est correct, mais Netstat pourrait le faire. Il montre l'adresse locale des connexions établies.

# netstat -nt
Proto Recv-Q Send-Q Local Address           Foreign Address         State      
...
tcp        0      0 192.168.1.61:44114      64.34.119.101:80        ESTABLISHED
tcp        0      0 192.168.1.61:36036      107.21.205.201:80       ESTABLISHED

1
2018-06-22 20:27



C’est le bon moyen de déterminer quelle adresse IP locale a été utilisée. - bahamat