2018.11.19 · 技術と道具

Amazon Linux 2でOpenVPNサーバ

訳あってAWS EC2でOpenVPNサーバを作ったので、その操作ログを残しておきます。

AWSコンソールでの操作

まず、AWSコンソールで下記の操作を行います。

  1. t2.nanoでEC2インスタンスを作成(インスタンスタイプは何でも良いですが、OpenVPNサーバのみの運用ならt2.nanoで良いのではないかと思います)
  2. ElasticIPを割り当て

送信元/送信先の変更チェックを無効化

VPNインスタンスのセキュリティグループの設定

OpenVPNサーバは1194/udpを使うので、セキュリティグループの設定で通信を許可します。

ルーティングの設定

VPCダッシュボードのルートテーブルの設定を行います。10.8.0.0/24のルート先としてOpenVPNサーバにするEC2インスタンスを指定します。

OpenVPNサーバのEC2インスタンスにログインして行う操作

パッケージアップデート

BASH
sudo yum update

OpenVPNとeasy-rsaのインストール

BASH
sudo yum install -y https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm
sudo yum install openvpn easy-rsa

認証局と鍵の作成

BASH
sudo su -
cd /usr/share/easy-rsa/3
./easyrsa init-pki

BASH
./easyrsa build-ca

pass phraseのみ入力。Common Nameは入力の必要なし。

BASH
./easyrsa gen-dh


まずは、サーバ側の証明書と秘密鍵を作成します。パスワードが不要な場合はnopassを付けて実行します。

BASH
./easyrsa build-server-full server1 nopass

ta.keyも作成します。

BASH
openvpn --genkey --secret /etc/openvpn/ta.key

次に、クライアント側に導入する証明書と秘密鍵を作成します。接続するクライアント毎に作成する必要があります。user1の部分をクライアント毎に置き換えます。
パスワードが不要な場合はnopassを付けて実行します。

BASH
./easyrsa build-client-full user1

/etc/openvpn/server.conf

TEXT
port 1194
proto udp
dev tun
ca /usr/share/easy-rsa/3/pki/ca.crt
cert /usr/share/easy-rsa/3/pki/issued/server1.crt
key /usr/share/easy-rsa/3/pki/private/server1.key
dh /usr/share/easy-rsa/3/pki/dh.pem

management localhost 7505

server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt

push "route 10.8.0.0 255.255.0.0"

tls-auth /etc/openvpn/ta.key 0

keepalive 10 120
cipher AES-256-CBC
comp-lzo

persist-key
persist-tun

status openvpn-status.log
verb 3
explicit-exit-notify 1

crl-verify /usr/share/easy-rsa/3/pki/crl.pem

management localhost 7505は、OpenVPNサーバの操作をコンソールの設定です。telnet localhost 7505でコンソールにアクセスできます。

最後の行のcrl-verifyは、失効した証明書のチェックを行う場合に追加します。

証明書の失効は下記のように行います。

BASH
./easyrsa revoke user1

失効の操作を行った後、下記の操作でcrl.pemファイルを作成します。

BASH
./easyrsa gen-crl

/etc/sysctl.conf

下記の行を追加します。

BASH
net.ipv4.ip_forward = 1

sysctlコマンドで反映します。

BASH
sysctl -p

OpenVPNサーバの起動

まず、テスト起動してみます。

BASH
cd /etc/openvpn/
openvpn server.conf

サービスとしての起動と、自動起動の設定を行います。

BASH
systemctl start openvpn@server
systemctl enable openvpn@server

これでOpenVPNサーバが立ち上がりました。次の記事でクライアントからの接続について説明します。

2018/11/19 19:09
← 第12回IoT+AIもくもく勉強会を開催しました
Raspberry Pi (Raspbian Stretch… →
井上 研一
経済産業省推進資格ITコーディネータとして中小企業のDX・AI活用の現場で伴走支援を行う。「ITCプロセスガイドライン4.0」および「中小企業向けAI活用ガイド」執筆メンバー。著書・講演多数。ITエンジニアとして25年以上の実務経験。AI導入の実務に10年以上携わる。自ら開発したAIサービス「Gen2Go」が北九州発!新商品創出事業の認定を受ける。2026年4月より北九州市立大学大学院マネジメント研究科の学生としての顔も持つ。

本サイトおよびブログに掲載している内容は、特に明記のない限り、井上研一個人の見解に基づくものです。所属・関与する組織、団体、企業、研究会等の公式見解を示すものではありません。