コロナウイルス感染をふせぐため、投稿日現在、店長ひとりしか出勤しない体制をとって、在宅レッスンを実施している当教室です。
間に合わせの体制で遠隔レッスンをはじめたのですが、スタッフがテレワークする関係で、やっぱりVPNを組みたい。
でも、教室のネット回線は IPv6 IPoEになっていて、ルータのVPN機能が無効化されてしまっており、使えません。
散々いろいろ調べたあげく、
AWSでVPNサーバ立てればいいじゃないか!
と気づいて構築しました。あちこちぶつかりながら苦労しましたが、なんとかつながったので、ここに方法をしるします。
AWS EC2で仮想サーバを起動
AWS(Amazon Web Service)を使えば、サーバの実物を設置しなくても、AWSのクラウド内にバーチャルのサーバを簡単に設置できます。
そこで、この仮想サーバをVPNの中心に設置し、各パソコンから接続することで、教室のパソコンと各スタッフのパソコンを同一LAN内に置き、しかも安全も確保する、ということをやろうというわけです。
AWSのアカウント作成
まずはAWSのアカウントを作成します。
こちらは利用開始後のサインイン画面ですが、「新しいAWSアカウントの作成」から新規作成できます。
アカウント作成の詳細はすいません、省略します。
「EC2」の管理画面から仮想サーバ(インスタンス)を作成
アカウントが出来たら、数あるAWSのサービス内から「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で作成すると、ほぼ24時間稼働でも無料枠におさまるため、これでいける規模ならおすすめです。(月750時間)
試したところ、音声通話を使う時に若干きついときがありました。このため、場合により 有料のt3.nanoを使ってネットワーク帯域を広げています。
(パスワード、事前共有キーを共通化し、Elastic IPの関連付けだけ変更すれば、VPNクライアントの設定を変えなくても接続できる)
「インスタンス作成の確認」の中の
「セキュリティグループの編集」をクリックして、引用記事にある通りのセキュリティグループを作成します。
タイプ | プロトコル | ポート範囲 | ソース | 説明 |
---|---|---|---|---|
SSH | TCP | 22 | [グローバルIP]/0 | 一時的に利用 |
カスタムUDPルール | UDP | 500 | 0.0.0.0/0 | – |
カスタムUDPルール | UDP | 4500 | 0.0.0.0/0 | – |
「ソース」のところを0.0.0.0 にしていますが、できれば、VPNクライアントが使用しているIPアドレスを実際に入れた方がセキュリティは向上します。指定したIPアドレスからのみ許可、というわけです。拠点数の数だけルールがふえるので、あまり多い時は工夫しなければなりませんが。
EC2のインスタンスは、外部接続のセキュリティを「セキュリティグループ」によって管理しています。グループを設定し、各インスタンスに「どのグループを適用するか」を設定する方式です。
Elastic IPの取得と関連付け
ElasticIPとは、仮想サーバに固定したIPアドレスを割り当てる機能。外部からアクセスする際に、これがないと毎回接続先を変えなければならないはめになります。
「Elastic IPが紐づけられたインスタンスが有効である間は無料」ということです。
EC2コンソールの左ペインのここから設定します
起動したインスタンスにWindowsからSSH接続
先ほどの記事を読み進めていきます。SSH接続のところは、読み替えが必要です。
AWSにSoftEther VPNServerで簡単にVPN接続しよう
Windows環境からの仮想サーバへの接続は、次の記事を参考にしました。
PuTTY を使用した Windows から Linux インスタンスへの接続 | AWSドキュメント
PuTTY本体はこちらから入手できます。
インスタンス作成時に新しいキーペアができ、ダウンロードできると思いますので、それを使用して設定していきます。
Host Nameのところには、さきほど関連付けたElastic IPをいれてしまえばよいでしょう。
接続したら、こうなるので
「ec2-user」Enter、で入れます。パスワードがないのが不審に思われるかもしれませんが、さきほどのAWSドキュメントの通り、キーペアをダウンロードして設定すれば、それがパスワードのかわりなのです。
仮想サーバに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環境の場合に、こんなエラーが出ることがあります。
じつに大層なエラーですが、当教室の場合は、結局ルーターが原因でした。
「VPNマルチパススルー」を使用するために何か設定は必要ですか?(無線LAN親機ルーターモデル、有線ルーター) | Buffalo
単純に、当店スタッフ自宅のルーターが、このパススルーに対応してなかったんです。
Buffaloは、どうやらL2TPプロトコルのパススルーにあまり対応してないようなので、Atermに交換しました。
VPNパススルー機能 -WG1800HP3ユーザーズマニュアル
たまたま安かったのでこれにしましたが、Atermはかなり広くL2TPのパススルーに対応しているようです。
ルーターを交換したところ、すっとつながるようになりました。
コメント