mdocify and update the traceroute(8) manual page.
Reviewed by: brueffer No objection: ru, uqs
This commit is contained in:
parent
f4ae3eee14
commit
49074c51cc
@ -16,113 +16,64 @@
|
||||
.\" $Id: traceroute.8,v 1.19 2000/09/21 08:44:19 leres Exp $
|
||||
.\" $FreeBSD$
|
||||
.\"
|
||||
.TH TRACEROUTE 8 "19 February 2008"
|
||||
.UC 6
|
||||
.SH NAME
|
||||
traceroute \- print the route packets take to network host
|
||||
.SH SYNOPSIS
|
||||
.na
|
||||
.B traceroute
|
||||
[
|
||||
.B \-adDeFISnrvx
|
||||
] [
|
||||
.B \-f
|
||||
.I first_ttl
|
||||
] [
|
||||
.B \-g
|
||||
.I gateway
|
||||
]
|
||||
.br
|
||||
.ti +8
|
||||
[
|
||||
.B \-i
|
||||
.I iface
|
||||
] [
|
||||
.B \-M
|
||||
.I first_ttl
|
||||
]
|
||||
.br
|
||||
.ti +8
|
||||
[
|
||||
.B \-m
|
||||
.I max_ttl
|
||||
] [
|
||||
.B \-P
|
||||
.I proto
|
||||
] [
|
||||
.B \-p
|
||||
.I port
|
||||
]
|
||||
.br
|
||||
.ti +8
|
||||
[
|
||||
.B \-q
|
||||
.I nqueries
|
||||
] [
|
||||
.B \-s
|
||||
.I src_addr
|
||||
] [
|
||||
.B \-t
|
||||
.I tos
|
||||
]
|
||||
.br
|
||||
.ti +8
|
||||
[
|
||||
.B \-w
|
||||
.I waittime
|
||||
] [
|
||||
.B \-A
|
||||
.I as_server
|
||||
] [
|
||||
.B \-z
|
||||
.I pausemsecs
|
||||
]
|
||||
.br
|
||||
.ti +8
|
||||
.I host
|
||||
[
|
||||
.I packetlen
|
||||
]
|
||||
.ad
|
||||
.SH DESCRIPTION
|
||||
.Dd June 19, 2012
|
||||
.Dt TRACEROUTE 8
|
||||
.Os
|
||||
.Sh NAME
|
||||
.Nm traceroute
|
||||
.Nd "print the route packets take to network host"
|
||||
.Sh SYNOPSIS
|
||||
.Nm
|
||||
.Bk -words
|
||||
.Op Fl adDeFISnrvx
|
||||
.Op Fl f Ar first_ttl
|
||||
.Op Fl g Ar gateway
|
||||
.Op Fl M Ar first_ttl
|
||||
.Op Fl m Ar max_ttl
|
||||
.Op Fl P Ar proto
|
||||
.Op Fl p Ar port
|
||||
.Op Fl q Ar nqueries
|
||||
.Op Fl s Ar src_addr
|
||||
.Op Fl t Ar tos
|
||||
.Op Fl w Ar waittime
|
||||
.Op Fl A Ar as_server
|
||||
.Op Fl z Ar pausemsecs
|
||||
.Ar host
|
||||
.Op Ar packetlen
|
||||
.Ek
|
||||
.Sh DESCRIPTION
|
||||
The Internet is a large and complex aggregation of
|
||||
network hardware, connected together by gateways.
|
||||
Tracking the route one's packets follow (or finding the miscreant
|
||||
gateway that's discarding your packets) can be difficult.
|
||||
.I Traceroute
|
||||
.Nm
|
||||
utilizes the IP protocol `time to live' field and attempts to elicit an
|
||||
ICMP TIME_EXCEEDED response from each gateway along the path to some
|
||||
host.
|
||||
.PP
|
||||
.Pp
|
||||
The only mandatory parameter is the destination host name or IP number.
|
||||
The default probe datagram length is 40 bytes, but this may be increased
|
||||
by specifying a packet length (in bytes) after the destination host
|
||||
name.
|
||||
.PP
|
||||
.Pp
|
||||
Other options are:
|
||||
.TP
|
||||
.B \-a
|
||||
.Bl -tag -width Ds
|
||||
.It Fl a
|
||||
Turn on AS# lookups for each hop encountered.
|
||||
.TP
|
||||
.B -A
|
||||
.It Fl A Ar as_server
|
||||
Turn on AS# lookups and use the given server instead of the
|
||||
default.
|
||||
.TP
|
||||
.B \-e
|
||||
.It Fl e
|
||||
Firewall evasion mode.
|
||||
Use fixed destination ports for UDP and TCP probes.
|
||||
The destination port does NOT increment with each packet sent.
|
||||
.TP
|
||||
.B \-f
|
||||
.It Fl f Ar first_ttl
|
||||
Set the initial time-to-live used in the first outgoing probe packet.
|
||||
.TP
|
||||
.B \-F
|
||||
.It Fl F
|
||||
Set the "don't fragment" bit.
|
||||
.TP
|
||||
.B \-d
|
||||
.It Fl d
|
||||
Enable socket level debugging.
|
||||
.TP
|
||||
.B \-D
|
||||
.It Fl D
|
||||
When an ICMP response to our probe datagram is received,
|
||||
print the differences between the transmitted packet and
|
||||
the packet quoted by the ICMP response.
|
||||
@ -133,74 +84,66 @@ Bytes that are unchanged in the quoted packet are shown as underscores.
|
||||
Note,
|
||||
the IP checksum and the TTL of the quoted packet are not expected to match.
|
||||
By default, only one probe per hop is sent with this option.
|
||||
.TP
|
||||
.B \-g
|
||||
.It Fl g Ar gateway
|
||||
Specify a loose source route gateway (8 maximum).
|
||||
.TP
|
||||
.B \-i
|
||||
.It Fl i Ar iface
|
||||
Specify a network interface to obtain the source IP address for
|
||||
outgoing probe packets. This is normally only useful on a multi-homed
|
||||
host. (See the
|
||||
.B \-s
|
||||
.Fl s
|
||||
flag for another way to do this.)
|
||||
.TP
|
||||
.B \-I
|
||||
.It Fl I
|
||||
Use ICMP ECHO instead of UDP datagrams. (A synonym for "-P icmp").
|
||||
.TP
|
||||
.B \-M
|
||||
.It Fl M Ar first_ttl
|
||||
Set the initial time-to-live value used in outgoing probe packets.
|
||||
The default is 1, i.e., start with the first hop.
|
||||
.TP
|
||||
.B \-m
|
||||
.It Fl m Ar max_ttl
|
||||
Set the max time-to-live (max number of hops) used in outgoing probe
|
||||
packets. The default is
|
||||
.I net.inet.ip.ttl
|
||||
hops (the same default used for TCP
|
||||
packets. The default is the value of the
|
||||
.Va net.inet.ip.ttl
|
||||
.Xr sysctl 8
|
||||
(the same default used for TCP
|
||||
connections).
|
||||
.TP
|
||||
.B \-n
|
||||
.It Fl n
|
||||
Print hop addresses numerically rather than symbolically and numerically
|
||||
(saves a nameserver address-to-name lookup for each gateway found on the
|
||||
path).
|
||||
.TP
|
||||
.B \-P
|
||||
.It Fl P Ar proto
|
||||
Send packets of specified IP protocol. The currently supported protocols
|
||||
are: UDP, TCP, GRE and ICMP. Other protocols may also be specified (either by
|
||||
name or by number), though
|
||||
.I traceroute
|
||||
.Nm
|
||||
does not implement any special knowledge of their packet formats. This
|
||||
option is useful for determining which router along a path may be
|
||||
blocking packets based on IP protocol number. But see BUGS below.
|
||||
.TP
|
||||
.B \-p
|
||||
.It Fl p Ar port
|
||||
Protocol specific. For UDP and TCP, sets
|
||||
the base port number used in probes (default is 33434).
|
||||
the base
|
||||
.Ar port
|
||||
number used in probes (default is 33434).
|
||||
Traceroute hopes that nothing is listening on UDP ports
|
||||
.I base
|
||||
.Em base
|
||||
to
|
||||
.I base + nhops * nprobes - 1
|
||||
.Em base + nhops * nprobes - 1
|
||||
at the destination host (so an ICMP PORT_UNREACHABLE message will
|
||||
be returned to terminate the route tracing). If something is
|
||||
listening on a port in the default range, this option can be used
|
||||
to pick an unused port range.
|
||||
.TP
|
||||
.B \-q
|
||||
.It Fl q Ar nqueries
|
||||
Set the number of probes per hop (default is 3,
|
||||
unless
|
||||
.B -D
|
||||
.Fl D
|
||||
is specified,
|
||||
when it is 1).
|
||||
.TP
|
||||
.B \-r
|
||||
.It Fl r
|
||||
Bypass the normal routing tables and send directly to a host on an attached
|
||||
network.
|
||||
If the host is not on a directly-attached network,
|
||||
an error is returned.
|
||||
This option can be used to ping a local host through an interface
|
||||
that has no route through it (e.g., after the interface was dropped by
|
||||
.IR routed (8C)).
|
||||
.TP
|
||||
.B \-s
|
||||
.Xr routed 8 .
|
||||
.It Fl s Ar src_addr
|
||||
Use the following IP address (which usually is given as an IP number, not
|
||||
a hostname) as the source address in outgoing probe packets. On
|
||||
multi-homed hosts (those with more than one IP
|
||||
@ -209,15 +152,13 @@ force the source address to be something other than the IP address
|
||||
of the interface the probe packet is sent on. If the IP address
|
||||
is not one of this machine's interface addresses, an error is
|
||||
returned and nothing is sent. (See the
|
||||
.B \-i
|
||||
.Fl i
|
||||
flag for another way to do this.)
|
||||
.TP
|
||||
.B \-S
|
||||
.It Fl S
|
||||
Print a summary of how many probes were not answered for each hop.
|
||||
.TP
|
||||
.B \-t
|
||||
.It Fl t Ar tos
|
||||
Set the
|
||||
.I type-of-service
|
||||
.Em type-of-service
|
||||
in probe packets to the following value (default zero). The value must be
|
||||
a decimal integer in the range 0 to 255. This option can be used to
|
||||
see if different types-of-service result in different paths. (If you
|
||||
@ -226,72 +167,69 @@ services like telnet and ftp don't let you control the TOS).
|
||||
Not all values of TOS are legal or
|
||||
meaningful \- see the IP spec for definitions. Useful values are
|
||||
probably
|
||||
.RB ` -t
|
||||
.IR 16 '
|
||||
.Fl t Ar 16
|
||||
(low delay) and
|
||||
.RB ` -t
|
||||
.IR 8 '
|
||||
.Fl t Ar 8
|
||||
(high throughput).
|
||||
.TP
|
||||
.B \-v
|
||||
Verbose output. Received ICMP packets other than TIME_EXCEEDED and
|
||||
UNREACHABLEs are listed.
|
||||
.TP
|
||||
.B \-w
|
||||
.It Fl v
|
||||
Verbose output. Received ICMP packets other than
|
||||
.Dv TIME_EXCEEDED
|
||||
and
|
||||
.Dv UNREACHABLE Ns s
|
||||
are listed.
|
||||
.It Fl w Ar waittime
|
||||
Set the time (in seconds) to wait for a response to a probe (default 5
|
||||
sec.).
|
||||
.TP
|
||||
.B \-x
|
||||
.It Fl x
|
||||
Toggle ip checksums. Normally, this prevents traceroute from calculating
|
||||
ip checksums. In some cases, the operating system can overwrite parts of
|
||||
the outgoing packet but not recalculate the checksum (so in some cases
|
||||
the default is to not calculate checksums and using
|
||||
.B \-x
|
||||
.Fl x
|
||||
causes them to be calculated). Note that checksums are usually required
|
||||
for the last hop when using ICMP ECHO probes
|
||||
.RB ( \-I ).
|
||||
.Pq Fl I .
|
||||
So they are always calculated when using ICMP.
|
||||
.TP
|
||||
.B \-z
|
||||
.It Fl z Ar pausemsecs
|
||||
Set the time (in milliseconds) to pause between probes (default 0).
|
||||
Some systems such as Solaris and routers such as Ciscos rate limit
|
||||
icmp messages. A good value to use with this this is 500 (e.g. 1/2 second).
|
||||
.PP
|
||||
.El
|
||||
.Pp
|
||||
This program attempts to trace the route an IP packet would follow to some
|
||||
internet host by launching UDP probe
|
||||
packets with a small ttl (time to live) then listening for an
|
||||
ICMP "time exceeded" reply from a gateway. We start our probes
|
||||
with a ttl of one and increase by one until we get an ICMP "port
|
||||
unreachable" (which means we got to "host") or hit a max (which
|
||||
defaults to
|
||||
.I net.inet.ip.ttl
|
||||
hops & can be changed with the
|
||||
.B \-m
|
||||
defaults to the amount of hops specified by the
|
||||
.Va net.inet.ip.ttl
|
||||
.Xr sysctl 8
|
||||
and can be changed with the
|
||||
.Fl m
|
||||
flag). Three
|
||||
probes (change with
|
||||
.B \-q
|
||||
.Fl q
|
||||
flag) are sent at each ttl setting and a
|
||||
line is printed showing the ttl, address of the gateway and
|
||||
round trip time of each probe. If the probe answers come from
|
||||
different gateways, the address of each responding system will
|
||||
be printed. If there is no response within a 5 sec. timeout
|
||||
interval (changed with the
|
||||
.B \-w
|
||||
.Fl w
|
||||
flag), a "*" is printed for that
|
||||
probe.
|
||||
.PP
|
||||
.Pp
|
||||
We don't want the destination
|
||||
host to process the UDP probe packets so the destination port is set to an
|
||||
unlikely value (if some clod on the destination is using that
|
||||
value, it can be changed with the
|
||||
.B \-p
|
||||
.Fl p
|
||||
flag).
|
||||
.PP
|
||||
.Pp
|
||||
A sample use and output might be:
|
||||
|
||||
.RS
|
||||
.nf
|
||||
[yak 71]% traceroute nis.nsf.net.
|
||||
.Bd -literal -offset 4n
|
||||
% traceroute nis.nsf.net.
|
||||
traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet
|
||||
1 helios.ee.lbl.gov (128.3.112.1) 19 ms 19 ms 0 ms
|
||||
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 39 ms 19 ms
|
||||
@ -304,21 +242,18 @@ traceroute to nis.nsf.net (35.1.1.48), 64 hops max, 38 byte packet
|
||||
9 129.140.71.6 (129.140.71.6) 139 ms 239 ms 319 ms
|
||||
10 129.140.81.7 (129.140.81.7) 220 ms 199 ms 199 ms
|
||||
11 nic.merit.edu (35.1.1.48) 239 ms 239 ms 239 ms
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.Ed
|
||||
.Pp
|
||||
Note that lines 2 & 3 are the same. This is due to a buggy
|
||||
kernel on the 2nd hop system \- lilac-dmc.Berkeley.EDU \- that forwards
|
||||
packets with a zero ttl (a bug in the distributed version
|
||||
of 4.3BSD). Note that you have to guess what path
|
||||
the packets are taking cross-country since the NSFNet (129.140)
|
||||
doesn't supply address-to-name translations for its NSSes.
|
||||
.PP
|
||||
.Pp
|
||||
A more interesting example is:
|
||||
|
||||
.RS
|
||||
.nf
|
||||
[yak 72]% traceroute allspice.lcs.mit.edu.
|
||||
.Bd -literal -offset 4n
|
||||
% traceroute allspice.lcs.mit.edu.
|
||||
traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max
|
||||
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
|
||||
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 19 ms 19 ms
|
||||
@ -338,15 +273,14 @@ traceroute to allspice.lcs.mit.edu (18.26.0.115), 64 hops max
|
||||
16 * * *
|
||||
17 * * *
|
||||
18 ALLSPICE.LCS.MIT.EDU (18.26.0.115) 339 ms 279 ms 279 ms
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.Ed
|
||||
.Pp
|
||||
Note that the gateways 12, 14, 15, 16 & 17 hops away
|
||||
either don't send ICMP "time exceeded" messages or send them
|
||||
with a ttl too small to reach us. 14 \- 17 are running the
|
||||
MIT C Gateway code that doesn't send "time exceeded"s. God
|
||||
only knows what's going on with 12.
|
||||
.PP
|
||||
.Pp
|
||||
The silent gateway 12 in the above may be the result of a bug in
|
||||
the 4.[23]BSD network code (and its derivatives): 4.x (x <= 3)
|
||||
sends an unreachable message using whatever ttl remains in the
|
||||
@ -354,9 +288,7 @@ original datagram. Since, for gateways, the remaining ttl is
|
||||
zero, the ICMP "time exceeded" is guaranteed to not make it back
|
||||
to us. The behavior of this bug is slightly more interesting
|
||||
when it appears on the destination system:
|
||||
|
||||
.RS
|
||||
.nf
|
||||
.Bd -literal -offset 4n
|
||||
1 helios.ee.lbl.gov (128.3.112.1) 0 ms 0 ms 0 ms
|
||||
2 lilac-dmc.Berkeley.EDU (128.32.216.1) 39 ms 19 ms 39 ms
|
||||
3 lilac-dmc.Berkeley.EDU (128.32.216.1) 19 ms 39 ms 19 ms
|
||||
@ -370,9 +302,8 @@ when it appears on the destination system:
|
||||
11 * * *
|
||||
12 * * *
|
||||
13 rip.Berkeley.EDU (128.32.131.22) 59 ms ! 39 ms ! 39 ms !
|
||||
.fi
|
||||
.RE
|
||||
|
||||
.Ed
|
||||
.Pp
|
||||
Notice that there are 12 "gateways" (13 is the final
|
||||
destination) and exactly the last half of them are "missing".
|
||||
What's really happening is that rip (a Sun-3 running Sun OS3.5)
|
||||
@ -383,77 +314,82 @@ ICMP's) until we probe with a ttl that's at least twice the path
|
||||
length. I.e., rip is really only 7 hops away. A reply that
|
||||
returns with a ttl of 1 is a clue this problem exists.
|
||||
Traceroute prints a "!" after the time if the ttl is <= 1.
|
||||
Since vendors ship a lot of obsolete (DEC's Ultrix, Sun 3.x) or
|
||||
non-standard (HPUX) software, expect to see this problem
|
||||
Since vendors ship a lot of obsolete
|
||||
.Pf ( Tn DEC Ns \'s
|
||||
Ultrix, Sun 3.x) or
|
||||
non-standard
|
||||
.Pq Tn HP-UX
|
||||
software, expect to see this problem
|
||||
frequently and/or take care picking the target host of your
|
||||
probes.
|
||||
|
||||
Other possible annotations after the time are
|
||||
.BR !H ,
|
||||
.BR !N ,
|
||||
or
|
||||
.B !P
|
||||
(host, network or protocol unreachable),
|
||||
.B !S
|
||||
(source route failed),
|
||||
.B !F\-<pmtu>
|
||||
(fragmentation needed \- the RFC1191 Path MTU Discovery value is displayed),
|
||||
.B !U
|
||||
or
|
||||
.B !W
|
||||
(destination network/host unknown),
|
||||
.B !I
|
||||
(source host is isolated),
|
||||
.B !A
|
||||
(communication with destination network administratively prohibited),
|
||||
.B !Z
|
||||
(communication with destination host administratively prohibited),
|
||||
.B !Q
|
||||
(for this ToS the destination network is unreachable),
|
||||
.B !T
|
||||
(for this ToS the destination host is unreachable),
|
||||
.B !X
|
||||
(communication administratively prohibited),
|
||||
.B !V
|
||||
(host precedence violation),
|
||||
.B !C
|
||||
(precedence cutoff in effect), or
|
||||
.B !<num>
|
||||
(ICMP unreachable code <num>).
|
||||
.Pp
|
||||
Other possible annotations after the time are:
|
||||
.Bl -hang -offset indent -width 12n
|
||||
.It Sy !H
|
||||
Host unreachable.
|
||||
.It Sy !N
|
||||
Network unreachable.
|
||||
.It Sy !P
|
||||
Protocol unreachable.
|
||||
.It Sy !S
|
||||
Source route failed.
|
||||
.It Sy !F\-<pmtu>
|
||||
Fragmentation needed.
|
||||
The RFC1191 Path MTU Discovery value is displayed.
|
||||
.It Sy !U
|
||||
Destination network unknown.
|
||||
.It Sy !W
|
||||
Destination host unknown.
|
||||
.It Sy !I
|
||||
Source host is isolated.
|
||||
.It Sy !A
|
||||
Communication with destination network administratively prohibited.
|
||||
.It Sy !Z
|
||||
Communication with destination host administratively prohibited.
|
||||
.It Sy !Q
|
||||
For this ToS the destination network is unreachable.
|
||||
.It Sy !T
|
||||
For this ToS the destination host is unreachable.
|
||||
.It Sy !X
|
||||
Communication administratively prohibited.
|
||||
.It Sy !V
|
||||
Host precedence violation.
|
||||
.It Sy !C
|
||||
Precedence cutoff in effect.
|
||||
.It Sy !<num>
|
||||
ICMP unreachable code <num>.
|
||||
.El
|
||||
.Pp
|
||||
These are defined by RFC1812 (which supersedes RFC1716).
|
||||
If almost all the probes result in some kind of unreachable, traceroute
|
||||
If almost all the probes result in some kind of unreachable,
|
||||
.Nm
|
||||
will give up and exit.
|
||||
.PP
|
||||
.Pp
|
||||
This program is intended for use in network testing, measurement
|
||||
and management.
|
||||
It should be used primarily for manual fault isolation.
|
||||
Because of the load it could impose on the network, it is unwise to use
|
||||
.I traceroute
|
||||
.Nm
|
||||
during normal operations or from automated scripts.
|
||||
.SH SEE ALSO
|
||||
pathchar(8), netstat(1), ping(8)
|
||||
.SH AUTHOR
|
||||
.Sh SEE ALSO
|
||||
.Xr netstat 1 ,
|
||||
.Xr ping 8 ,
|
||||
.Xr ping6 8 ,
|
||||
.Xr traceroute6 8 .
|
||||
.Sh AUTHORS
|
||||
Implemented by Van Jacobson from a suggestion by Steve Deering. Debugged
|
||||
by a cast of thousands with particularly cogent suggestions or fixes from
|
||||
C. Philip Wood, Tim Seaver and Ken Adelman.
|
||||
.LP
|
||||
The current version is available via anonymous ftp:
|
||||
.LP
|
||||
.RS
|
||||
.I ftp://ftp.ee.lbl.gov/traceroute.tar.gz
|
||||
.RE
|
||||
.SH BUGS
|
||||
.Sh BUGS
|
||||
When using protocols other than UDP, functionality is reduced.
|
||||
In particular, the last packet will often appear to be lost, because
|
||||
even though it reaches the destination host, there's no way to know
|
||||
that because no ICMP message is sent back.
|
||||
In the TCP case,
|
||||
.I traceroute
|
||||
.Nm
|
||||
should listen for a RST from the destination host (or an intermediate
|
||||
router that's filtering packets), but this is not implemented yet.
|
||||
.PP
|
||||
Please send bug reports to traceroute@ee.lbl.gov.
|
||||
.PP
|
||||
.Pp
|
||||
The AS number capability reports information that may sometimes be
|
||||
inaccurate due to discrepancies between the contents of the
|
||||
routing database server and the current state of the Internet.
|
||||
|
Loading…
Reference in New Issue
Block a user