ifpps: Remove unused 'forks' member from struct ifstat
[netsniff-ng.git] / astraceroute.8
blob34dbc54f2fc53eb0f18873a27dcdf1116cba157b
1 .\" netsniff-ng - the packet sniffing beast
2 .\" Copyright 2013 Daniel Borkmann.
3 .\" Subject to the GPL, version 2.
4 .PP
5 .TH ASTRACEROUTE 8 "03 March 2013" "Linux" "netsniff-ng toolkit"
6 .SH NAME
7 astraceroute \- autonomous system trace route utility
8 .PP
9 .SH SYNOPSIS
10 .PP
11 \fB astraceroute\fR [\fIoptions\fR]
12 .PP
13 .SH DESCRIPTION
14 astraceroute is a small utility to retrieve path information in a traceroute
15 like way, but with additional geographical location information. It tracks the
16 route of a packet from the local host to the remote host by sucessively
17 increasing the IP's TTL field in the hope, that the intermediate node sends a
18 ICMP TIME_EXCEEDED notification back to us.
19 .PP
20 astraceroute supports IPv4 and IPv6 queries and will display country and city
21 information, if available, as well as the AS number the hop belongs to and its
22 ISP name. astraceroute also displays timing information and reverse DNS data.
23 .PP
24 Due to astraceroute's configurability it is also possible to gather some more
25 useful information about the hop regarding what it does and doesn't pass through.
26 I.e. astraceroute also allows some clear text strings for probing DPIs or
27 ``great firewalls'' that would filter out blacklisted critical keywords. This
28 tool might be a good start for further in-depth analysis of such systems.
29 .PP
30 .SH OPTIONS
31 .PP
32 .SS -H <host>, --host <host>
33 Hostname or IPv4 or IPv6 address of the remote host where the AS route should
34 be traced to. In case of an IPv6 address or host, option ``\-6'' must be
35 used. IPv4 is the default.
36 .PP
37 .SS -p <port>, --port <port>
38 TCP port for the remote host to use. If not specified, the default
39 port to be used is 80.
40 .PP
41 .SS -i <device>, -d <device>, --dev <device>
42 Networking device to start the trace route from, e.g. eth0, wlan0.
43 .PP
44 .SS -f <ttl>, --init-ttl <ttl>
45 Initial TTL value to be used. This option might be useful if you are not
46 interested in the first n hops, but only follow-up ones. The default
47 initial TTL value is 1.
48 .PP
49 .SS -m <ttl>, --max-ttl <ttl>
50 Maximum TTL value to be used. If not otherwise specified, the maximum
51 TTL value is 30. Thus, after this has been reached astraceroute exits.
52 .PP
53 .SS -q <num>, --num-probes <num>
54 Specifies the number of queries to be done on a particular hop. The
55 default is 2 query requests.
56 .PP
57 .SS -x <sec>, --timeout <sec>
58 Tells astraceroute the probe response timeout in seconds, in other words
59 the maximum time astraceroute must wait for an ICMP response from the current
60 hop. The default is 3 seconds.
61 .PP
62 .SS -X <string>, --payload <string>
63 Places an ASCII cleartext into the packet payload. Cleartext that
64 contains whitespaces must be put into quotes (e.g., "censer me").
65 .PP
66 .SS -l <len>, --totlen <len>
67 Specifies the total length of the packet. Payload that does not have a
68 cleartext string in it is padded with random garbage.
69 .PP
70 .SS -4, --ipv4
71 Use IPv4 only requests. This is the default.
72 .PP
73 .SS -6, --ipv6
74 Use IPv6 only requests. This must be used when passing an IPv6 host as an
75 argument.
76 .PP
77 .SS -n, --numeric
78 Tells astraceroute to not perform reverse DNS lookup for hop replies. The
79 reverse option is ``\-N''.
80 .PP
81 .SS -u, --update
82 The built-in geo-database update mechanism will be invoked to get Maxmind's
83 latest version. To configure search locations for databases, the file
84 /etc/netsniff-ng/geoip.conf contains possible addresses. Thus, to save bandwidth
85 or for mirroring Maxmind's databases (to bypass their traffic limit policy),
86 different hosts or IP addresses can be placed into geoip.conf, separated by
87 a newline.
88 .PP
89 .SS -L, --latitude
90 Also show latitude and longtitude of hops.
91 .PP
92 .SS -N, --dns
93 Tells astraceroute to perform reverse DNS lookup for hop replies. The
94 reverse option is ``\-n''.
95 .PP
96 .SS -S, --syn
97 Use TCP's SYN flag for the request.
98 .PP
99 .SS -A, --ack
100 Use TCP's ACK flag for the request.
102 .SS -F, --fin
103 Use TCP's FIN flag for the request.
105 .SS -P, --psh
106 Use TCP's PSH flag for the request.
108 .SS -U, --urg
109 Use TCP's URG flag for the request.
111 .SS -R, --rst
112 Use TCP's RST flag for the request.
114 .SS -E, --ecn-syn
115 Use TCP's ECN flag for the request.
117 .SS -t <tos>, --tos <tos>
118 Explicitly specify IP's TOS.
120 .SS -G, --nofrag
121 Set IP's no fragmentation flag.
123 .SS -Z, --show-packet
124 Show and dissect the returned packet.
126 .SS -v, --version
127 Show version information and exit.
129 .SS -h, --help
130 Show user help and exit.
132 .SH USAGE EXAMPLE
134 .SS astraceroute -i eth0 -N -S -H netsniff-ng.org
135 This sends out a TCP SYN probe via the ``eth0'' networking device to the
136 remote IPv4 host netsniff-ng.org. This request is most likely to pass. Also,
137 tell astraceroute to perform reverse DNS lookups for each hop.
139 .SS astraceroute -6 -i eth0 -S -E -N -H www.6bone.net
140 In this example, a TCP SYN/ECN probe for the IPv6 host www.6bone.net is being
141 performed. Also in this case, the ``eth0'' device is being used as well as a
142 reverse DNS lookup for each hop.
144 .SS astraceroute -i eth0 -N -F -H netsniff-ng.org
145 Here, we send out a TCP FIN probe to the remote host netsniff-ng.org. Again,
146 on each hop a reverse DNS lookup is being done and the queries are transmitted
147 from ``eth0''. IPv4 is used.
149 .SS astraceroute -i eth0 -N -FPU -H netsniff-ng.org
150 As in most other examples, we perform a trace route to IPv4 host netsniff-ng.org
151 and do a TCP Xmas probe this time.
153 .SS astraceroute -i eth0 -N -H netsniff-ng.org -X "censor-me" -Z
154 In this example, we have a Null probe to the remote host netsniff-ng.org, port
155 80 (default) and this time, we append the cleartext string "censor-me" into the
156 packet payload to test if a firewall/DPI will let this string pass. Such a trace
157 could be done once without and once with a blacklisted string to gather possible
158 information about censorhsip.
160 .SH NOTE
161 If a TCP-based probe will fail after a number of retries, astraceroute will
162 automatically fall back to ICMP-based probes to pass through firewalls resp.
163 routers.
165 To gather more information about astraceroute's displayed AS numbers, see e.g.,
166 http://bgp.he.net/AS<number>.
168 .SH BUGS
169 The geographical locations are estimated with the help of Maxmind's GeoIP
170 database and can or cannot deviate from the actual real physical location.
171 What one can do to decrease a possible error rate is to update the database
172 regularly e.g. with astraceroute's \-\-update option.
174 At some point in time, we need a similar approach to gather more reliable path
175 information such as in paris-traceroute.
177 Due to the generic nature of astraceroute, it currently has a built-in mechanism
178 to stop the trace after a static number of hops, since the configurable TCP flags
179 can have anything included. It is possible to decrease this number of course.
180 In the future, if a SYN probe is sent out, there should be a listener thus we can
181 stop the trace if we detect a handshake in progress.
183 .SH LEGAL
184 astraceroute is licensed under the GNU GPL version 2.0.
186 .SH HISTORY
187 .B astraceroute
188 was originally written for the netsniff-ng toolkit by Daniel Borkmann. It
189 is currently maintained by Tobias Klauser <tklauser@distanz.ch> and Daniel
190 Borkmann <dborkma@tik.ee.ethz.ch>.
192 .SH SEE ALSO
193 .BR netsniff-ng (8),
194 .BR trafgen (8),
195 .BR mausezahn (8),
196 .BR ifpps (8),
197 .BR bpfc (8),
198 .BR flowtop (8),
199 .BR curvetun (8)
201 .SH AUTHOR
202 Manpage was written by Daniel Borkmann.