前回の記事で、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 側だけを見て調整していると、
こういうところでハマることがあります。
最終的には
「両方の規格をちゃんと合わせる」
これが一番大事でした。
一度安定してしまえば、
この構成でも長く運用できています。
この環境の構成まとめ

次の記事



