37

How can I determine the IP route taken for a specific IP destination (without looking at "route print" and figuring it out manually)?

In OS X there's route get 1.2.34 and in Linux there's /sbin/ip route get 1.2.3.4. Is there anything like that on Windows?

1

3 Answers 3

13

Yep. Open a command line and type tracert 1.2.3.4

5
  • Heh, good point. Not an optimal solution, since it does query the network for something you know locally, but for the most part, gives me the information I need.
    – Ilya
    Oct 13, 2011 at 23:17
  • 1
    @Ilya: Using -d (no resolve IP) and -w 0 (don't wait for ping) should speed up the scan a lot.
    – Hello71
    Oct 14, 2011 at 0:30
  • 20
    This doesn't really do the same thing. The route get commands the original posted mentions perform a lookup in the local routing table and return the result. For example, you can ask ip route get 192.168.1.32/28 to find which routing table entry will be used for that network, but you can't ask tracert about network blocks.
    – larsks
    Nov 4, 2012 at 3:31
  • 1
    @Hello71 -w 0 is not working in my case (gives error Bad value for option -w.). -w 1 works however. May 7, 2015 at 9:14
  • 11
    This is not the correct answer. tracert doesn't give the routing information such as which interface is being used. Aug 1, 2016 at 1:20
75

In Powershell:

Find-NetRoute -RemoteIPAddress "10.0.0.34" | Select-Object ifIndex,InterfaceAlias,DestinationPrefix,NextHop,RouteMetric -Last 1

ifIndex           : 10
InterfaceAlias    : Ethernet 2
DestinationPrefix : 10.64.0.0/10
NextHop           : 0.0.0.0
RouteMetric       : 0
3
  • 4
    tbh this should be upvoted more. Find-NetRoute is probably the closest you're going to get to ip route get on Windows.
    – Bratchley
    Jun 20, 2017 at 17:56
  • Note that this will not work on Windows 7 (and lower). Should work on Windows 8 (and above).
    – Nux
    Jul 23, 2018 at 12:47
  • 2
    This should be the accepted answer. Btw, powershell seems not designed for daily interactive use ...
    – cyfdecyf
    Dec 5, 2019 at 8:22
18

The pathping command is similar to tracert but includes the outgoing interface.

Using cygwin, this command gives the outgoing IP/interface for a particular destination (specified by $HOST):

pathping -n -w 1 -h 1 -q 1 $HOST | head -n 4 | tail -n 1 | awk '{print $2}'

2
  • 3
    This is a better answer. pathping -n -w 1 -h 1 -q 1 $HOST was also very informative for me. Helped me figure out a problem I was having.
    – jenming
    Feb 27, 2017 at 5:55
  • An alternative that doesn't depend on output appearing on line 4 exactly: pathping.exe -n -w 1 -h 1 -q 1 $HOST | grep -Pom1 '^\s+0\s+\K[\d\.]+'. This matches on the first hop (has a 0 prefix)
    – ardnew
    Oct 26, 2023 at 18:19

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .