strongSwan × RTX830 VPN構築後、しばらくすると切れる問題。SA寿命を合わせて安定した実務ログ

前回の記事で、strongSwanで社内ルータ(RTX)とVPN接続した構築ログ を書きました。
一度は問題なく接続できて、「これでいけそうだな」と思っていたのですが、数時間後に確認すると通信が止まっていることがありました。

再接続するとまたつながる。
でも、しばらくするとまた切れる。

最初はルータ側の回線かと思ったのですが、ログを見る限りそうでもなさそうでした。
このとき作っていた構成は、社内ネットワークと VPS を VPN でつなぎ、Active Directory などの通信を流す用途です。


構成自体は前回の記事のとおりで、VPS 側はさくらのVPS を使って検証しています。

構成としては特別なことはしていないので、どこか設定の噛み合わせが悪いのだろうと思い、ログを見ながら少しずつ確認していきました。


最初は普通に通信できる

VPN は一度張られると普通に通信できます。

社内ネットワークから VPS 側のサーバへ ping も通るし、
Active Directory の通信も問題ありません。

ただ、半日くらい経ってから確認すると通信が止まっていることがありました。

再接続すれば直る。
でも、また時間が経つと止まる。

このパターンだと、設定の不一致が原因のことが多いです。


SA寿命のズレを疑った

ログを見ていると、SA の更新タイミングでうまく再接続できていないような挙動がありました。

IPsec VPN では

・ISAKMP SA(IKE SA)
・IPsec SA

それぞれに「寿命(lifetime)」があり、一定時間ごとに更新されます。

strongSwan 側の設定は確認していたのですが、RTX 側はそこまで意識していませんでした。
というのも、ヤマハのルータは コマンドに書いていない設定でもデフォルト値が動いていることが多いからです。

このとき見落としていたのがまさにそれでした。


RTXのデフォルト値

調べてみると、ヤマハルータの場合、SA の寿命はデフォルトで

28800 秒(8時間)

になっています。

設定に書いていなくても、この値が内部で使われます。

最初は strongSwan 側と完全に合わせていなかったので、
更新タイミングでセッションが不安定になっていた可能性がありました。

このあたりを合わせることにしました。


strongSwan側の設定調整

結果的に strongSwan 側は次のような設定になりました。

connections {
   abcd {
      local_addrs  = 203.0.113.10
      remote_addrs = 198.51.100.25

      local {
         auth = psk
         id = 203.0.113.10
      }

      remote {
         auth = psk
         id = 192.168.20.1
      }

      children {
         abcd {
            local_ts  = 192.168.10.0/24
            remote_ts = 192.168.20.0/24
            esp_proposals = aes128-sha1
            dpd_action = start
            rekey_time = 28800s
         }
      }

      version = 1
      mobike = no
      proposals = aes128-sha1-modp1024
      rekey_time = 28800s
      dpd_delay = 20s
      dpd_timeout = 100s
      keyingtries = 0
   }
}

secrets {
   ike-abcd {
      id = 198.51.100.25
      secret = "PassSakura"
   }
}

主に調整したのはこのあたりです。

・IKE SA の寿命
・IPsec SA の寿命
・DPD(Dead Peer Detection)

RTX 側のデフォルト値に合わせて、strongSwan 側も 28800 秒に揃えました。


DPD設定も合わせた

もう一つ気になったのが DPD です。

DPD は簡単に言うと

「相手が生きているか定期的に確認する仕組み」

です。

ここが合っていないと、
片側だけセッションが残ったり、再接続がうまくいかなかったりします。

RTX側で

ipsec ike keepalive use 5 on dpd 20 5

となっていたので、今回の構成では

dpd_delay = 20s
dpd_timeout = 100s

で落ち着きました。

正直この辺りは「これが正解」というより、
RTX 側の挙動を見ながら合わせた感じです。


その後の状態

この設定にしてからは、VPN が途中で切れることはほぼなくなりました。

現在は複数拠点で同じような構成を作っていますが、
同じ設定で問題なく動いています。

構成としてはかなりシンプルで

VPS

IPsec VPN

社内ルータ

というだけです。

それでも、Active Directory やファイル共有などの通信は普通に動いています。


今振り返ると

今回のトラブルは、完全に デフォルト値の見落としでした。

ヤマハルータはコマンドに書かれていない設定でも
内部で値が決まっていることがあるので、そこをちゃんと意識しないといけないですね。

strongSwan 側だけを見て調整していると、
こういうところでハマることがあります。

最終的には

「両方の規格をちゃんと合わせる」

これが一番大事でした。

一度安定してしまえば、
この構成でも長く運用できています。


この環境の構成まとめ

さくらのVPSでActive Directoryを冗長構成した実録まとめ|ブリッジ接続・strongSwan VPN・ルーティングまでの構築ログ
社内のActive Directoryを冗長化したいと思ったとき、「オンプレ2台」ではなく クラウドを使う方法を試してみました。今回はさくらのVPSを使ってADを冗長構成にした一連の実務ログをまとめます。実際には・リージョンを分けてサーバー...

次の記事

さくらのVPSを2リージョンでVPN接続したときのルーティング設計|RTX × strongSwan 冗長構成メモ
以前の記事で、さくらのVPSをブリッジ接続してActive Directoryを冗長化した話 の通り、構成を広げて、リージョンを分けてサーバを置くことにしました。さくらのクラウドのブリッジ接続を使っているため、AD同士はリージョンが異なって...