ネット付き集合住宅で、VPN(AWS LightSail)経由で、外部へサーバ公開してみた。その1
参考URL
0, インスタンス作成時に、ワンライナーで IPsec VPN server を構築できる IPsec VPN Server Auto Setup Scripts を利用する。
IPsec VPN Server Auto Setup Scripts
https://github.com/hwdsl2/setup-ipsec-vpn/
1, aws-cli経由で、LightSailインスタンスを生成(一番下のnano)
参考サイトではubuntuだったけど、amazon linux2にした。
改行打消しはwindowsのコマンドプロンプトでは円マークじゃなくて、ハット(^)
More?と何回も表示されるのが、ちょっと・・・。実行する時はワンライナーに置換した方が安全?
1 |
aws lightsail create-instances --instance-names bellvpn --blueprint-id ubuntu_18_04 --bundle-id nano_2_0 --region ap-northeast-1 --availability-zone ap-northeast-1a --user-data "wget https://git.io/vpnsetup -O vpnsetup.sh && VPN_IPSEC_PSK='bellsecret' VPN_USER='bell' VPN_PASSWORD='bellpass' sh vpnsetup.sh" |
2, 生成したLightSailインスタンスが、ちゃんと実行(RUN)されているか、確認する。
1 |
aws lightsail get-instance-state --instance-name bellvpn --region ap-northeast-1 |
3, LightSailのポートはデフォで22/80が解放されている(不要なら閉じてもOK)
VPNに使うポート(UPD500/UPD4500)の二つを開放する
1 2 |
aws lightsail open-instance-public-ports --instance-name bellvpn --region ap-northeast-1 --port-info fromPort=500,toPort=500,protocol=UDP aws lightsail open-instance-public-ports --instance-name bellvpn --region ap-northeast-1 --port-info fromPort=4500,toPort=4500,protocol=UDP |
現時点で解放されているポートを確認する。
※Windowsのコマンドプロンプトでは、シングルクォーテーションは不可。ダブルクォーテーションで囲む。
1 |
aws lightsail get-instance --instance-name bellvpn --region ap-northeast-1 --query "instance.networking.ports" |
4, サーバのIPアドレスを確認
1 |
aws lightsail get-instance --instance-name bellvpn --region ap-northeast-1 --query "instance.publicIpAddress" |
5, 実際にiphoneなどでVPN接続してみる。
参考URLだと、VPNのタイプがIPsecだったけど接続できなかったので、L2TPなら接続できた!
6, 不要になったら削除
1 |
aws lightsail delete-instance --instance-name bellvpn --region ap-northeast-1 |
家庭LAN内にあるラズパイを、この固定IPサーバをVPN接続しに行って、ラズパイのWebサーバを外部に公開する。
1, ラズパイにSoftEather VPN Clientをインストールし、LightSailにVPN接続します(iphoneと同じ事をやる)
2, LightSail側はIptableを設定して必要なポート(80とか)を開き、そのポートに来た通信をVPNネットワークのラズパイのIPにフォワードする設定すると、ラズパイのWebサーバが外部に公開される。