とあるサーバー間の疎通確認に、いつもどおりなにげなく traceroute コマンドを使った。ら、経路でてこない。ping もつながらないし ICMP 落としてるのかー、と思ったけど、mtr だと途中(該当サーバーの手前)まで出てくる。
え。なんで?
正解:traceroute コマンドはデフォルトでは UDP を使う。
traceroute (2.0.1) の man より抜粋。
-I Use ICMP ECHO for probes
-T Use TCP SYN for probes
-U Use UDP datagrams for probes (it is default). Only UDP method is allowed for unprivileged users.
いままで涼しい顔して、ICMP で確認している気になっていた…。アホだった…。
で、今回は traceroute 実行していたほうで UDP を drop していた模様。