おはようございます!マネジメントオフィスいまむらの今村敦剛です。
この度、IDCフロンティアのIaaS型パブリッククラウドサービスを使い、OpenVPNサーバを構築しました。その構築方法を記録する第7回目です。今回は、サーバの設定(server.conf作成)をします。
スポンサーリンク
この連載の全体的な構成
この連載は、全10回を予定しています。今回は第7回目「server.conf作成」です。
連載記事一覧
- 全体構想
- IaaS設定 - 仮想マシン作成
- IaaS設定 - IaaSネットワーク設定
- IaaS設定 - 操作環境整備
- IaaS設定 - DDNS設定
- VPNサーバ設定 - インストール
- VPNサーバ設定 - 鍵・証明書作成
- VPNサーバ設定 - server.conf作成
- VPNクライアント設定 - 鍵・証明書作成
- VPNクライアント設定 - client.ovpn作成
- VPNクライアント設定 - windows自動起動設定
鍵・証明書ファイルのコピー
OpenVPNで通信をするには、通信相手が正しいことを確認するために、いくつかの鍵・証明書の作成が必要です(イメージは下記の図のとおり)。そして前回の記事では、これらの鍵・証明書のうち、クライアント証明書・クライアント秘密鍵以外の鍵・証明書を作成しました。
前回の記事で作成した鍵・証明書と、それらのファイルのありかは下記の通りのはずです。
- ca.crt /usr/share/easy-rsa/3.0.8/pki/
- server.key /usr/share/easy-rsa/3.0.8/pki/private
- server.crt /usr/share/easy-rsa/3.0.8/pki/issued
- dh.pem /usr/share/easy-rsa/3.0.8/pki/
- ta.key /usr/share/easy-rsa/3.0.8/
- ca.key /usr/share/easy-rsa/3.0.8/pki/private
- client.key /usr/share/easy-rsa/3.0.8/pki/private
- client.crt /usr/share/easy-rsa/3.0.8/pki/issued
このうち、上記の赤字の5つのファイル(ca.crt、server.key、server.crt、dh.pem、ta.key)は、etc/openvpnにコピーをします。(サーバが保持すべき鍵・証明書ファイルなので)
コピーは、本連載の第3回で設定をしたWinSCPでやるのが簡単です。
OpenVPNサーバの設定①(server.confサンプルファイルのコピーと前準備)
続いて、OpenVPNサーバの設定をします。ここがOpenVPN設定の本丸と言ってもいいくらい重要な部分です。設定を間違えたらうまく動作しません。難しそうだなあと思われるかもしれませんが、実はお手本となるサンプルのファイルがすでに仮想マシン(linux)上にあります。ですので、サンプルファイルのうち、変更すべき箇所だけ変更をすればOKです。
お手本となるサンプルファイルは、/usr/share/doc/openvpn-2.4.12/sample/sample-config-filesというディレクトリにあるserver.confというファイルです。(openvpnのバージョンによっては、2.4.12の数字の部分が異なりますので注意をしてください)。まずはこのディレクトリにWinSCPで移動をして、そしてserver.confのファイルをetc/openvpnにコピーします。(さきほど、a.crt、server.key、server.crt、dh.pem、ta.keyの5つのファイルをコピーしたのと同じ場所です)
etc/openvpnにコピーをしたら、コピーをしたそのファイルを、WinSCPでダブルクリックして、いつも使っているエディタで編集するのが楽でしょう(viコマンドでlinux標準のエディタを起動して編集してもいいですが、慣れたエディタを使うのが楽です)。WinSCPでのエディタの設定は、オプション(O)→環境設定(P)を押したら出てくる下記のウィンドウでできます。
OpenVPNサーバの設定②(server.confの修正)
etc/openvpnにコピーしたserver.confをエディタで開いて修正をしていきます。今回の目的(VPNサーバはIaaS(今回のケースではIDCフロンティアを利用)の仮想マシンにインストール。そして、自宅PCと事務所PCをそれぞれVPNクライアントとして設定。それぞれがVPNサーバとVPNを貼る)にそった設定は下記のとおりです。行数は、サンプルファイルでのserver.confの行数を示しています。
行数 | 対応 | 対応の具体的内容 |
---|---|---|
53 | 確認のみ | dev tunになっていることを確認 |
85 | 修正 | サンプルファイルではdh2048.pemとなっていたが、これをdh.pemに変更(作成したファイル名に合わせた) |
101 | 確認のみ | デフォルトのまま。これはVPNサーバーとVPNクライアントの暗号化部分のプライベートIPアドレスの設定。基本的にはデフォルトのままでよい |
141~142 | 確認のみ | ;(コメントマーク)をつけたままであることを確認。今回はLAN間接続はしないのでコメントアウトもしない |
167~168 | 確認のみ | ;(コメントマーク)をつけたままであることを確認。今回はLAN間接続はしないのでコメントアウトもしない |
200~201 | 場合によって修正 | DNSサーバの設定。デフォルトはOpenDNSになっているが、変えたければコメントアウトして使いたいDNSのIPを指定する |
209 | 確認のみ | ;(コメントマーク)をつけたままであることを確認。今回はLAN間接続はしないのでコメントアウトもしない |
252 | 修正 | ;(コメントマーク)がないことを確認(cipher AES-256-CBCのまま)。暗号化の設定 |
258 | 確認のみ | ;(コメントマーク)をつけたまま(compress lz4-v2)であることを確認。今回は非圧縮でやるのでコメントマークをつけたまま |
274~275 | 修正 | ;(コメントマーク)をとる(user nobody group nobodyとする)。セキュリティ強化のための権限設定 |
287 | 修正 | status openvpn-status.logを、status /var/log/openvpn-status.logに修正(ログをvar/logに記録するように変更。こだわりがなければデフォルトでもいい) |
296 | 修正 | log /var/log/openvpn.logとする(セミコロン取ってディレクトリを指定) |
297 | 修正 | log-append /var/log/openvpn.log(セミコロン取ってディレクトリを指定) |
306 | 確認のみ | verb 3になっていることを確認(数字が大きいほどログがたくさん貯まる(最大11)。3くらいで問題ない) |
openvpnサーバの起動
これで設定完了なので、最後にサーバを起動します。次の2つのコマンドを叩いてください。
まずはOpenVPNサーバサービスの起動。
command
systemctl start openvpn@server
そしてサービスの自動起動を有効にします。これをやると、仮想マシンを再起動したときに、OpenVPNサーバが自動で起動します。
command
systemctl enable openvpn@server
どうでしょう?できましたか?