UDP受信時でも経路情報は気にするべき?
有休取得中です。
優雅な自堕落な生活に全く飽きることなく、仕事は極力したくないのがよ~~~~く分かります。
ニコニコ動画が大規模攻撃を受けて障害発生中のなか2009年の動画を見ながら、いやぁ、大変だなぁ。とつぶやいたタイミングでこんな連絡が来ました。
「SNMPトラップが受信できないです。。。」
えぇ・・・噓でしょ?
まさかの休み中のトラブル。極力メンバーが対応してくれてはいましたが、
なかなか根深い予感がして、こりゃまずい、と急いで出社です。
話を聞いていると、ファイアウォール等のセキュリティ設定は問題がなく、tcpdumpでパケットがインタフェースまでは来ているのは確認できているらしい。SNMPのコミュニティ名やリッスンするインタフェースの制御か?いや、そのあたりも制限を外しているはず。ん~・・・特に問題がなさそうだ。セキュリティ製品でも中に入れてるのかなぁと思いつつも、もう少し話をきいていると、
「元々予定していたネットワークからではなく別のネットワークからトラップを投げる環境にしてます。」
いや、それじゃね???
確かに、SNMPトラップといえばUDPです。いわゆる投げっぱなしになるはずです。
一見、受信さえできれば、問題なさそうですが。。。別口から受信したら発生するとなると、おそらく送信経路のネットワーク機器側は変更しているが、受信側のサーバのルーティング設定等も何も弄っていない。ここが問題の可能性が高い。
とりあえず、以下のような環境を作り、試してみました。
SNMPサーバで自分が持っていないセグメントからのトラップを受信する口とは別口にデフォルトゲートウェイを仕掛ける。
そうすると、外部ネットワークからのリクエストに対し、別口でリプライを返すような構成になる。
実際にネットワーク群からトラップを投げると・・・
ログが記録されない!!
試しに、こういうルーティング設定を入れる。
route add 10.0.0.1 mask 255.255.0.0 via 192.168.1.254
こうすると、リプライがリクエストが入ってきた口と同じになる。
再度トラップを投げる。
ログが記録される!!
UDPは確かに投げっぱなしになるが、送受信の口は統一する必要がありますね。
とりあえず、SNMPサーバのルーティング設定を変更する必要がありそう。