AWS LightsailでOpenVPNサーバ構築
概要
- AWS LightsailのLinuxインスタンスにOpenVPNサーバをインストールする
- WindowsにOpenVPNクライアントをインストールして、OpenVPNサーバへの接続をする
AWS インスタンス作成
作成するインスタンスの構成
- 構成: Linux OSのみ Amazon Linux
ネットワーキング設定
- 静的IPの作成、インスタンスにアタッチ
- ファイヤウォール: "Custom" "TCP" "1194"を追加
OSセットアップ
インスタンスにログイン
アップデート
sudo yum update
タイムゾーンの設定
cd /etc
sudo cp localtime localtime.$(date +%Y%m%d)
sudo ln -sf /usr/share/zoneinfo/Asia/Tokyo localtime
cd sysconfig/
sudo cp clock clock.$(date +%Y%m%d)
sudo vi clock
------------
ZONE="Asia/Tokyo"
UTC=false
------------
sudo service rsyslog restart
sudo service crond restart
# 確認
date
SSHの設定(必要であれば)
cd /etc/ssh
sudo cp sshd_config sshd_config.$(date +%Y%m%d)
sudo vi sshd_config
------------
PermitRootLogin forced-commands-only
PasswordAuthentication no
------------
再起動
sudo shutdown -r now
OpenVPNとeasy-rsaのインストール
OpenVPN
sudo yum install openvpn
easy-rsa
sudo yum install epel-release
sudo yum install easy-rsa --enablerepo=epel
各種Keyファイルの作成
認証局の作成
cd /usr/share/easy-rsa/3
sudo ./easyrsa init-pki
sudo ./easyrsa build-ca
DHパラメータの生成
sudo ./easyrsa gen-dh
サーバー用の証明書と秘密鍵の生成
sudo ./easyrsa build-server-full server nopass
クライアント用の証明書と秘密鍵の生成
sudo ./easyrsa build-client-full test-client nopass
- 作成されるファイル:
- /usr/share/easy-rsa/3/pki/ca.crt
- /usr/share/easy-rsa/3/pki/issued/test-client.crt
- /usr/share/easy-rsa/3/pki/private/test-client.key
OpenVPNのセットアップ
IPアドレスの確認
ip a
--------------------
eth0:
...
inet 10.0.0.20/20 ...
--------------------
Keyファイル設置
cd /usr/share/easy-rsa/3
ls /etc/openvpn/
sudo cp pki/ca.crt /etc/openvpn/
sudo cp pki/issued/server.crt /etc/openvpn/
sudo cp pki/private/server.key /etc/openvpn/
sudo cp pki/dh.pem /etc/openvpn/dh2048.pem
server.confセットアップ
ls /usr/share/doc/openvpn-2.4.4/sample/sample-config-files
sudo cp /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn/server.conf
sudo vim /etc/openvpn/server.conf
----------------
port 1194
proto tcp
dev tun
ca ca.crt
cert server.crt
key server.key
dh dh2048.pem
server 10.8.0.0 255.255.255.0
ifconfig-pool-persist ipp.txt
push "redirect-gateway def1 bypass-dhcp"
push "route xxx.xxx.xxx.xxx yyy.yyy.yyy.yyy"
push "dhcp-option DNS 208.67.222.222"
push "dhcp-option DNS 208.67.220.220"
keepalive 10 120
tls-auth ta.key 0 # This file is secret
cipher AES-256-CBC
persist-key
persist-tun
status /var/log/openvpn/openvpn-status.log
log /var/log/openvpn/openvpn.log
log-append /var/log/openvpn/openvpn.log
verb 3
explicit-exit-notify 0
----------------
diff /usr/share/doc/openvpn-2.4.4/sample/sample-config-files/server.conf /etc/openvpn/server.conf
sudo mkdir /var/log/openvpn
sudo chmod 0600 /var/log/openvpn
- TCPで接続する場合はexplicit-exit-notify 0にする
TLS認証キーの作成
sudo openvpn --genkey --secret /etc/openvpn/ta.key
IP Forwadingの有効化
cd /etc
sudo cp sysctl.conf sysctl.conf.$(date +%Y%m%d)
sudo vim sysctl.conf
-----------------------
net.ipv4.ip_forward = 1
-----------------------
sudo sysctl -p # 有効化の反映
ルーティングを変更
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo service iptables save
OpenVPNの起動
sudo chkconfig openvpn on
sudo service openvpn start
Windows向けOpenVPNクライアントのセットアップ
クライアント用Keyファイルのダウンロード
(サーバ上で)
cd ~
mkdir ./tmp
sudo cp /usr/share/easy-rsa/3/pki/ca.crt ./tmp
sudo cp /usr/share/easy-rsa/3/pki/issued/test-client.crt ./tmp
sudo cp /usr/share/easy-rsa/3/pki/private/test-client.key ./tmp
sudo cp /etc/openvpn/ta.key ./tmp
sudo chown -R ec2-user ./tmp
(Windows上で)
scp -i ./LightsailDefaultKey-ap-northeast-1.pem ec2-user@52.199.55.61:tmp .
- Windows上でKeyファイル群は一か所にまとめておく
OVPNファイルの作成
client
dev tun
proto tcp
remote 123.123.123.1 1194
ca ca.crt
cert test-client.crt
key test-client.key
tls-auth ta.key 1
verb 3
tun-mtu 1500
cipher AES-256-GCM
remote-cert-tls server
compress lz4-v2
auth-nocache
nobind
- OVPNファイルは自分で作成する必要がある
- 上の内容でKeyファイル群と同じ場所にtest-client.ovpnファイルをテキストエディタで作成する
- 123.123.123.1はOpenVPNサーバのグローバルIPアドレス
OpenVPN Client for Windowsのインストール
- 以下のURLにあるように、インストーラーをダウンロードし、ダブルクリックし、ウィザードの通りにインストールする
OpenVPN Client for Windowsの起動と動作確認
- OpenVPN GUIを起動すると設定ファイルが見つからないというエラーになる
- タスクトレイのアイコンを右クリックして、「Import file...」を選び、上で作ったOVPNファイルを指定する
- インポートが終了したら、再度アイコンを右クリックして、「接続」を選ぶ
- ブラウザを起動して、http://ugtop.com/などにアクセスして、IPアドレスが123.123.123.1であることを確認する
参考
参考