1. 目的
- AWS Wavelengthを利用する際、クライアントとなるデバイス(PC、ラズパイなど)は、スマホやモバイルルータでテザリングし、Wavelength上のサーバと通信する。その際はNAPT経由でのアクセスとなるため、デバイス⇒サーバ方向のセッションは問題なく可能だが、基本的にはサーバ⇒デバイス方向のセッションは不可。
- 「サーバ側からデバイスにアクセスして、デバイス内に蓄積したデータを取得したい」といったニーズ対応へのため、SSHを用いて疑似的にサーバ⇒デバイス方向のセッションを開始できるような設定を確認する。
2. やったこと
- Wavelength上にインスタンス(Amazon Linux 2)を作成する。
- PC(Windows11)に、WEBサーバを立てておく。
- PCをスマホでテザリングし、Wavelength上のインスタンスにSSH接続する。
- SSHのリモートポートフォワード機能を用いて、Wavelength上のインスタンスからPCのWEBサーバにhttpアクセスする。
3. 構成
4. 手順
WEBサーバの準備
- Windows上に簡単にWEBサーバが作れるフリーソフト「簡単WEBサーバ」を起動する。利用手順については「【簡単】Windowsで簡易Webサーバを立ち上げる方法」を参照。
- アプリを起動後、「localhost:80」にhttpアクセスして、WEBサーバのトップ画面が表示可能なことを確認しておく。
SSH接続
- PCをスマホでテザリングする。
- リモートポートフォワードのオプションを付けて、PCからWavelength上のインスタンスにSSH接続する。
- Windows11標準のSSHコマンドを使用する場合は以下となる。
> ssh x.x.x.x -l ec2-user -i [秘密鍵ファイル] -R "localhost:10080:y.y.y.y:80"
- 「-R」がリモートポートフォワードの有効化。SSHでの接続先(Wavelength上のインスタンス)のlocalhost:10080にアクセスすると、その通信がPCの80番ポート(tcp)に転送されるようになる。
- 「x.x.x.x」はWavelength上のインスタンスのキャリアIP。「y.y.y.y」はPCのプライベートIP。
インスタンスからPCのWEBサーバへhttpアクセス
- 上記のSSH接続が存在している状態で、Wavelength上のインスタンスにて、localhost:10080にhttpアクセスすると、その通信がSSHのリモートポートフォワード機能により転送されて、PCのWEBサーバにアクセスすることができる。
[ec2-user@ip-10-0-10-201 ~]$ curl http://localhost:10080
<html>
<meta http-equiv="Content-type" content="text/html; charset=Shift_JIS">
<head>
<title>KANTAN HTTP Server</title>
</head>
<body bgcolor="deepskyblue" LINK="#FFFFFF" VLINK ="yellow">
<div style=" margin: 5px 5px 5px 5px; font-weight: bold; color: #ffffff; font-size: 20px; width: 300px; filter:Shadow(color=blue)";>
TTFA HTTP Server
</div>
<div class = "folder">
<a href="./KantanWebServer/">KantanWebServer</a>
</div>
</body>
</html>
(参考) TeraTermの場合の設定
- SSHコマンドの代わりに、TeraTermを使用する場合は「SSHポート転送」の項目にて同様の設定が可能。
5. 所感
- 実際に使うには例えばSSHのセッションの維持(切れたら再接続)などの考慮も必要かもしれないが、まずはベースとなる動作確認はできた。
6. 参考サイト
- SSHのポートフォワード設定(「ローカルポートフォワード」と、今回使用した「リモートポートフォワード」の2種類あり)の理解にあたり、参考になったサイトは以下。