データセンターで稼働している PC 群にアクセスするような場合、最近は踏み台サーバーを使った多段SSH接続ではなく、VPN でローカルPC を繋げ、そこから各 PC へアクセスするという方法が多くなってきてる気がします。
世には SSHトンネル未対応のソフトも当然あるので優位性はありそうだし、多段SSH接続と比べデメリットも思いつきません。(というか二者択一のものではないので、両方採用もアリだと思います)
そこで AWS のケースで VPC に VPN で接続する方法です。
AWS Client VPN なんていうサービスも始まってます(が、まだ触ったことないです)し、手段は色々あると思いますが、手っ取り早くかつ高機能だと思う SoftEther を使った例です。ネットには同じような情報が沢山提供されているのでほぼ自分向けの備忘録です。
SoftEther は、有償ソフト(PacketiX)だけになり取っ付きにくくなってしまった時期がありましたが、数年前に無償版が復活しています。
しかもオープンソースで商用利用も可という太っ腹っぷり。開発者様に感謝です。ありがとうございます。
> sudo yum -y install gcc
> sudo wget https://github.com/SoftEtherVPN/SoftEtherVPN_Stable/releases/download/v4.29-9680-rtm\ /softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz -P /opt/
> sudo tar zxvf /opt/softether-vpnserver-v4.29-9680-rtm-2019.02.28-linux-x64-64bit.tar.gz -C /opt/ > cd /opt/vpnserver/ > sudo sh .install.sh
> sudo vi /etc/systemd/system/vpnserver.service
[Unit] Description=SoftEther VPN Server Service After=network.target [Service] Type=forking ExecStart=/opt/vpnserver/vpnserver start ExecStop=/opt/vpnserver/vpnserver stop WorkingDirectory=/opt/vpnserver/ [Install] WantedBy=multi-user.target
> sudo systemctl enable vpnserver > sudo systemctl start vpnserver > systemctl status vpnserver ← active になっているか確認
インストールさえ出来てしまえば、あとは windows のサーバー管理ツールを使って GUI で操作できます。素晴らしいです。SoftEther のアドバンテージの一つです。
もちろんコマンドラインでも操作できると思うのですが自分やり方知らずで・・・
次に、VPN Server に接続した接続元PCから、VPN Server のある LAN 内の PC (= VPC 内の EC2 ) へのアクセス方法ですが、残念ながら AWS はローカルブリッジが出来ません。
プロミスキャスモードを有効にすることが出来ないので諦める他ありません。
ローカルブリッジが不可な環境では、セキュアNATを使うことが現実的な解になると思います。
172.16.0.0/255.255.0.0/192.168.30.1
VPNサーバーの用意が出来ればクライアントは簡単です。windows なら特に。
サーバー管理マネージャー を見てもらうとわかると思いますが、SoftEther は多くの VPN の方式をサポートしています。
Windows や Android の OS 標準の VPN 接続が使えますし、OpenVPN も対応しています。
SoftEther クライアントアプリをインストールして仮想 NIC 越しの接続もアリです。
それぞれわかりやすい説明もありますので、御随意に選択するのが吉と思います。
SoftEther VPN は GUI ツールが充実しています。しかも画面上に説明が表示されたりと、とても親切でよく出来た UI です。
自分は SoftEther1.0 の頃から触っておりますが、通信も安定していますし、アプリが落ちるとかは遭遇したこともなく、とても品質が良いソフトウェアだと思います。
このような優良なソフトを無償で提供されているっていうのは大変有り難いです。開発者様に感謝です。
がしかし、AWS などクラウドサービスにおいては、自前で頑張るより、胴元(AWS なら amazon 様)が提供するサービスがあるなら、可用性とかサポートも考慮して、まずそれの採用を検討するのが吉と思います。これは VPN に限らず何でも。
今後は、インフラ周りは業者が全て用意するからソフトウェア技術者はアプリ本来の開発だけに注力してね。っていう流れになっていくものだと思いますが、インフラ周りも楽しいですし、色々触ってみるのは良いことだと思います。