2019/05/07(Tue)

動かなくなってたOpenVPNをメンテした

記事カテゴリ: ITインフラ

ちょっと前に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も確認してみたところ、二ヶ月後くらいに期限が切れそうな感じだったので更新しておいた。 あぶねあぶね。


タイトル: 動かなくなってたOpenVPNをメンテした
記事カテゴリ: ITインフラ
投稿日時: 2019/05/07(Tue)
最終更新日時:
ha4gu

このブログはITエンジニアのha4guが書いています。
しばらく無職やってましたがそろそろ仕事する気になってきましたんでどこか雇ってください。 Web開発がやりたいです。勉強したぶんRailsがいいんですけどこの際あまり贅沢は言いません。 ポートフォリオはもうちょっと待って(←これをもう数ヶ月は言ってる)。

なおこのブログはまだ構築途中です。ぜんぜんわからない。俺は雰囲気でGraphQLを書いている。

Gatsbyブログ構築 公開ToDo:
  • カテゴリ機能の実装(すべての記事がいずれかのカテゴリ1つに属すようにする)
    • 記事ページでのカテゴリ表示実装
    • カテゴリごとの記事一覧ページ実装
    • トップページでのカテゴリ一覧リンク実装
  • タグ機能の実装(記事に任意の数のタグを付与できるようにする)
    • 記事ページでのタグ表示実装
    • タグごとの記事一覧ページ実装
    • トップページでのタグ一覧リンク実装
  • 記事ごとに登録したキーワードがmetaに反映されるようにする(なってたっけ?)
  • 記事ごとにキーワードを登録する
  • Font Awesomeを使えるようにする
  • Sassを使えるようにする
  • コメント機能の検討(付けるとしたらDisqusが現実的?)
  • サイドバー実装させるかどうするか検討
  • SNS共有ボタンの実装