同时追踪多个目标,并在地图上查看每一跳。
English · 简体中文 · 繁體中文(台灣) · 繁體中文(香港) · 繁體中文(澳門)
xmtr 使用 trippy 同时追踪多个目标,在每条路由的路径稳定后停止追踪,并将这些路由上传至 xmsl.dev IPMap。IPMap 会将每一跳放置在地图上,并回放该路由。
https://github.com/user-attachments/assets/b2152647-3396-4f2c-86d4-267c2b11e529
运行结束时输出的链接会打开地图:
https://github.com/user-attachments/assets/b675a8f5-dff1-460a-bb3c-ca7b3e4ff412
curl -fsSL https://raw.githubusercontent.com/Alice39s/xmtr/main/install.sh | bash
sudo xmtr 1.1.1.1 cloudflare.com
第二条命令会跟踪 1.1.1.1 和 cloudflare.com,当主机同时具有 IPv4 和 IPv6 时,会同时通过这两种协议进行跟踪,并打印路由和 IPMap 链接。Windows 和包管理器的内容见 Install,Privileges 列出了每个系统上谁可以执行跟踪。
macOS、Linux、FreeBSD、Termux
curl -fsSL https://raw.githubusercontent.com/Alice39s/xmtr/main/install.sh | bash
该脚本使用 POSIX sh,因此 | sh 可在没有 bash 的系统上运行。在 OpenWrt 上,请使用原生软件包仓库。作为普通用户,它会通过 sudo 安装到 /usr/local/bin,因此 sudo xmtr 能找到该二进制文件;sudo 可能会要求输入密码。如果没有 sudo 权限,则会安装到 ~/.local/bin。
Windows
powershell -c "irm https://raw.githubusercontent.com/Alice39s/xmtr/main/install.ps1|iex"
两个脚本都会为你的系统选择对应的构建版本,对照发布版 SHA256SUMS 进行校验,并运行一个小型安装程序,该程序会放置一个 xmtr 二进制文件,然后删除自身。除此之外不会写入任何内容,Windows 上的用户 PATH 条目除外。下载使用 HTTPS,除非 XMTR_RELEASES 指定了 http:// 镜像。
| 系统 | 默认位置 |
|---|---|
| Linux、macOS、FreeBSD | /usr/local/bin;无 sudo 权限时为 ~/.local/bin |
| Termux | $PREFIX/bin |
| Windows | %LOCALAPPDATA%\Programs\xmtr |
在 bash -s -- 之后传递安装程序选项:
curl -fsSL https://raw.githubusercontent.com/Alice39s/xmtr/main/install.sh | bash -s -- --dir ~/bin --version v0.3.6
XMTR_INSTALL_DIR 设置目录,XMTR_RELEASES 将脚本和安装程序都指向 releases 页面的镜像。在 Windows 上,这两个变量是传递选项的唯一方式。
| 管理器 | 命令 | |
|---|---|---|
| Homebrew(macOS、Linux) | brew install alice39s/tap/xmtr | |
| Scoop(Windows) | scoop bucket add alice39s https://github.com/Alice39s/scoop-bucket 然后 scoop install alice39s/xmtr | |
| WinGet(Windows) | winget install Alice39s.xmtr | |
| Chocolatey(Windows) | choco install xmtr | |
| npm | npm install --global @xmtr/cli,或 npx @xmtr/cli 1.1.1.1 | |
| PyPI | uv tool install xmtr、pipx install xmtr 或 pip install xmtr | |
| Cargo | cargo binstall xmtr 获取发布版二进制文件,或 cargo install xmtr 从源码构建 | |
| mise | mise use --global github:Alice39s/xmtr | |
| Nix | nix run github:Alice39s/xmtr -- 1.1.1.1,或 nix profile install github:Alice39s/xmtr | |
| Docker | docker run --rm ghcr.io/alice39s/xmtr 1.1.1.1 |
npm 包和 PyPI wheel 包含与发布归档相同的二进制文件;npm 会为你的系统选择 @xmtr/<platform> 包。Docker 镜像仅包含静态二进制文件,并为 amd64、arm64、armv7、armv6、386、riscv64 和 loong64 构建。Docker 默认授予容器原始套接字权限;使用 Podman 时需添加 --cap-add NET_RAW。
deb、rpm 和 apk 包会安装 /usr/bin/xmtr,并通过 setcap 授予其原始套接字权限,因此每个用户都可以无需 root 进行追踪。它们附加在每个发布版本中,并由已签名的仓库提供:
| 系统 | 架构 | |
|---|---|---|
| Debian、Ubuntu | amd64、arm64、armhf、i386、riscv64、loong64 | |
| Fedora、RHEL | x86_64、aarch64、armv7hl、i686、riscv64、loongarch64 | |
| Alpine | x86_64、aarch64、armv7、armhf、x86、riscv64、loongarch64 |
# Debian, Ubuntu
sudo curl -fsSL -o /usr/share/keyrings/xmtr.gpg https://alice39s.github.io/xmtr/xmtr.gpg
echo "deb [signed-by=/usr/share/keyrings/xmtr.gpg] https://alice39s.github.io/xmtr/deb stable main" | sudo tee /etc/apt/sources.list.d/xmtr.list
sudo apt update && sudo apt install xmtr
# Fedora, RHEL
sudo curl -fsSL -o /etc/yum.repos.d/xmtr.repo https://alice39s.github.io/xmtr/rpm/xmtr.repo
sudo dnf install xmtr
# Alpine
wget -qO /etc/apk/keys/xmtr.rsa.pub https://alice39s.github.io/xmtr/apk/xmtr.rsa.pub
echo https://alice39s.github.io/xmtr/apk >> /etc/apk/repositories
apk add xmtr
这些仓库使用 packaging/keys 中的密钥进行签名。发布工作流会发布上述所有渠道,但 mise 和 Nix 除外,它们直接读取 GitHub 发布和 flake。
原生软件包为 OpenWrt 24.10(opkg)和 25.12(APK v3)构建,覆盖 x86-64、带 SSE2 的 x86、ARM64、ARMv7 硬浮点和软浮点,以及两种字节序的 MIPS 24Kc。OpenWrt 指南列出了确切的软件包架构、签名软件源设置和更新命令。在 OpenWrt 上以 root 身份运行 xmtr。
xmtr self update # install the latest release over this binary
xmtr self update --tag v0.3.3 # install a given release instead
xmtr self uninstall # delete this binary
--force 会重新安装已安装的版本。请改用包管理器或 Linux 仓库通过该管理器更新软件包。
在终端中运行后,xmtr 会查找最新版本,最多等待 3 秒。当有新版本时,xmtr 会询问是否安装,然后询问是否用新版本再次运行同一命令;按 Enter 对两者均回答是。当二进制文件由包管理器管理,或其所在目录不可写时,xmtr 会改为打印更新它的命令。使用 --json、--quiet 或 --no-upload 运行,以及在 stdin 和 stderr 上没有终端时运行,都会跳过查找。
手动安装的归档文件位于发布页面。发布版本不可变:一旦发布,其文件和标签便无法更改。
gh release verify-asset <tag> <file> --repo Alice39s/xmtr # the file belongs to the release
gh attestation verify <file> --repo Alice39s/xmtr # the file was built by the release workflow
第二条命令会检查构建溯源。