爱意满满的作品展示区。
tarsxiaode

ghostwire:在 Linux 上伪造 ping、TCP、UDP、DNS 的回应,用来测试依赖网络状态的程序

  •  
  •   tarsxiaode · Oct 31 · 1034 views

    做了一个小工具,解决一个很具体的问题:你的程序会 ping 服务器、连数据库、解析域名,然后根据结果做决策——选最快的节点、重试、故障切换、显示"离线"。测试这些逻辑,需要网络在你想要的时刻变慢、变通或者直接不可达,而且要能复现。

    ghostwire 用一个 TUN 设备接管你指定的地址段,程序完全不用改代码——不管它是跑 ping 命令还是自己发原始 ICMP 包,都能被模拟。规则按地址/端口设置,运行中可以用 HTTP API 实时改,还支持设随机种子让结果可复现。

    ghostwire exec -rule 10.99.0.1=50ms -rule 10.99.0.2=unreachable -- ./my-app
    

    对比 tc netem:它是按网卡整形,这个是按目标地址;对比 Toxiproxy:它是 TCP 代理需要改程序指向,这个是透明的,程序不用做任何改动。

    Go 写的,依赖只有标准库加一个 YAML 解析库,exec 模式不需要 root 。有中英双语文档。欢迎试用和提意见: https://github.com/nanmuyao-tools/ghostwire

    No Comments Yet
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   978 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 18ms · UTC 19:36 · PVG 03:36 · LAX 11:36 · JFK 14:36
    ♥ Do have faith in what you're doing.