V6プラス自宅LANに外出先からアクセス③OpenVPNサーバ構築


前回はVPSをレンタルしDDNSサービスを動かして、インターネットからホスト名でアクセスできるようにしました。

VPSをVPNにして、VPNでつなぐとVPSが転送してくれて・・・・という感じで、VPSとVPNが紛らわしい中。

今回はVPSサーバへOpenVPNをインストールして、VPNサーバとして設定してみたいと思います。


OpenVPNサーバ構築

基本的にOpenVPN HOWTOを参考に進めて行きます。こちらの情報は大変充実しており、構築や設定に必要な情報の9割以上を得ることができました。

OpenVPN、easy-rsa 2インストール

OpenVPNとeasy-rsa 2をインストールします。epelからダウンロードするかたちです。

OpenVPNのバージョンは2.4.4でした。不正アクセスを防ぐために、常に新しいバージョンを使うように心がけたいものです。


証明書作成

サーバ側証明書作成

OpenVPNは、OpenSSL(暗号ライブラリ)を使って動作します。暗号処理は証明書(crt)や秘密鍵(key)やら何やら必要です。まずは、サーバ側で必要な証明書類を作成します。次のような流れになります。

  1. 証明書関係の作業フォルダを作ります。
  2. あらかじめvarsファイルを編集して、証明書のキー情報を記入しておきます。最低限、下記の5つの情報を編集します。空欄はNGです。
    1. KEY_COUNTRY
    2. KEY_PROVINCE
    3. KEY_CITY
    4. KEY_ORG,
    5. KEY_EMAIL
  3. マスタCAを作成します。
  4. サーバ証明書を作成します。
    • 「server」という名称で作成しますが、証明書を区別するための重要な名前になります。
  5. DHパラメータを作成します。
  6. 作成した証明書をOpenVPNの設定フォルダにコピーします。
  7. ここでtaキーも作成しておきます。

クライアント側証明書作成

よりセキュリティを重視する場合、keyファイル(秘密鍵)は作ったマシンから動かしてはいけないそうです。クライアント側で秘密鍵と証明書を作るには、CSRを使ってキーサイン・マシンに登録して、キーサイン・マシンは証明書に・・・

・・・

ということだそうです。(ぉぃ

OpenVPN HOWTOと同じように、サーバ側で作ってしまいます。

拠点間接続クライアント用に1つ、リモート接続用に1つ作成します。最低限、クライアントの台数分、証明書を作る必要があります。

  1. 拠点間接続用に、パスワード無しのクライアント証明書を一つ。
    • ここでは名称を「client1」にしますが、お好きな名前でどうぞ。
    • この名称は、サーバ側でクライアントの識別に使われます。
  2. リモート接続用は、パスワード有りで作ります。連番で管理したいので、pが付いた「clientp1」にします。
  3. 作成した証明書と秘密鍵は、あとでクライアントに転送します。

証明書を作り終わっても、クライアントを増やすときに新しい証明書を作ったり、アクセスを停止するため証明書を廃止してcsr.pemファイルを作ったりしますので、作業フォルダは安全な場所にそのまま残しておきます。盗難防止のため、マスタ証明書の秘密鍵(ca.key)はオフラインメディア(USBメモリー等)に移動しておくほうが良いそうです。


OpenVPNサーバ設定

コンフィグレーション・ファイルを作ったり、ディレクトリを作ったり何だり・・・・。

server.confファイル作成

下記のような内容になります。

192.168.111.0は、自宅LANのネットワークになります。

ログの冗長レベル(verbosity)は最大11でこのような感じです。

デバッグ時は6以上、リアルタイムに確認するなら5、記録用は3~4がちょうど良さそうです。

サーバ側クライアント個別設定ファイル作成

拠点間接続クライアントの証明書と同じ名前の設定ファイルを作っておきます。ここではclient1というファイルになります。

下記のような内容になります。

「このクライアントは、このネットワークと繋がってるからー」という感じです。

OpenVPNサーバ起動

ログを入れるフォルダを作り、serverディレクトリ全体のオーナーを変えておきます。

オーナーをもっと細かく設定しようとしたところ、うまく動かなくなりましたので、ざっくり変えておいた感じです。

必要なファイルはこれくらいで済むのですね・・・

いよいよ、systemdでopenvpnを起動します。

うまく起動しましたでしょうか?

VPNサーバの状態は、ログファイルを見るか、下記のコマンドで管理機能にアクセスして確認できます。

statusで状態を表示できるほか、クライアントが接続されるとログが表示されます。


VPSサーバ側でパケットのルーティングが必要かと思っていましたが「外出先から自宅LANへアクセスしたい」という今回の用途では特に不要でした。ルーティングしなくてもちゃんとアクセスできました。

「V6プラスの自宅LANから、VPS経由でインターネットにアクセスしたい」場合はルーティングが必要かもしれませんが。どうやら今回の目的と同時設定はできないようですので、別の機会に実験しようと思います。

OpenVPNのIPプール(10.8.0.0)と、自宅のネットワークとでパケットがやり取りできるように。/etc/sysctl.confに1行追加し、ルーティングを有効化します。

VPS再起動後、ルーティングが有効になります。


OpenVPNサーバの設定はこのような感じです。

大変お疲れ様でした。

次回は拠点間接続用のクライアントを構築したいと思います。


V6プラス自宅LANに外出先からアクセス

スポンサーリンク

シェアする

  • このエントリーをはてなブックマークに追加

フォローする

スポンサーリンク