AWSを使ってVPNサーバを組む。やっとできたのでやり方をご紹介。

AWSでお手軽VPNサーバ構築(Windows10) パソコンサポート
パソコンサポート今日のパソコン教室

コロナウイルス感染をふせぐため、投稿日現在、店長ひとりしか出勤しない体制をとって、在宅レッスンを実施している当教室です。

間に合わせの体制で遠隔レッスンをはじめたのですが、スタッフがテレワークする関係で、やっぱりVPNを組みたい。

でも、教室のネット回線は IPv6 IPoEになっていて、ルータのVPN機能が無効化されてしまっており、使えません。

散々いろいろ調べたあげく、

AWSでVPNサーバ立てればいいじゃないか!

と気づいて構築しました。あちこちぶつかりながら苦労しましたが、なんとかつながったので、ここに方法をしるします。

スポンサーリンク

AWS EC2で仮想サーバを起動

AWS(Amazon Web Service)を使えば、サーバの実物を設置しなくても、AWSのクラウド内にバーチャルのサーバを簡単に設置できます。

そこで、この仮想サーバをVPNの中心に設置し、各パソコンから接続することで、教室のパソコンと各スタッフのパソコンを同一LAN内に置き、しかも安全も確保する、ということをやろうというわけです。

AWSのアカウント作成

まずはAWSのアカウントを作成します。

AWSコンソールにサインイン

こちらは利用開始後のサインイン画面ですが、「新しいAWSアカウントの作成」から新規作成できます。

アカウント作成の詳細はすいません、省略します。

「EC2」の管理画面から仮想サーバ(インスタンス)を作成

アカウントが出来たら、数あるAWSのサービス内から「EC2」をえらび、管理画面に移動します。

EC2管理画面

「リージョン」にご注意

AWSは世界中に拠点があり、「リージョン」とは、そのどの拠点内にサーバを設置するかということです。

いまのリンクは、東京リージョンという情報を含んでますので、ぶじ東京リージョンが立ち上がると思いますが、まちがってオハイオなんかに作ろうものなら、地球を半周して300ms(0.3秒)程度の遅延は普通に出てしまいますので注意しましょう。

もちろん、海外も含めた接続をする場合には、接続先の国を考慮した最適なリージョンを選びます。

画面右上のリージョン、東京になっている

仮想サーバ=インスタンスを作成・起動

インスタンス=仮想サーバという理解で結構です。
仮想サーバのおおもとになるイメージが何種類もあり、そこから選んで、「そのイメージが実体化したもの」として、自分のサーバが立ち上がります。この「実体化したもの」=インスタンス、という意味合いでとらえてます。

インスタンスを起動ボタン

こちらからインスタンスを起動します。

インスタンスの設定

この先は、次の記事がとても参考になりました。ありがとうございます。リンクさせていただきます。

AWSにSoftEther VPNServerで簡単にVPN接続しよう

9割がた、この記事のとおりなんですが、ちょこっとだけ違うところだけに絞って書いていきます。

Windows環境から構築する場合は、読むところは「基本」のところからです。

インスタンスの種類
Amazon Linux 2 AMI (HVM), SSD Volume Type (いちばん上のやつ)
64ビット x86

インスタンスタイプ
t2.micro(無料利用枠の対象) →右下「確認と作成」

汎用 t2.micro 無料利用枠の対象

※インスタンスタイプについて
 t2.microで作成すると、ほぼ24時間稼働でも無料枠におさまるため、これでいける規模ならおすすめです。(月750時間)
 試したところ、音声通話を使う時に若干きついときがありました。このため、場合により 有料のt3.nanoを使ってネットワーク帯域を広げています。
(パスワード、事前共有キーを共通化し、Elastic IPの関連付けだけ変更すれば、VPNクライアントの設定を変えなくても接続できる)

「インスタンス作成の確認」の中の
「セキュリティグループの編集」をクリックして、引用記事にある通りのセキュリティグループを作成します。

タイププロトコルポート範囲ソース説明
SSHTCP22[グローバルIP]/0一時的に利用
カスタムUDPルールUDP5000.0.0.0/0
カスタムUDPルールUDP45000.0.0.0/0

「ソース」のところを0.0.0.0 にしていますが、できれば、VPNクライアントが使用しているIPアドレスを実際に入れた方がセキュリティは向上します。指定したIPアドレスからのみ許可、というわけです。拠点数の数だけルールがふえるので、あまり多い時は工夫しなければなりませんが。

EC2のインスタンスは、外部接続のセキュリティを「セキュリティグループ」によって管理しています。グループを設定し、各インスタンスに「どのグループを適用するか」を設定する方式です。

Elastic IPの取得と関連付け

ElasticIPとは、仮想サーバに固定したIPアドレスを割り当てる機能。外部からアクセスする際に、これがないと毎回接続先を変えなければならないはめになります。

「Elastic IPが紐づけられたインスタンスが有効である間は無料」ということです。

EC2コンソールの左ペインのここから設定します

ElasticIPメニュー

起動したインスタンスにWindowsからSSH接続

先ほどの記事を読み進めていきます。SSH接続のところは、読み替えが必要です。

AWSにSoftEther VPNServerで簡単にVPN接続しよう

Windows環境からの仮想サーバへの接続は、次の記事を参考にしました。

PuTTY を使用した Windows から Linux インスタンスへの接続 | AWSドキュメント

PuTTY本体はこちらから入手できます。

PuTTY

インスタンス作成時に新しいキーペアができ、ダウンロードできると思いますので、それを使用して設定していきます。

Host Nameのところには、さきほど関連付けたElastic IPをいれてしまえばよいでしょう。

接続したら、こうなるので

login as;

「ec2-user」Enter、で入れます。パスワードがないのが不審に思われるかもしれませんが、さきほどのAWSドキュメントの通り、キーペアをダウンロードして設定すれば、それがパスワードのかわりなのです。

ec2-userでログインしたところ
スポンサーリンク

仮想サーバにSoftEther VPNをインストール・設定

さらに先ほどの記事を読み進めていきます。サーバ、という項目。

AWSにSoftEther VPNServerで簡単にVPN接続しよう

最初にコンパイルのため必要なパッケージをインストール

すべての作業のはじめに、最低限の必要なパッケージをインストールする必要があります。※ここが引用記事にのってないため、忘れないでください

Amazon Linux インスタンスでソフトウェアのコンパイルを準備する | AWSドキュメント

sudo yum groupinstall “Development Tools”

とすると、必要なものがまとめてインストールできます。

SoftEther VPN Serverをインストール

このあとは、AWSにSoftEther VPNServerで簡単にVPN接続しよう の記事のほぼそのままになります。

sudo timedatectl set-timezone Asia/Tokyo
sudo yum -y update
sudo yum -y install git gcc

cd ~/

ダウンロードと展開 のところ、ちょっとてこずりました。

curl -L -O [Linux 64bit/x86版 SoftEther VPN Server最新版のURL]

これでダウンロードしたものを、展開します。
PuTTYの場合、Ctrl-Cでコピーしたものが右クリックで張り付く動作になりますので、

ls
として、出てきたファイル名をコピーして使うと簡単。
展開は、「zxvf」ではなんでか展開できず「xvf」とします。

tar xvf [ここにlsで出てきたファイル名を右クリックで貼り付け]

するとぶぁーと展開がはじまります。

終了したら
cd vpnserver
yes 1 | make

最初のコンパイル用パッケージが正しく入っていれば、ぶじmakeが終わります。

cd ..

ここから、設置場所を移動しsystemdに登録していきます。

sudo mv vpnserver /opt/vpnserver
sudo vi /etc/systemd/system/vpnserver.service

vi の使いかたも知らずにはじめてしまった初心者は、ここでつまづいて散々ググりました。

viコマンドについて詳しくまとめました 【Linuxコマンド集】

sudo vi /etc/systemd/system/vpnserver.service →スクリーンエディタが起動
「A」をおしてINSERTモードにする

そこで、下にあるソースをコピーして貼り付け(右クリック)します。

[Unit]
Description=Softether VPN Server Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/opt/vpnserver/vpnserver start
ExecStop=/opt/vpnserver/vpnserver stop
Restart=on-abort
WorkingDirectory=/opt/vpnserver/
ExecStartPre=/sbin/ip link set dev eth0 promisc on

[Install]
WantedBy=multi-user.target

張り付いたら [ESC]を押してINSERTモード離脱
「:wq」Enter、で、「保存して終了」

これで、起動制御用のファイルが正しく作成されます。

それから、続きにいきます。

sudo chmod 755 /etc/systemd/system/vpnserver.service
sudo systemctl daemon-reload
sudo systemctl start vpnserver

ぶじSoftEther VPN Serverが起動されれば、特にメッセージもなくコマンドプロンプトに戻ってきてくれます。

sudo systemctl enable vpnserver

これで自動起動の設定まで完了。SoftEther VPNが稼働した状態になります。

SoftEther VPN Serverそのものの設定

ここは、AWSにSoftEther VPNServerで簡単にVPN接続しよう の記事のほぼそのままです。

sudo /opt/vpnserver/vpncmd
で、vpncmdコマンドが立ち上がり、

1 Enter
Enter
Enter

で、管理者モードのプロンプトに入ります。
(Hub作成後、ここでHub名を指定してしまうと、管理者モードでない状態でHubに入ってしまうので、変更できない項目が出ます。Enter Enterと飛ばしたうえで「Hub main」などとして入ると、特権モードになります)

HubCreate main
[Hub管理用のパスワード決定]※コマンドラインから管理する時以外は使いません

HUB main (mainハブに入る)
UserCreate [ユーザ名] /Group:none /REALNAME:none /NOTE:none
※ユーザ名はVPN接続する際に必要なので必ずコピーして転記
UserPasswordSet [ユーザ名]
[ユーザのパスワード決定、2回入力] ※VPN接続する際に必要なので必ず転記

IPsecEnable /L2TP:yes /L2TPRAW:no /ETHERIP:no /DEFAULTHUB:main
[L2TP事前共有キー決定]※VPN接続する際に必要なので必ず転記
SecureNatEnable

Dhcpset /Start:192.168.30.10 /End:192.168.30.200 /Mask:255.255.255.0 /Expire:7200 /GW:192.168.30.1 /DNS:192.168.30.1 /DNS2:none /Domain:none /Log:yes /PushRoute:”10.0.0.0/255.255.0.0/192.168.30.1″

exit

これでLinuxのプロンプトに戻ってきます。

引用記事には、ホスト名確認しといたほうがいいと書いてありますが、ElasticIPを設定していれば、そのIPアドレスで大丈夫です。

スポンサーリンク

Windows 10からVPN接続

AWSにSoftEther VPNServerで簡単にVPN接続しよう には、Macからの接続方法しか載ってないので、Windows10 からの接続は次のような記事を参考にします。

【Windows 10】VPN接続の設定と接続ショートカットの作成方法 | atmarkit

VPNプロバイダー:Windows(ビルトイン)
接続名:[分かりやすい接続名](任意)
サーバー名またはアドレス: [Elastic IP]
VPNの種類:事前共有キーを使ったL2TP/IPSec
事前共有キー:[設定した事前共有キー]
サインイン情報の種類:ユーザー名とパスワード
ユーザー名:[設定したユーザー名]
パスワード:[設定したパスワード]

として作成すると、すっと接続します。

IPv4環境から接続できなかった場合

自宅のLANから、この方法でVPNに接続しようとすると、

ネイティブIPv6 (IPoE)の場合は、まったく問題はないと思います。

IPv4や、PPP接続を使用した疑似IPv6環境の場合に、こんなエラーが出ることがあります。

AWSに接続できません。
リモート サーバーが応答しないため、使用するコンピューターとVPNサーバー間のネットワーク接続を確立できませんでした。これは使用するコンピューターとリモートサーバー間のネットワークデバイス(ファイアーウォール、NAT、ルーターなど)の1つがVPN接続を許可するように構成されていないことが原因だと考えられます。管理者またはサービス プロバイダーに問い合わせて、どのデバイスが問題を引き起こしているのかを判定してください。

じつに大層なエラーですが、当教室の場合は、結局ルーターが原因でした。

「VPNマルチパススルー」を使用するために何か設定は必要ですか?(無線LAN親機ルーターモデル、有線ルーター) | Buffalo

単純に、当店スタッフ自宅のルーターが、このパススルーに対応してなかったんです。

Buffaloは、どうやらL2TPプロトコルのパススルーにあまり対応してないようなので、Atermに交換しました。

ATerm WG1800HP3

VPNパススルー機能 -WG1800HP3ユーザーズマニュアル

たまたま安かったのでこれにしましたが、Atermはかなり広くL2TPのパススルーに対応しているようです。

ルーターを交換したところ、すっとつながるようになりました。

パソコン教室・キュリオステーション志木店からのお知らせ
レッスンはオンラインで受講できます

パソコン教室・キュリオステーション志木店では、本年よりオンラインでの在宅レッスンを実施しております。
教室の全コースがオンラインで受講可能。実際にインストラクターがご対応いたします。
1時間の無料体験レッスンはいつでも予約できます。詳しくは公式ページをご覧ください。

スポンサーリンク
キュリオステーション志木店運営をフォローする
志木駅前のパソコン教室・キュリオステーション志木店のブログ

コメント

タイトルとURLをコピーしました