マップのtracerouteコマンドについて

zabbix2.0.6にadminでログインしてマップ上からWindows端末にtracerouteを使うと以下のように出ます。
これはなぜでしょうか?(正常に見れるものと以下のように出るものがあります)

traceroute to 192.168.1.180 (192.168.1.180), 30 hops max, 60 byte packets
1 * * *
2 * * *
3 * * *
4 * * *
5 * * *
6 * * *
7 * * *
8 * * *
9 * * *
10 * * *
11 * * *
12 * * *
13 * * *
14 * * *
15 * * *
16 * * *
17 * * *
18 * * *
19 * * *
20 * * *
21 * * *
22 * * *
23 * * *
24 * * *
25 * * *
26 * * *
27 * * *
28 * * *
29 * * *
30 * * *

あと、tracerouteをUDPでは無く、ICMP echoで行いたいので、tracerouteコマンドに -I オプションを付けて /bin/traceroute -I {HOST.CONN} 2>&1 のようにスクリプトを設定したところ、以下のメッセージが出ました。

The specified type of tracerouting is allowed for superuser only

それぞれの原因と対策を教えてください。
よろしくお願いします。

コメント表示オプション

お好みのコメント表示方法を選び「設定の保存」をクリックすると変更が反映されます。
ユーザー TNK の写真

LinuxからWindowsに対してtracerouteで応答が返ってこないのは、
traceroute実行時にLinuxから送られるUDPパケットが、Windowsフ
ァイアウォールなどによって遮断されているからだと思われます。

また、

The specified type of tracerouting is allowed for superuser only

は、メッセージの通り、そのタイプのtracerouteは、rootでしか実
行できないのではないでしょうか?
理由としては、ICMPで利用するポート番号が1000以下だと思わ
れるので、一般ユーザではそのポート番号を利用してバインドで
きないのでしょう。

では、なぜpingコマンドなら一般ユーザでもできるかというと、フ
ァイルのパーミッションが特殊な設定になっているからです。
詳細は、setuidというキーワードで調べてみてください。

ユーザー Ryo Sugisaki の写真

おっしゃるとおりだと思います。
ちなみにUDPのポート番号は何番ですか?
それと、ZabbixのWeb画面上にはadminやその他のユーザでログインするので、rootでしか実行できないと困ります。
それ以外で実行したい場合は、どのように変更したら良いでしょうか?

ユーザー TNK の写真

tracerouteで利用するUDPのポート番号は動的だったと思います。

試しに、某ディストリビューションで試してみると、64000から1づ
つインクリメントされてましたので、特定のポートのみを指定した
ルールでは制限できないようです。

それと、ZabbixのWeb画面上にはadminやその他のユーザでログインするので、rootでしか実行できないと困ります。
それ以外で実行したい場合は、どのように変更したら良いでしょうか?

先ほど、pingコマンドとsetuidというヒントを書かせて頂きました
が、調べていただけましたでしょうか?

マップ上からメニューでコマンドを実行する場合、

 ブラウザ -> httpd -> zabbix_server

と要求の情報が流れて、zabbix_serverプロセスから実行すること
になりますので、zabbix_serverを起動しているzabbixユーザで実
行されるはずです。

そして先にも書かせて頂いたとおり、pingと同様に/bin/traceroute
のsetuidビットを有効にすれば一般ユーザでも実行できるようにな
るはずです。

ご確認ください。

ユーザー Ryo Sugisaki の写真

setuidビットを有効にしたところ、正常に実行できました。
ありがとうございました。