37
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

ConoHaの最小プラン(月々税抜630円)で固定IPアドレスをゲットする(OpenVPNサーバを作る)

Last updated at Posted at 2016-02-14

はじめに

前回(さくらのVPS512(月々税抜635円)で固定IPアドレスをゲットする(OpenVPNサーバを作る))に引き続き、今回はパフォーマンスが評判のConoHaでVPNサーバを立ち上げる手順をまとめます。

作業前提(自己責任でご判断ください)

  • 今回は「ConoHa 最小プラン(月々税抜630円 2017/01/13現在)」を使う
  • CentOS7.2
  • OpenVPN
  • ほかの機能(Webサーバ等)は一切設けない
  • 複数人で使えるようにする
  • 説明の簡略化のため、ほぼすべてrootで作業
  • コマンドの入力、viによるファイルの編集などがあり、漏れなく作業が必要
  • 契約・請求・キャンセル方法等については、GMOインターネット株式会社からの案内に従ってください

問題なければ始めましょう。

作業手順

アカウント登録

ConoHaの「お申し込み」ページからアカウント・決済方法などを登録してください。手順は省略します。
1455478838393.jpg

ログイン・サーバ追加

ログインしてメニューの「サーバー」をクリックして、「サーバーリスト」を表示させてみます。
右上の「+サーバー」でサーバを追加しましょう。
1455477214824.jpg

設定は下記のようにセットしてください。今回はIPv6を使用しないようにしています。
1484281370345.jpg

サーバ一覧の確認

サーバの追加はあっという間に終わります。
1484281456058.jpg

サーバの詳細を確認してみましょう。
1484281515351.jpg

SSHログイン

ここから先はSSH経由で作業します。
WindowsならTeraTermなど、Macならターミナルなどでログインしてください。
ログイン先のサーバは上記のサーバの詳細で確認したIPアドレス、ユーザはroot、パスワードはサーバ追加時に設定したパスワードです。

rootパスワードの設定

ここから先はすべてrootで作業します。
先ほど設定したrootのパスワードが気に入らない場合は修正しておきましょう。

$ passwd root
Changing password for user root.
New password:パスワード入力
Retype new password:パスワード再入力
passwd: all authentication tokens updated successfully.

SELinuxの無効化

"SELINUX=disabled"となっている場合は変更の必要がありません。先に進みましょう。

$ vi /etc/selinux/config
/etc/selinux/config(抜粋)
SELINUX=disabled

SSHログイン用ユーザの追加

SSHでログインする際、最初からrootでログインするのはセキュアではないため、
別のユーザを作り、パスワードを設定します。
今後は、別ユーザでログインしてからrootになる、という流れを作るわけです。

$ useradd sshuser
$ passwd sshuser
Changing password for user sshuser.
New password:パスワード入力
Retype new password:パスワード再入力
passwd: all authentication tokens updated successfully.

rootでのSSHログインの無効化

SSHでログインする際、rootでのログインを許可しないように設定します。

$ vi /etc/ssh/sshd_config
/etc/ssh/sshd_config(抜粋)
#PermitRootLogin yes
PermitRootLogin no

変更を反映します。

$ systemctl restart sshd.service

次回以降のログインの流れについて触れておきます。
先ほど作ったsshuserでログインした後、rootになるには以下のように入力します。

$ su -
Password:パスワード入力

sshuserでログインする流れを確認したところで、
SELinuxの設定変更の反映もしておきたいので、サーバを再起動します。

$ reboot

再度SSHでアクセスできるようになったら、sshuserでログインし、rootになります。

IPフォワーディングの有効化

$ vi /etc/sysctl.d/10-ipv4.conf
/etc/sysctl.d/10-ipv4.conf(抜粋)
#追記
net.ipv4.ip_forward = 1

変更を反映します。

$ sysctl -p /etc/sysctl.d/10-ipv4.conf
net.ipv4.ip_forward = 1

openssl設定の編集

$ vi /etc/pki/tls/openssl.cnf
/etc/pki/tls/openssl.cnf(抜粋)
#default_days   = 365                   # how long to certify for
default_days    = 3650                  # how long to certify for
#default_crl_days = 30                  # how long before next CRL
default_crl_days = 3650                 # how long before next CRL

openvpnのインストール

$ yum -y install openvpn

この後、設定をしていくわけですが、先にパスワードを1つ決めておいてください。
各種証明書の作成時などに使います。
**パスワード(A)**とします。

CA証明書・秘密鍵の作成

$ cd /usr/local/src/
$ wget https://github.com/OpenVPN/easy-rsa/archive/master.zip
$ unzip master.zip
$ cp -r easy-rsa-master/easyrsa3/ /etc/openvpn/
$ rm -fr easy-rsa-master/
$ cd /etc/openvpn/easyrsa3/
$ ./easyrsa init-pki

init-pki complete; you may now create a CA or requests.
Your newly created PKI dir is: /etc/openvpn/easyrsa3/pki

$ ./easyrsa build-ca
Generating a 2048 bit RSA private key
............................................................................................+++
.................................................+++
writing new private key to '/etc/openvpn/easyrsa3/pki/private/ca.key.XXXXXXXXXX'
Enter PEM pass phrase:パスワード(A)入力
Verifying - Enter PEM pass phrase:パスワード(A)再入力
-----
You are about to be asked to enter information that will be incorporated
into your certificate request.
What you are about to enter is what is called a Distinguished Name or a DN.
There are quite a few fields but you can leave some blank
For some fields there will be a default value,
If you enter '.', the field will be left blank.
-----
Common Name (eg: your user, host, or server name) [Easy-RSA CA]:サーバ名入力(例: vpnserver)

CA creation complete and you may now import and sign cert requests.
Your new CA certificate file for publishing is at:
/etc/openvpn/easyrsa3/pki/ca.crt

$ cp pki/ca.crt /etc/openvpn/

サーバ証明書・秘密鍵の作成

$ ./easyrsa build-server-full server nopass
Generating a 2048 bit RSA private key
...................................................+++
...............................................................................+++
writing new private key to '/etc/openvpn/easyrsa3/pki/private/server.key.e7omRJmwXu'
-----
Using configuration from /etc/openvpn/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:パスワード(A)入力
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'server'
Certificate is to be certified until Feb  3 04:11:41 2026 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

$ cp pki/issued/server.crt /etc/openvpn/
$ cp pki/private/server.key /etc/openvpn/

DHパラメータの作成

$ ./easyrsa gen-dh
Generating DH parameters, 2048 bit long safe prime, generator 2
This is going to take a long time
(省略)

DH parameters of size 2048 created at /etc/openvpn/easyrsa3/pki/dh.pem

$ cp pki/dh.pem /etc/openvpn/

クライアント証明書(ダミー)の作成

$ ./easyrsa build-client-full dmy nopass
Generating a 2048 bit RSA private key
..................+++
..................+++
writing new private key to '/etc/openvpn/easyrsa3/pki/private/dmy.key.XXXXXXXXXX'
-----
Using configuration from /etc/openvpn/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:パスワード(A)入力
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :PRINTABLE:'dmy'
Certificate is to be certified until Feb  3 04:14:46 2026 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

$ ./easyrsa revoke dmy


Please confirm you wish to revoke the certificate with the following subject:

subject=
    commonName                = dmy


Type the word 'yes' to continue, or any other input to abort.
  Continue with revocation: yes
Using configuration from /etc/openvpn/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:パスワード(A)入力
Revoking Certificate 02.
Data Base Updated

IMPORTANT!!!

Revocation was successful. You must run gen-crl and upload a CRL to your
infrastructure in order to prevent the revoked cert from being accepted.

CRLの作成

$ cp vars.example vars
$ vi vars
/etc/openvpn/easyrsa3/vars(抜粋)
#set_var EASYRSA_CRL_DAYS       180
set_var EASYRSA_CRL_DAYS       3650
$ ./easyrsa gen-crl
Using configuration from /etc/openvpn/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:パスワード(A)入力

An updated CRL has been created.
CRL file: /etc/openvpn/easyrsa3/pki/crl.pem

$ cp pki/crl.pem /etc/openvpn/
$ chmod o+r /etc/openvpn/crl.pem

OpenVPNの設定

$ vi /etc/openvpn/server.conf
/etc/openvpn/server.conf(全体)
port 1194
proto udp
dev tun

ca ca.crt
cert server.crt
key server.key  # This file should be kept secret
dh dh.pem

server 192.168.100.0 255.255.255.0

ifconfig-pool-persist ipp.txt

push "redirect-gateway def1"
push "dhcp-option DNS 157.7.180.133" # ConoHa DNS1
push "dhcp-option DNS 163.44.76.148" # ConoHa DNS2

# iOSで使う場合、fragmentは非対応のためコメントアウトしてください
fragment 1280

mssfix 1280
link-mtu 1400

client-to-client

keepalive 10 120

comp-lzo

user nobody
group nobody

persist-key
persist-tun

status openvpn-status.log

log-append  /var/log/openvpn.log

verb 3

crl-verify crl.pem

サービスの登録・起動

$ systemctl enable openvpn@server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/openvpn@server.service to /usr/lib/systemd/system/openvpn@.service.

$ systemctl start openvpn@server.service

Firewallの設定

$ firewall-cmd --permanent --zone=public --add-masquerade
$ firewall-cmd --permanent --zone=public --add-port=1194/udp
$ firewall-cmd --reload
$ firewall-cmd --list-all
public (default, active)
  interfaces: eth0
  sources:
  services: dhcpv6-client ssh
  ports: 1194/udp
  masquerade: yes
  forward-ports:
  icmp-blocks:
  rich rules:

クライアント証明書・秘密鍵の作成

複数ユーザ分を作る場合は繰り返してください。

$ cd /etc/openvpn/easyrsa3/
$ ./easyrsa build-client-full ユーザ名
Generating a 2048 bit RSA private key
...............................................................+++
...................................+++
writing new private key to '/etc/openvpn/easyrsa3/pki/private/ユーザ名.key.XXXXXXXXXX'
Enter PEM pass phrase:ユーザ個別のパスワード入力
Verifying - Enter PEM pass phrase:ユーザ個別のパスワード再入力
-----
Using configuration from /etc/openvpn/easyrsa3/openssl-1.0.cnf
Enter pass phrase for /etc/openvpn/easyrsa3/pki/private/ca.key:パスワード(A)入力
Check that the request matches the signature
Signature ok
The Subject's Distinguished Name is as follows
commonName            :T61STRING:'ユーザ名'
Certificate is to be certified until Feb  3 04:25:02 2026 GMT (3650 days)

Write out database with 1 new entries
Data Base Updated

$ cp /etc/openvpn/ca.crt /home/sshuser/
$ cp /etc/openvpn/easyrsa3/pki/issued/ユーザ名.crt /home/sshuser/
$ cp /etc/openvpn/easyrsa3/pki/private/ユーザ名.key /home/sshuser/
$ chown sshuser:sshuser /home/sshuser/ca.crt
$ chown sshuser:sshuser /home/sshuser/ユーザ名.crt
$ chown sshuser:sshuser /home/sshuser/ユーザ名.key

各証明書・秘密鍵のユーザへの配布

一つ前の手順で/home/sshuser以下に設置しましたので、
SFTPなどでログインしてダウンロードするとよいでしょう。

ca.crt
ユーザ名.crt
ユーザ名.key

また、下記の情報も伝えます。

ユーザ名
ユーザ個別のパスワード

クライアントの接続設定

過去の記事を参考にしてください。

接続の確認

接続が完了したら、自分のIPアドレス確認用のサイトに行って確認してみましょう。
ConoHaで与えられたサーバのIPアドレスになっていたら成功です。
IPアドレス確認|Web便利ツール@ツールタロウ
IPアドレス確認|Web便利ツール@ツールタロウ.png

さいごに

必要最小限の作業にとどめたつもりでいるのですが、課題は色々あると思います。

例えば、

  • SSHはどこからでも接続できてしまう(→Firewallで閉じ、普段はConoHaのコンソールから作業する等の対応は可能)
  • このサーバの状態を監視する手段がない

などです。

適宜、環境に合わせて追加・変更していただき、快適な運用をしていただければ幸いです。
ここまでお付き合いいただきましてありがとうございました。

Webツールも公開しています。
Web便利ツール@ツールタロウ

37
43
2

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
37
43

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?