#author("2020-11-29T14:30:24+09:00","default:ryuichi","ryuichi")
#author("2020-11-29T14:31:01+09:00","default:ryuichi","ryuichi")
* AWS LightsailでOpenVPNサーバ構築 [#r81d98f1]
** 概要 [#uc05bf88]
- AWS LightsailのLinuxインスタンスにOpenVPNサーバをインストールする
- WindowsにOpenVPNクライアントをインストールして、OpenVPNサーバへの接続をする
** AWS インスタンス作成 [#t41c5d76]
*** 作成するインスタンスの構成 [#p79f6c26]
- 構成: Linux OSのみ Amazon Linux
*** ネットワーキング設定 [#o253f6dd]
- 静的IPの作成、インスタンスにアタッチ
- ファイヤウォール: "Custom" "TCP" "1194"を追加
** OSセットアップ [#o32728c6]
*** インスタンスにログイン [#b50ee632]
- ec2-userでSSHでログイン
*** アップデート [#p6de1bbf]
sudo yum update
*** タイムゾーンの設定 [#o2ba495a]
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の設定(必要であれば) [#fc169ed7]
cd /etc/ssh
sudo cp sshd_config sshd_config.$(date +%Y%m%d)
sudo vi sshd_config
------------
PermitRootLogin forced-commands-only
PasswordAuthentication no
------------
*** 再起動 [#de81da0b]
sudo shutdown -r now
** OpenVPNとeasy-rsaのインストール [#u885bf46]
*** EPELの確認と有効化 [#c143807f]
yum repolist | grep -i epel
sudo amazon-linux-extras install -y epel
*** OpenVPN [#x409fa6f]
sudo yum install openvpn
*** easy-rsa [#c8227926]
sudo yum install epel-release
sudo yum install easy-rsa --enablerepo=epel
** 各種Keyファイルの作成 [#ad51bdd5]
*** 認証局の作成 [#r5917d7b]
cd /usr/share/easy-rsa/3
sudo ./easyrsa init-pki (1)
sudo ./easyrsa build-ca (2)
- (1) カレントディレクトリにpkiディレクトリができる
-- '''/usr/share/easy-rsa/3.0.8/pki''' の中に以下で作るファイルが設置される
- (2) CA証明書を作る。コモンネームはホスト名やIPアドレスなど任意だが、デフォルトはEasy-RSA CA。
-- CA証明書ファイル '''/usr/share/easy-rsa/3/pki/ca.crt'''
-- CA証明書 '''/usr/share/easy-rsa/3/pki/ca.crt'''
-- CA秘密鍵 '''/usr/share/easy-rsa/3/pki/private/ca.key'''
*** DHパラメータの生成 [#i552ac90]
sudo ./easyrsa gen-dh
*** サーバー用の証明書と秘密鍵の生成 [#gf68af4b]
sudo ./easyrsa build-server-full server nopass
*** クライアント用の証明書と秘密鍵の生成 [#fc33d85e]
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のセットアップ [#pa3fc9ce]
*** IPアドレスの確認 [#c44a54a6]
ip a
--------------------
eth0:
...
inet 10.0.0.20/20 ...
--------------------
- サブネットマスク計算 https://note.cman.jp/network/subnetmask.cgi
*** Keyファイル設置 [#ae11cf75]
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セットアップ [#m465f1eb]
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認証キーの作成 [#yfd1d640]
sudo openvpn --genkey --secret /etc/openvpn/ta.key
*** IP Forwadingの有効化 [#s1e4acf7]
cd /etc
sudo cp sysctl.conf sysctl.conf.$(date +%Y%m%d)
sudo vim sysctl.conf
-----------------------
net.ipv4.ip_forward = 1
-----------------------
sudo sysctl -p # 有効化の反映
*** ルーティングを変更 [#h3b6b82c]
sudo iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE
sudo service iptables save
*** OpenVPNの起動 [#r0603aba]
sudo chkconfig openvpn on
sudo service openvpn start
** Windows向けOpenVPNクライアントのセットアップ [#r8af85a3]
*** クライアント用Keyファイルのダウンロード [#yb90749b]
(サーバ上で)
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ファイルの作成 [#kba6205f]
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のインストール [#of5c7bfa]
- 以下のURLにあるように、インストーラーをダウンロードし、ダブルクリックし、ウィザードの通りにインストールする
-- https://www.openvpn.jp/document/install-windows/
*** OpenVPN Client for Windowsの起動と動作確認 [#s2660a7f]
- OpenVPN GUIを起動すると設定ファイルが見つからないというエラーになる
- タスクトレイのアイコンを右クリックして、「Import file...」を選び、上で作ったOVPNファイルを指定する
- インポートが終了したら、再度アイコンを右クリックして、「接続」を選ぶ
- ブラウザを起動して、http://ugtop.com/などにアクセスして、IPアドレスが123.123.123.1であることを確認する
*** 参考 [#s95e1a1a]
- https://www7390uo.sakura.ne.jp/wordpress/archives/287
- https://dev.classmethod.jp/cloud/aws/openvpn24-aws/
** 参考 [#gb8954e6]
- https://blog.katsubemakito.net/aws/setup-lamp
- https://nonsensej.xyz/articles/2019/07/25/lightsail-vpn