解決方法:FortiGate の syslog が届かない

見出し


■はじめに

FortiGate(61F/v7.0.1) からの syslog通知が、1か月以上前から syslogサーバに届いていないことに気が付きました。

ネットワーク構成は以下の通りです。


途中に別のファイアウォールがいるものの、FortiGateから syslogサーバへの通信は許可されています。

原因の切り分けは以下の通り。
・FortiGate から syslogサーバに対して、pingやtraceroute は到達する。
・FortiGate の GUI上では、syslog設定は有効になっており、syslogサーバのIPアドレスが設定されている。

状況からして、そもそも syslogを送信していない?という懸念があります。

■原因判明

Google先生の教えに従ったところ、FortiGate にはパケットキャプチャという便利なコマンドがあるそうな。
このパケットキャプチャにより、syslogサーバに対する通信状況をチェックしたところ、意外な結果が。

FortiGate # diagnose sniffer packet any 'dst 192.168.2.2' 4
interfaces=[any]
filters=[dst 192.168.2.2]
3.689092 internal out 203.0.113.1.3851 -> 192.168.2.2.514: udp 719
3.689126 internal out 203.0.113.1.3851 -> 192.168.2.2.514: udp 709
3.689149 internal out 203.0.113.1.3851 -> 192.168.2.2.514: udp 709
3.689175 internal out 203.0.113.1.3851 -> 192.168.2.2.514: udp 709
4.719114 internal out 203.0.113.1.3851 -> 192.168.2.2.514: udp 637

なんと、送信元IPアドレスが WAN側インターフェースのものになっているではないか!
これにより、ファイアウォールの通信許可ポリシーに合わなくなって遮断されたということが判明しました。

■解決策

というわけで、syslogの送信元IPアドレスを明示的に internal インターフェースのIPアドレスに設定したら解決しました。
残念ながら GUI の設定項目には存在しないので、CLIから設定します。⇒【config log syslogd setting】

config log syslogd setting
 set status enable
 set server "192.168.2.2"
set source-ip "192.168.1.2" ←これを追加
end

めでたしめでたし

…?

■そもそも、どうしてこうなった

この手の送信元IPアドレスは、ネットワーク機器から出力される際のインタフェースのものを使用するのが一般的だと思います。
pingやtracerouteが通信できたのは、このためです。
というか、FortiGateのsyslogもそうであると述べられています。おかしいなぁ

また、ある日を境に事象が発生した(=syslogの送信元IPアドレスが変わった)という点が気になります。
手元の記録上は何も設定は変更していないはず…。私の勘違いかもしれませんが、全く謎です。