我輩はブロガーではない。ネタもまだない

SASとかDelphiあたりの人様の役に立たないネタを提供します

FortiGateでIPSecVPN越しのsyslogサーバを指定する(GUI&CUI併用)

自拠点のFortiGateのログをIPSecVPNで接続したリモート環境にあるサーバに転送してみました。
(IPSecVPNが確立されていることが前提です)

FortiGateとサーバの接続は以下のような状況です

┌──────────────┐               ┌──────────────┐               ┌──────────────┐
│   FortiGate  │────────────── │   FortiGate  │───────────────│     QNAP     │
│    (SiteA)   │    IPSecVPN   │    (SiteB)   │      LAN      │ syslogServer │
│ 172.24.0.254 │               │ 192.168.1.1  │               │ 192.168.1.10 │
└──────────────┘               └──────────────┘               └──────────────┘


通常、FortiGateからの通信は宛先IPが含まれるサブネットのポートから送信されるようです。
例えば、(上図にはありませんが)拠点Aから172.24.0.10にアクセスする場合は、172.24.0.254からのアクセスになります。
拠点Aから192.168.1.10に通信しようとすると、192.168.1.0/24は拠点Aのネットワークに属していないので、デフォルトではwanポートが送信元になります。
しかしながら、IPSecVPNは拠点AのLAN1と拠点BのLAN2でセッションを張っているので、wanポートからでは拠点Bにアクセスできません。
そのため、source-ipを指定し、LAN1からsyslogを転送するように指定してあげる必要があります。
参照:Fortinet Knowledge Base


まず、ログ&レポート>ログ設定>ログをsyslogへ送る を ONにし、syslogサーバのIPアドレスを指定します。
(マスクしたIPは上図の192.168.1.10に相当します)
f:id:japelin:20210426101316p:plain


続いて、QNAPでsyslogを有効にします。(バージョンは4.3.6.0993です)
コントロールパネル>アプリケーション>syslogサーバ から syslogサーバーを有効にする にチェックします。
f:id:japelin:20210426101528p:plain

この時点ではログは転送されません。
f:id:japelin:20210426101603p:plain


FortigateのCLIコンソールを開き、以下のコマンドを実行します
(このIPは拠点AのIPSecVPNセッションを張っているインターフェースのIPです)

config log syslog setting
    set source-ip 172.24.0.254
end

少しして、ログが転送されてきました。
f:id:japelin:20210426102043p:plain



念の為、source-ipの挙動をpingで確認してみます。
FortiGateのCLIから拠点A(172.24.0.254)からQNAP(192.168.1.10)へpingを打ちます

execute ping 192.168.1.10

f:id:japelin:20210426111957p:plain
100%パケットロス、つまり到達できていません。


source-ipを指定して再度pingを実行します。

execute ping-options source 172.24.0.254
execute ping 192.168.1.10

f:id:japelin:20210426112404p:plain

今度は到達しました。