tracerouteのloose source route(-gオプション)がうまく動きません。
下記のようなスクリプトをつかって、同じホストへ辿りつく
違う経路をさがしました。
############################
TARGET=どこかのアドレス
while :; do
traceroute $TARGET |
perl -ne 'print "$1\n" if m{\((\d+\.\d+\.\d+\.\d+)\)}' >a.log
traceroute $TARGET |
perl -ne 'print "$1\n" if
m{\((\d+\.\d+\.\d+\.\d+)\)}' >b.log
if ! diff a.log b.log; then
exit 0
fi
done
############################
結果同じdesitinationへむかう経路
A->B->C->D
A->Z->C->D
を得たとします。
私の認識ではこのような場合に
$ traceroute -g B D
とすればかならずBを経由してDに辿りつくと思っているのですが
$ traceroute -g B D
traceroute to B (xxx.xxx.xxx.xxx), 30 hops max, 46 byte
packets
1 わたしのISPのgateway (xxx.xxx.xxx.xxx) 10.584 ms !S *
というふうにまったくtrace出来ません。
tcpdump icmpでちょっとみてみたのですが
ISPのgateway -> わたし icmp 44: B unreachable - source route failed
ISPのgateway -> わたし icmp 44: B unreachable - source route failed
となっており、はじめのrouterですぐにくじけているようなのです。
loose source routeは指定していない経路も
使うことができるという認識なのですが。
何か勘違いをしているのでしょうか。
tracerouteは Version 1.4a12
OSはDebian(sid)です。
御教授願います。
> となっており、はじめのrouterですぐにくじけているようなのです。
> loose source routeは指定していない経路も
> 使うことができるという認識なのですが。
> 何か勘違いをしているのでしょうか。
source route は悪用されることが多いので、
ルータの方で通さないように設定されているのでは?
その後少々しらべてみましたが、そのようなことが
多く書いてありました。
StevensのTCP/IP Illustratedの演習で
source routeをつかうものがあるのですが、
うまくいかなかったので御聞きしました。
やはりいろいろためしたり勉強したりするには
内に閉じた環境で好き勝手出来る場所が
あったほうがよいようですね。
ありがとうございました。