#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

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS