Provided by: lft_3.91-1build2_amd64 bug

NAME

       lft  — display the route packets take to a network host/socket using one of several layer-4 protocols and
       methods; optionally show heuristic network information in transitu

SYNOPSIS

       lft [-d dport] [-s sport] [-m retry min] [-M retry max] [-a  ahead]  [-c  scatter  ms]  [-t  timeout  ms]
           [-l  min  ttl]  [-H  max  ttl]  [-L  length]  [-q  ISN]  [-D  device]  [-f  device]  [-G  icons path]
           [-ACEINPRSTUVbeghinpruvxyz] [<gateway> <...>] target:dport

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.  (from traceroute(8))

       lft  was  developed to automate a solution to the above, taking into account that modern networks contain
       many configurations of load balancers, proxies, and stateful firewalls.

       lft implements numerous network tracing methods and strategies.  Generally, lft sends  various  types  of
       layer-4  probes  utilizing  the  IP  protocol  `time  to live' field and attempts to elicit an ICMP `time
       exceeded in transit' response from each gateway along the path to some host.  RFC 1393  Traceroute  Using
       an IP Option is also available as one of several tracing methods.

       lft  additionally  listens  for various messages along the way to assist network managers in ascertaining
       per-protocol heuristic routing information.  lft can optionally retrieve various  information  about  the
       networks it traverses using a variety of sources such as registries, routing arbiters, etc.

       The  only  mandatory  parameter is the target host name or IP number.  Options toggle the display of more
       interesting data or change the variables of the trace itself.  The (-E/-e) adaptive option tries  several
       combinations of TCP states (changing flags inside the probes it sends) in order to improve the chances of
       a successful trace and expose stateful packet filters.

       Other options are:

       -d dport
               Set  dport  as the destination TCP port of the probes LFT generates.  Default is 80.  This option
               is useful to see if packets follow a different route based  on  protocol  destination,  a  likely
               scenario  when  load  balancers  or  proxies  are  involved.   This  option  may also bypass less
               sophisticated packet filter configurations.

       -s sport
               Set sport as the origin TCP port of the probes LFT generates.  Default is  53.   This  option  is
               useful  to see if packets follow a different route based on protocol source. This option may also
               bypass less sophisticated packet filter configurations.

       -z      Automatically select a pseudo-random source port.  This option may be useful if your local packet
               filter or proxy doesn't allow you to use source ports outside of the dymanic range allocation.

       -m min  Set min as the minimum number of re-attempts to send per host.  Default is 1 unless adaptive (-E)
               mode is used.

       -M max  Set max as the maximum number of re-attempts to send per host.  Default is 3.

       -a ahead
               Set ahead as the number of hops forward to query before waiting for a response.  Default is 5.

       -c scatter ms
               Set scatter ms as the minimum number of milliseconds to wait between sending probes.  Default  is
               20.

       -t timeout ms
               Set  timeout  ms  as  the  maximum  number  of  milliseconds  to wait before assuming a probe was
               lost/discarded.  Default is 1000.

       -l min ttl
               Set min tll as the minimum TTL (time-to-live) on outgoing probes (essentially, the first  hop  in
               the line that you want to display).  Default is 1.

       -q ISN  Set  ISN  as  the  ISN  (initial  sequence  number)  of  the  first probe.  If unset, one will be
               automatically generated using a pseudo-random, time-seeded algorithm.

       -L length
               Set length as the size of probe packets in bytes.  This includes layer-3 and layer-4 headers, but
               does not include layer-2 headers.  For example,  setting  the  length  to  1500  would  create  a
               1500-byte probe packet which would result in a 1514-byte frame on an Ethernet network.

       -D device
               Set  device  as the network device or address to receive traffic.  (e.g., "en1" or "1.2.3.4")  If
               unset, lft will attempt to determine and acquire the appropriate interface based on routing.

       -f device
               Set device as the network device or address to transmit traffic.  (e.g., "en1" or "1.2.3.4")   If
               unset,  lft  will  attempt  to  determine and acquire the appropriate interface based on routing.
               This serves to operate lft in a passive mode where you may transmit from a (potentially)  spoofed
               IP address on one interface, yet receive on another. This allows you to trace from a different IP
               address whose traffic you can see in order to intercept replies.

       -H ttl  Set ttl as the maximum TTL, essentially the maximum route traversal distance in hops.  Default is
               30.

       -G icons path
               Set icons path as the path to GraphViz icons in connection with GraphViz output.

       -I      Set  the  ToS  (Type  of  Serice)  bit  on  outgoing  IP  datagrams.   The ToS will be set to the
               differentiated services request minimize-delay.

       -i      Disable "stop" on ICMP other than TTL expired.

       -n      Print addresses numerically rather than symbolically and numerically.  Disables use  of  the  DNS
               resolver completely.

       -h      Print addresses symbolically rather than symbolically and numerically.  If the DNS resolver fails
               to resolve an address, the address is printed numerically.

       -E/e    Enable  use of the adaptive engine which tries several combinations of TCP states (changing flags
               inside the probes it sends) in order to improve the chances of a successful  trace.   The  engine
               also  displays other useful information such as stateful inspection firewalls or broken IP stacks
               encountered along the way.

       -F      Enable use of TCP packets with the FIN flag set.   This  strategy  fools  unsophisticated  packet
               filters  that  don't  maintain a proper state table.  Such devices will forward the packet to its
               destination rather than filter it, assuming a handshake has already taken place  and  the  probes
               are part of an existing and valid TCP stream.

       -u      Enable  use  of  UDP-based  probes  instead of TCP-based probes.  This strategy is similar to the
               traditional traceroute method, but many of LFT's other options (such as  source  and  destination
               port  selection)  are still available.  By default, LFT's UDP probes have a small payload (unlike
               LFT's TCP probes that carry no payload).

       -N      Enable lookup and display of network or AS names (e.g., [GNTY-NETBLK-4]).   This  option  queries
               Prefix  WhoIs,  RIPE  NCC,  or the RADB (as requested).  In the case of Prefix WhoIs or RADB, the
               network name is displayed.  In the case of RIPE NCC, the AS name is displayed.

       -P      Enable RFC 1393 tracing method using ICMP and  an  IP  option.   While  this  strategy  has  been
               formalized in an RFC, few network equipment vendors support it.

       -p      Enable  use  of  ICMP-based  probes  instead of TCP-based probes.  This strategy is sometimes the
               fastest, however firewalls commonly filter ICMP at network borders.  ICMP probes are echo request
               (ping) packets.

       -b      Enable TCP basic tracing method.  Unlike the default  method,  the  basic  method  generates  TCP
               probes  without  relying  upon  sequence  numbers  being conveyed correctly.  This makes LFT more
               comptabile with networks employing NAT, but is slower than the default  method.   TCP  basic  may
               also be used with adaptive mode (-E).

       -A      Enable  lookup and display of of AS (autonomous system) numbers (e.g., [1]).  This option queries
               one of several whois servers (see options 'C' and 'r') in order to ascertain the  origin  ASN  of
               the  IP  address in question.  By default, LFT uses the pWhoIs service whose ASN data tends to be
               more accurate and more timely than using the RADB as it is derived  from  the  Internet's  global
               routing table.  See www.pwhois.org

       -r      Force  use  of  the  RIPE NCC RIS whois service to lookup ASNs.  This is an alternative source of
               timely  ASN-related  information  built  using  the  Internet's  global   routing   table.    See
               www.ripe.net/projects/ris

       -C      Force  use  of  the  Cymru whois service to lookup ASNs.  This is an alternative source of timely
               ASN-related information built using the Internet's global routing table.  See www.cymru.com

       -R      Force use of the RADB whois service to lookup ASNs.  This tends to be quick, but  incomplete  and
               usually inaccurate with regard to the 'actual' Internet routing table.  See www.radb.net

       -T      Enable  display  of  LFT's execution timer.  This option places timers on the trace itself and on
               lookups and name resolution to show where LFT is spending its  time,  waiting  on  resolvers,  or
               processing trace packets.  Use with -V (verbose) to display additional detail.

       -U      Display all times in UTC/GMT0.  This option also enables the -T option automatically.

       -S      Suppress  display  of  the  real-time status bar.  This option makes LFT show its completed trace
               output only, no-frills.

       -x      Enable XML output and suppress all other output to stdout.

       -g      Enable GraphViz output and suppress all other output to stdout.

       -y      Enable network seam testing in connection with GraphViz output.

       -V      Display verbose output.  Use more V's for more info.

       -v      Display version information, then exit(1).

       Any hosts listed after these options and before the final host/target  will  comprise  the  loose  source
       route.   Since network operators have security concerns regarding the use of source routing, don't expect
       the LSRR options to do anything for you in most public networks.

EXAMPLES

       A sample use and output might be:

       [edge.lax]$ lft -S 4.2.2.2

       Hop  LFT trace to vnsc-bak.sys.gtei.net (4.2.2.2):80/tcp
        1   ln-gateway.centergate.com (206.117.161.1) 0.5ms
        2   isi-acg.ln.net (130.152.136.1) 2.3ms
        3   isi-1-lngw2-atm.ln.net (130.152.180.21) 2.5ms
        4   gigabitethernet5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249) 3.0ms
        5   p6-0.lsanca1-cr6.bbnplanet.net (4.24.4.2) 3.4ms
        6   p6-0.lsanca2-br1.bbnplanet.net (4.24.5.49) 3.3ms
        7   p15-0.snjpca1-br1.bbnplanet.net (4.24.5.58) 10.9ms
        8   so-3-0-0.mtvwca1-br1.bbnplanet.net (4.24.7.33) 11.1ms
        9   p7-0.mtvwca1-dc-dbe1.bbnplanet.net (4.24.9.166) 11.0ms
       10   vlan40.mtvwca1-dc1-dfa1-rc1.bbnplanet.net (128.11.193.67) 11.1ms
       **   [neglected] no reply packets received from TTLs 11 through 20
       **   [4.2-3 BSD bug] the next gateway may errantly reply with reused TTLs
       21   [target] vnsc-bak.sys.gtei.net (4.2.2.2) 11.2ms

       The (-S) option was used to suppress the real-time status bar for clean output.  LFT's "**" notifiers  in
       between  hops  10  and 21 represent additional useful information: the first is a "[neglected]" indicator
       that lets us know that none of the probes sent with the TTLs indicated elicited responses.  This could be
       for a variety of reasons, but the cause of this specific occurrence is described in the next  informative
       message  which  indicates that this is likely the result of a bug in the 4.[23] BSD network code (and its
       derivatives):  BSD 4.x (x < 3) sends an unreachable message using whatever TTL remains  in  the  original
       datagram.   Since, for gateways, the remaining TTL is zero, the ICMP "time exceeded" is guaranteed to not
       make it back to us.  LFT does its best to identify this condition rather than print lots and lots of hops
       that don't exist (trying to reach a high enough TTL).

       Now, using the adaptive engine option:

       [edge.lax]$ lft -E -S 4.2.2.1

       Hop  LFT trace to vnsc-pri.sys.gtei.net (4.2.2.1):80/tcp
        1   ln-gateway.centergate.com (206.117.161.1) 0.5/0.5ms
        2   isi-acg.ln.net (130.152.136.1) 2.1/2.3ms
        3   isi-1-lngw2-atm.ln.net (130.152.180.21) 2.6/7.1ms
        4   gigabitethernet5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249) 6.1/3.9ms
       **   [firewall] the next gateway may statefully inspect packets
        5   p0-0-0.lsanca1-csr1.bbnplanet.net (4.24.4.10) 155.4/3.7ms
        6   [target] vnsc-pri.sys.gtei.net (4.2.2.1) 22.6/3.7/*/*/*/*/*ms

       In the scenario above, the adaptive engine was able to identify a stateful, packet-inspecting firewall in
       the path.  Another example with more options:

       [edge.lax]$ lft -S -A -T -m 2 -d 80 -s 53 www.yahoo.com

       Hop  LFT trace to w9.scd.yahoo.com (66.218.71.88):80/tcp
        1   [226] ln-gateway.centergate.com (206.117.161.1)  1 ms
        2   [226] isi-acg.ln.net (130.152.136.1)  2 ms
        3   [226] isi-1-lngw2-atm.ln.net (130.152.180.21)  3 ms
        4   [1] gigether5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249)  3 ms
        5   [1] p6-0.lsanca1-cr6.bbnplanet.net (4.24.4.2)  5 ms
        6   [1] p6-0.lsanca2-br1.bbnplanet.net (4.24.5.49)  3 ms
        7   [1] p1-0.lsanca2-cr2.bbnplanet.net (4.25.112.1)  3 ms
        8   [16852] pos4-0.core1.LosAngeles1.Level3.net (209.0.227.57)  3 ms
        9   [3356] so-4-0-0.mp1.LosAngeles1.Level3.net (209.247.10.193)  3 ms
       10   [3356] so-3-0-0.mp2.SanJose1.Level3.net (64.159.1.130)  11 ms
       11   [3356] gige10-0.ipcolo4.SanJose1.Level3.net (64.159.2.42)  11 ms
       12   [3356] cust-int.level3.net (64.152.81.62)  52 ms
       13   [10310] vl17.bas2.scd.yahoo.com (66.218.64.150)  53 ms
       14   [10310] w9.scd.yahoo.com (66.218.71.88) [target]  54 ms

       LFT's trace took 5.23 seconds.  Resolution required 3.58 seconds.

       Note the -Ar above displays ASNs using the RADB as a whois source.  A better option may have been to  use
       the -A alone or perhaps -AC.

       And why not request netblock lookups?

       [edge.lax]$ lft -S -N www.microsoft.com

       Hop  LFT trace to www.us.microsoft.com (207.46.197.113):80/tcp
        1   [LOS-NETTOS-BLK4] ln-gateway.centergate.com (206.117.161.1)  2 ms
        2   [LOS-NETTOS] isi-acg.ln.net (130.152.136.1)  3 ms
        3   [LOS-NETTOS] isi-1-lngw2-pos.ln.net (130.152.80.30)  5 ms
        4   [GNTY-4-0] gigether5-0.lsanca1-cr3.bbnplanet.net (4.24.4.249)  4 ms
        5   [GNTY-4-0] p6-0.lsanca1-cr6.bbnplanet.net (4.24.4.2)  3 ms
        6   [GNTY-4-0] p6-0.lsanca2-br1.bbnplanet.net (4.24.5.49)  3 ms
        7   [GNTY-4-0] p15-0.snjpca1-br1.bbnplanet.net (4.24.5.58)  10 ms
        8   [GNTY-4-0] p9-0.snjpca1-br2.bbnplanet.net (4.24.9.130)  11 ms
        9   [GNTY-4-0] so-1-0-0.sttlwa2-br1.bbnplanet.net (4.0.3.229)  27 ms
       10   [GNTY-4-0] so-0-0-0.sttlwa1-hcr1.bbnplanet.net (4.24.11.202)  28 ms
       11   [GNTY-4-0] so-7-0-0.sttlwa1-hcr2.bbnplanet.net (4.24.10.234)  28 ms
       12   [GNTY-4-0] p1-0.sttlwa1-cr2.bbnplanet.net (4.24.10.241)  29 ms
       13   [GNTY-4-0] p2-0.msseattle.bbnplanet.net (4.25.89.6)  32 ms
       14   [MICROSOFT-GLOBAL-NET] 207.46.154.9  32 ms
       15   [MICROSOFT-GLOBAL-NET] 207.46.155.17  33 ms
       16   [MICROSOFT-GLOBAL-NET] 207.46.129.51 [prohibited]  35 ms

TROUBLESHOOTING

       If  traces  don't  appear  to  go anywhere, there are a number of things to try.  If you are receiving an
       error related to permissions, be sure the lft executable is set-uid root so it  may  execute  with  root-
       level permissions required to utilize raw sockets on most operating systems.

       If  you  do  not  receive  permissions-related errors, but traces still don't go anywhere, first activate
       verbose output by adding -VV to your command line options.  Then, reading the verbose output, if you  see
       trace  probes  going  out, but no replies being detected (as indicated by "RCVD" tags), you may:  Use the
       TCP basic (-b) method if you wish to use TCP probes and you fear NAT may be causing your trace  to  fail.
       Alternatively, select a different trace method and protocol such as UDP (-u) or ICMP (-p).

       If  you  are  attempting  to  use RFC 1393 (-P) and your trace is failing, this is likely because network
       equipment somewhere in the path does not conform  to  RFC  1393.   Your  only  option  is  to  select  an
       alternative tracing method or protocol.

       If  you  are  attempting  to  utilize  adaptive  mode  (-E/-e)  and  traces  fail, first try enabling NAT
       compatibility using TCP basic (-b).  If traces still fail, the most likely reason  is  a  close-proximity
       stateful firewall in your network, which prevents this feature from working.

AUTHORS

       Victor Oppleman, Eugene Antsilevitch, Sergey Kondryukov and other helpers around the world.

REPORTING BUGS

       To report bugs, send e-mail to <lft@oppleman.com>

SEE ALSO

       traceroute(8), netstat(1), whois(1), whob(8)

HISTORY

       The  lft  command  first  appeared  in 1998 as 'fft'.  Renamed as a result of confusion with fast fourier
       transforms, lft stands for 'layer four traceroute.'  Thanks also to  Nils  McCarthy  for  writing  'FFT',
       LFT's predecessor.

LFT                                              August 17, 2002                                          LFT(8)