インターネットを経由したエンドツーエンドのメッセージ交換

遠隔地にいる通信デバイスどうしが直接メッセージのやり取りをできると便利です。
同一LAN内であればそれは比較的簡単に実現できます。
しかし、インターネットを跨る場合は、インターネット上に中継サーバを設置したり、VPNを導入するなどの必要があって面倒です。
そこで、VNETプラスを利用してインターネットを経由したエンドツーエンドのメッセージ交換を簡単に実現する方法を紹介します。

ここでは2台のWindows PCを使って、UDPとTCPそれぞれのメッセージ交換を実現した例を示します。
VNETプラスをインストールすると、メッセージ交換用のソースコードと実行ファイルが以下のフォルダ配下に格納されています。
\C:\Program Files\IDS\VNET\simplechat
アプリの名称は下記です。
 UDP対応:
  送信用:udpsendx.exe
  受信用:udpreceivex.exe
 TCP対応:
  送信用:tcpsendx.exe
  受信用:tcpreceivex.exe
受信用アプリは、受信用ソケットで特定のポート番号でメッセージを待ち受けし、メッセージを受信したらコンソールに出力します。
送信用アプリは、相手のVNET IDを指定して、上記オート番号に向けてメッセージを送信するという簡単なものです。

Windows Defenderでは、受信用アプリを初回に起動した時に、「パブリックネットワークとプライベートネットワークにこのアプリへのアクセスを許可しますか」とポップアップが出るので許可します。
送信側のアプリに対しては、何ら設定は必要ありません。
受信側のアプリについては受信が可能となるようにファイアウォールの設定が必要で、接続試験をする前に設定しておくのがお勧めです。

以下が設定方法です。
Windowsセキュリティを起動
→ファイアウォールとネットワーク保護
→詳細設定
→ローカルコンピュータのセキュリティ→受信の規則
搭載されているアプリ一覧が表示されるので、この中からudpreceivexとtcpreceivexを探します。いずれも2つずつ(udp用とtcp用)あるので、すべて以下の手順で変更します。
・該当プログラムをダブルクリックして変更画面に移行する。
・全般タグにて、「ブロックする」から「接続を許可する」に変更する。
・詳細設定にて、デフォルトはパブリックネットワークにのみチェックが入っているので、プライべ―トネットワークの方にもチェックを入れる。

ウイルスソフトを入れている場合は若干方法が異なります。この設定はウイルスソフトごとに異なりますが、ワンタッチで設定が可能な場合が多いです。接続試験をしながら最初のメッセージ交換のときに許可設定をします。例としてNortonでは以下のようになります。
最初にアプリを立ち上げた時点で「怪しいファイルを検出しました」と出ますが、しばらく待つと問題ないとして立ち上がります。
最初にアプリを起動した時、最初にメッセージを送信しようとしたとき、最初にメッセージを受信したときに許可を求める表示が出るので許可します。
Nortonでは送信処理もユーザの確認を取るところが特徴です。
以下に確認手順を示します。
まずはPC2台を同一LAN内に隣接設置して確認することを推奨します。隣接していた方が何かあったときに調査しやすいためです。
LAN内で確認が取れれば、2台のPCを遠隔に設置しても問題なく動くはずです。

【UDPチャット】
Udpsendx.exeと udpreceivex.exeを起動してください。
①送信用アプリ画面には「Input a destination VNET ID」、受信用アプリ画面には「Waiting for a UDP message」と表示されます。
②送信側画面から宛先PCのVNET IDを入力すると、VNETプラスのトンネル経路が生成され、宛先PCの仮想IPアドレスが表示されます。
③送信側からメッセージを入力してENTERを押下してください。ほぼ同時にそのメッセージが受信用アプリ画面に表示されることを確認してください。

【TCPチャット】
TCPはUDPと違って最初と最後にコネクションの確立と開放があり、さらにメッセージパケットに対する応答パケットが存在します。

Tcpsendx.exe(送信用)とtcpreceivex.exe(受信用)を起動してください。
①送信用アプリ画面には「Input a destination VNET ID」、受信用アプリ画面には「Waiting for a connection」と表示されます。

②送信側画面から宛先PCのVNET IDを入力すると、VNETプラスのトンネル経路が生成され、宛先PCの仮想IPアドレスが表示されます。同時に受信用アプリ画面にconnectedと表示され、TCPコネクションが確立したことがわかります。

③送信側からメッセージを入力してENTERを押下してください。ほぼ同時にそのメッセージが受信用アプリ画面に表示されることを確認してください。

TCPの場合は一度コネクションを張ると、その2者間でのみの通信となるため、他のメンバと通信ペアを確立する場合は再立ち上げが必要になります。

コメント