Libtraceroute is a cross-platform traceroute library for Rust, that allows displaying possible routes (paths) and measuring transit delays of packets across an Internet Protocol (IP) network. Libtraceroute uses pnet, a low-level networking library, to send and capture packets at the data link layer, which allows it to operate without the need for root privileges on MacOS and Windows, but still requires sudo on Linux.
Libtraceroute works at the data link layer with custom-built packets, which provides the user with a lot of options for customizations. The library allows to configure the following parameters:
- [REQUIRED] - Destination address
- [OPTIONAL] - Maximum number of hops Port Number of queries per hop Network interface Protocol Timeout per query
To use libtraceroute in your project, add the following to your Cargo.toml:
[dependencies]
libtraceroute = "0.1.0"
NOTE! If you are using Windows, follow these instructions to make pnet work:
- You must use a version of Rust which uses the MSVC toolchain
- You must have WinPcap or npcap installed (tested with version WinPcap 4.1.3) (If using npcap, make sure to install with the "Install Npcap in WinPcap API-compatible Mode")
- You must place
Packet.lib
from the WinPcap Developers pack in a directory namedlib
, in the root of this repository. Alternatively, you can use any of the locations listed in the%LIB%
/$Env:LIB
environment variables. For the 64 bit toolchain it is inWpdPack/Lib/x64/Packet.lib
, for the 32 bit toolchain, it is inWpdPack/Lib/Packet.lib
.
Source: https://github.com/libpnet/libpnet/blob/master/README.md