動かなくなってたOpenVPNをメンテした
ちょっと前にMacBook ProのOS再セットアップをしたところ、OpenVPNがちゃんとつながらなくなったりしていたので、原因調査と復旧作業。
動かしているOpenVPNは2系統あって、それぞれのサーバが稼働するVPSのロケーションからTokyo側、Singapore側としておく。 この両方が両方ともなんかダメだったのでなんとかする。いや両方て。
Tokyo側
それよりも以前にですね、オプションで指定していたcomp-lzo
がdeprecatedだぞって怒られたんですよ。
怒られたっていうかログに出てきてたのに気付いたってだけの話ですけど。
じゃあどうすりゃええんじゃいと調べたところ、compress
オプションを使え、とのこと。
なるほど。使いましょう。ただしcompress
オプションはOpenVPN 2.4系からしか使えないオプション。
クライアントの中にはOpenVPN 2.3系を使わざるをえないものがあって、こっちだと当然compress
オプションはまだ使えない。
こういった場合には、2.4系なサーバとクライアントではcompress lzo
として、オプションは新形式としながらも圧縮形式は従来どおりのlzoを維持し、
2.3系のクライアントではcomp-lzo
と指定してあげるのが正解っぽい。
という結論に至ったのはよかったんですけど。
その過程で、てっきりcompress
と書いただけで圧縮形式としてlzoがデフォルトで選ばれるもんだと勝手に勘違いしてしまったせいで割と時間を溶かしたりしたんですよ。
この溶かした時間の途中で、クラウドストレージ上にバックアップしてあった設定ファイル群が中途半端な編集状態となり、compress
とだけ書かれた状態に。
そして、先日のOS再セットアップの際にこの間違った内容の設定ファイルを使ったため、うまく接続できなかったというだけの話。
当然、compress lzo
と修正したらちゃんと接続できるようになった。大したことない話だった。めでたしめでたし。
Singapore側
こちらはOS再セットアップよりも前の、それこそ数週間前から接続できていない状態。 ただまぁ実際のところほとんど使うことがないため、まぁいいやと放置してしまっていたもの。 でもTokyo側の問題も解決したことだし、こっちも何とかしましょう。
とりあえず全クライアントのデーモン落として、サーバ側も落として、ログレベル上げて起動。で、クライアント1つだけで接続。 ログチェックしたところ、な…CRLが有効期限切れ……だと……? えっ、CRLって有効期限あったの。マジですか。認識してなかった。
なお証明書関連ファイル、有効期限確認のためのコマンドは以下の通り。
# CA証明書やサーバ証明書の確認: オプションは x509
openssl x509 -text -noout -in ./ca.crt
openssl x509 -text -noout -in ./server.crt
# CRLの確認: オプションは crl
openssl crl -text -noout -in ./crl.pem
証明書の発行と管理にはEasyRSA3を使っているんですけど、 CRLの期限がデフォだと180日間のようなので、これを伸ばすことにする。 varsファイルで指定してもいいけど、とりあえず手っ取り早くなんとかしたかったので環境変数として直接渡すことに。 お行儀が悪いのは認識している。
cd /etc/openvpn/easy-rsa/easyrsa3 # /etc/openvpnの中にeasy-rsaのレポジトリをcloneしてます
EASYRSA_CRL_DAYS=1000 ./easyrsa gen-crl # 生成したCRLをOpenVPNに読み込ませるのを忘れないように
CA証明書やサーバ証明書では有効期限のことは考慮にあったけど、CRLについては抜け落ちてたなぁ。 勉強になりました。
Tokyo側アゲイン
Tokyo側のCRLも確認してみたところ、二ヶ月後くらいに期限が切れそうな感じだったので更新しておいた。 あぶねあぶね。
記事カテゴリ: ITインフラ
投稿日時: 2019/05/07(Tue)
最終更新日時: