マップの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 - 投稿数: 4731
LinuxからWindowsに対してtracerouteで応答が返ってこないのは、
traceroute実行時にLinuxから送られるUDPパケットが、Windowsフ
ァイアウォールなどによって遮断されているからだと思われます。
また、
は、メッセージの通り、そのタイプのtracerouteは、rootでしか実
行できないのではないでしょうか?
理由としては、ICMPで利用するポート番号が1000以下だと思わ
れるので、一般ユーザではそのポート番号を利用してバインドで
きないのでしょう。
では、なぜpingコマンドなら一般ユーザでもできるかというと、フ
ァイルのパーミッションが特殊な設定になっているからです。
詳細は、setuidというキーワードで調べてみてください。
Ryo Sugisaki - 投稿数: 139
おっしゃるとおりだと思います。
ちなみにUDPのポート番号は何番ですか?
それと、ZabbixのWeb画面上にはadminやその他のユーザでログインするので、rootでしか実行できないと困ります。
それ以外で実行したい場合は、どのように変更したら良いでしょうか?
TNK - 投稿数: 4731
tracerouteで利用するUDPのポート番号は動的だったと思います。
試しに、某ディストリビューションで試してみると、64000から1づ
つインクリメントされてましたので、特定のポートのみを指定した
ルールでは制限できないようです。
先ほど、pingコマンドとsetuidというヒントを書かせて頂きました
が、調べていただけましたでしょうか?
マップ上からメニューでコマンドを実行する場合、
ブラウザ -> httpd -> zabbix_server
と要求の情報が流れて、zabbix_serverプロセスから実行すること
になりますので、zabbix_serverを起動しているzabbixユーザで実
行されるはずです。
そして先にも書かせて頂いたとおり、pingと同様に/bin/traceroute
のsetuidビットを有効にすれば一般ユーザでも実行できるようにな
るはずです。
ご確認ください。
Ryo Sugisaki - 投稿数: 139
setuidビットを有効にしたところ、正常に実行できました。
ありがとうございました。