Was ist das GNU / Linux-Äquivalent zu BSDs "route get ..."?

16

Der BSD- routeBefehl verfügt über eine Funktion, die anzeigt, welche Route für einen bestimmten Host ausgewählt wird. Beispielsweise:

/Users/mhaase $ route get google.com
   route to: iad23s07-in-f8.1e100.net
destination: iad23s07-in-f8.1e100.net
    gateway: 10.36.13.1
  interface: en0
      flags: <UP,GATEWAY,HOST,DONE,WASCLONED,IFSCOPE,IFREF>
 recvpipe  sendpipe  ssthresh  rtt,msec    rttvar  hopcount      mtu     expire
       0         0         0         0         0         0      1500         0 

Ich finde dies gelegentlich nützlich, wenn ich manuell mit Routingtabellen experimentiere, um sicherzustellen, dass die Routingregeln wie erwartet funktionieren.

Die GNU-Version von route hat nicht denselben Unterbefehl "get". Gibt es ein Äquivalent oder eine Alternative für GNU / Linux?

Mark E. Haase
quelle
1
Ich habe nach / BSD / äquivalent von ip ro gesucht, aber diese Seite reicht immer noch :)
Benjamin Goodacre

Antworten:

21

Es gibt

ip route get 74.125.137.100

Aber es löst keine Hostnamen auf (was ich für eine gute Sache halte). Der Befehl ist normalerweise in iproute- oder iproute2-Paketen verfügbar.

Philippe Gauthier
quelle
3
ip route get "$(dig google.com +short)"für die Auflösung von Hostnamen.
Jordanien
5
@jordanm, eher wie:dig google.com +short | xargs -tn1 ip route get
Stéphane Chazelas
1
@ StéphaneChazelas, bitte lassen Sie mich wissen, dass für diesen obigen Linux-Befehl ein Internet erforderlich ist oder er das Ergebnis aus einer beliebigen Routing-Tabelle / einem Cache abruft.
kd12
Der Befehl 'dig' führt eine DNS-Suche durch. Dies erfordert möglicherweise einen Netzwerkzugriff, es sei denn, der DNS-Eintrag befindet sich im lokalen Cache.
WillW
> aber es löst keine Hostnamen auf (was ich für eine gute Sache halte) - ist es Ihnen wichtig zu erklären, warum Sie der Meinung sind, dass die dadurch verursachten Unannehmlichkeiten wirklich etwas wert sind?
Poige