Cloudflare WAN(旧 Magic WAN)クライアントが GRE、IPsec、CNI、または WARP 経由で接続しており、Cloudflare Tunnel の背後にあるエンドポイントへ traceroute を実行したい場合、コマンドが役立つ情報を返すには次の設定が必要です。
traceroute クライアントを実行するマシンで、トンネルデバイスが内側のパケットの TTL 値を継承しないようにします。これは Linux のデフォルト動作であり、役に立たない traceroute 結果になることがあります。
sudo traceroute -s 10.1.0.100 -I 10.3.0.100traceroute to 10.3.0.100 (10.3.0.100), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 10.3.0.100 (10.3.0.100) 420.505 ms 420.779 ms 420.776 msTTL を明示的に設定すると、はるかに有用な結果が返ります。
sudo ip link set cf_gre type gre ttl 64
sudo traceroute -s 10.1.0.100 -I 10.3.0.100traceroute to 10.3.0.100 (10.3.0.100), 30 hops max, 60 byte packets
1 10.0.0.11 (10.0.0.11) 58.947 ms 58.933 ms 58.930 ms
2 173.245.60.175 (173.245.60.175) 61.138 ms 61.316 ms 61.313 ms
3 172.68.145.21 (172.68.145.21) 367.448 ms 367.532 ms 367.530 ms
4 mplat-e2e-vm3.c.magic-transit.internal (10.152.0.20) 370.362 ms 370.440 ms 370.522 ms
5 10.3.0.100 (10.3.0.100) 370.519 ms 370.541 ms 518.152 ms一部の Linux ディストリビューションでは、リバースパスフィルタリング ↗ の設定が非常に厳格です。この厳格な設定は、セキュリティ対策として偽装トラフィックを破棄しようとします。この設定のまま traceroute を実行すると、意図せず traceroute パケットが破棄されることがあります。Linux で Cloudflare One Client を使う場合は、traceroute を実行する前に、より緩いポリシーを設定します。
sudo sysctl -w net.ipv4.conf.CloudflareWARP.rp_filter=2net.ipv4.conf.CloudflareWARP.rp_filter = 2sudo traceroute -s 172.16.0.2 -I 10.3.0.100traceroute to 10.3.0.100 (10.3.0.100), 30 hops max, 60 byte packets
1 169.254.21.171 (169.254.21.171) 48.887 ms 48.894 ms 48.620 ms
2 173.245.60.175 (173.245.60.175) 49.403 ms 49.519 ms 49.603 ms
3 172.68.65.7 (172.68.65.7) 357.499 ms 357.519 ms 357.520 ms
4 mplat-e2e-vm3.c.magic-transit.internal (10.152.0.20) 360.024 ms 360.086 ms 360.078 ms
5 10.3.0.100 (10.3.0.100) 360.283 ms 360.297 ms 360.489 ms