Parsec Relay ServerでParsec Error 6023&6024を解決し、Parsecホストに接続できました

Parsec Relay Serverを設置することで、必ずParsec Hostに接続成功させます。

Parsec error 6023と6024でどうしてもホストに接続できない場合は、Parsec For Teamsプラン以上であれば、Relay Serverを設置することで、必ず接続成功させます。

概要

Parsecを使用する際、ローカルマシンのネット環境によって、ホストに接続できないことは少なくないと思います。
その中に、error 6023error 6024(Unable To Negotiate A Successful Connection)の場合が多い気がします。
公式サイトエラー6023と6024の解決案にいくつ方法が書かれていますが、少し厳しいネット環境では、解決案にある方法を全て試してもダメな場合もあるので、このブログでRelay ServerでParsecの接続を必ず成功させるということを紹介したいと思います。

Parsec Relay Serverの試しは弊社の森さんも書いたこともありますが、自分は自宅ネット環境でどうしてもParsecホストに接続できないことで、メモと少し補足としてこのブログを書きたいと思ってます。

(このブログは、Parsec ClientParsec Hostが既に設定完了の状態を想定しています。ParsecインストールなどはParsec関連ブログに確認してください)

マシン環境

  • Parsec License: Parsec for Teams / Enterprise
  • Parsec Account Role: Admin
  • Local Machine: Apple M1 Macbook Air
  • Host Machine: AWS EC2 g4dn.xlarge (Windows Server 2019)
  • Relay Server: AWS EC2 t3.medium(Ubuntu Focal 20.04 amd64 server)

事前説明

Parsec Relay Server Manual

通信経路構成図

簡単にいうと、Parsec ClientParsec Hostが直接接続できなかったシナリオから、public IPを持つRelay ServerでUDP通信を中継するようにしています。

Inbound/Outbound Rules

通信経路構成図を見てみると、

6.HPR relays the UDP traffic to the Host via its "Host Start Port", which is random by default

ということなので、ホスト側のInbound Portはランダムで、そしてプライベートネットワーク経由なので、とりあえずホスト側全てのInbound Portを全て許容するようにします。
そしてこちらの場合、Outbound Portはあまりセキュリティに影響なさそうなので、Relay ServerHostどちらでもOutbound Portを全て開放します。

つまり
- Relay Server: inbound port 4900, 5000 / outbound port all port - Host: inbound port all port / outbound port all port
に設定します。

ParsecのAdmin権限

Relay Server download URLTeams Global App Settingsに確認できますが、Teams Global App Settingsに入ることRelay ServerのIP記入することには、Admin権限が必要です。

Relay Server Machine/System Spec

Relay Server machine specs:
2 cores
4GB RAM
1gbps+ NIC

公式最低マシンスペックは上記ですので、それに当たるt3.medium(最低スペック + 5gbps帯域幅)をRelay Serverにします。

 

Supported Operating Systems:
Ubuntu 18.04
Ubuntu 20.04
RHEL 7
RHEL 8
CentOS 7
CentOS 8

サポートされるシステムなんですけど、Ubuntu needs no firewall configuration by default, as it's default configuration blocks no traffic.と言われましたので、一番手間がかからないUbuntuにします。

手順

Relay Serverインスタンスの作成

AWSにログインし、Relay Server用新しいEC2を作ります。
システムはUbuntu Server 20.04 LTSにし、インスタンスタイプはt3.mediumにします。

Inbound / Outbound Ruleを付ける

EC2 Dashboardの左側のNetwork & Security -> Security Groupsに入ります。

 

  • Relay Server: inbound port 4900, 5000 / outbound port all port
  • Host: inbound port all port / outbound port all port
    そして全てのルールをAnywhere-IPv4にし、Relay ServerとHost、二つSecurity Groupを作成します。

作成されたSecurity RuleをRelay ServerとHostにつけます。
(EC2 Instanceの詳細画面に、Actions -> Security -> Change Security Groups)

Relay Serverのインストールと起動

リモートで作られたRelay ServerEC2インスタンスにアクセスし、コマンド実行できる状態にします。(こちらはSSH Clientを使いました、これからのコマンドにあるリンクやURLなどをご自身のに変更してください)

 

Admin権限のアカウントでログインし、Teams Global App Settingsに入ります。
Download The High Performance Relay Serverのリンクをコピーします(https://teams.parsec.app/xxxx.tar.gz)。

wget https://teams.parsec.app/xxxx.tar.gz    
tar -xf xxxx.tar.gz

まずParsec Relay Serverのプログラムをダウンロードし、展開します。    

 

cd parsechpr1.0
sudo cp parsechpr /bin
sudo cp parsechpr.service /etc/systemd/system

展開したプログラムのものをシステムパスにコピーします。

 

sudo nano /etc/systemd/system/parsechpr.service

Relay Serverのip:portを``ExecStart=/bin/parsechpr xx.xx.xx.xx 5000 4900```の風に設定します。

 

sudo systemctl start parsechpr
sudo systemctl enable parsechpr

Parsec Relay Serverプログラムを起動します。

Teams Global App Settingsに情報入力

上記の手順が終わったら、Teams Global App Settingsに入り、またGroup Management -> HIGH PERFORMANCE RELAY SERVER SETTINGSに入ります。

 

Relay Server EC2 InstanceのPublic IP addressPortを記入します(xx.xx.xx.xx:4900)。

 

これでRelay Serverの設定が全て完了となり、このままParsec ClientがParsec Hostにの接続はできるはずです。

ちなみに、元々接続できない環境がRelay Serverで接続したら、Relay Serverを閉じても(Teams Global App Settingsに記入したものを消しても)、再接続ができる状態になっています(同じネット環境の複数端末)。恐らく一回NAT Punching(UDP Hole Punching)されたら、このままずっと接続できるようになって(いつできなくなるのが分からないですけど)、Relay Serverの費用に気になる方はただ接続エラーを解決するためなら、接続ができてからRelay Serverをオフにしても構わないと思います。