質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
VPN

VPN(Virtual Private Network)は、仮想プライベートネットワークとも呼ばれ、インターネットに接続してるユーザー間に仮想的な通信トンネルを構築した組織内ネットワークです。認証や暗号化を用いて通信経路を保護し安全なネットワークの構築ができます。

firewalld

firewalldは、CentOS7からデフォルトになったパケットフィルタリングです。一時的なルールと永続的なルールが設定でき、通信の許可・拒否をコントロール。バージョン6まで利用されてきた「iptables」における課題をカバーしています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

Q&A

2回答

2743閲覧

P2P通信のファイアウォール、NAT越えの技術

KriegReisfeld

総合スコア13

VPN

VPN(Virtual Private Network)は、仮想プライベートネットワークとも呼ばれ、インターネットに接続してるユーザー間に仮想的な通信トンネルを構築した組織内ネットワークです。認証や暗号化を用いて通信経路を保護し安全なネットワークの構築ができます。

firewalld

firewalldは、CentOS7からデフォルトになったパケットフィルタリングです。一時的なルールと永続的なルールが設定でき、通信の許可・拒否をコントロール。バージョン6まで利用されてきた「iptables」における課題をカバーしています。

ネットワーク

ネットワークとは、複数のコンピューター間を接続する技術です。インターネットが最も主流なネットワークの形態で、TCP/IP・HTTP・DNSなどの様々なプロトコルや、ルータやサーバーなどの様々な機器の上に成り立っています。

0グッド

2クリップ

投稿2019/10/27 09:01

編集2022/01/12 10:55

ネットワーク分野を勉強中の者です。
P2P通信ではファイアウォールの問題があると思いますが、
これは例えばファイアウォールが、外側からのレスポンスは通すが、外側からの直接のリクエストに対してはポートが空いてない限り通してくれないといったことによるものだと理解しています。
対して、例えばchromeリモートデスクトップ(WebRTC)やSoftether vpn(VPN Azure)などでは中継サーバを介することで解決しているようなのすが、
つまりこれは、双方ともに相手側からの通信を中継サーバが自分からのレスポンスに見えるように仕向けているということなんですよね?
ただ、具体的にどういう手順で通信しているのかがよく分かりません。
ピアAがピアBへ通信したいときにまずは中継サーバへリクエストを送るんだと思うのですが、この中継サーバはどのようにしてピアBに対してピアAが通信したいことを伝えるのでしょうか?

あとこれらのことはNAT越えとはまた違う話になるんでしょうか?

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ただ、具体的にどういう手順で通信しているのかがよく分かりません。
ピアAがピアBへ通信したいときにまずは中継サーバへリクエストを送るんだと思うのですが、
この中継サーバはどのようにしてピアBに対してピアAが通信したいことを伝えるのでしょうか?

ピアAもピアBもどちらも中継サーバを経由して通信しているので、ピアAからピアBは見えないと思います。
ピアBは中継サーバから自発の通信の戻りとしてピアAとの通信を受け付けるイメージです。

具体的にはTeam ViewerやChromeリモートデスクトップなどを利用している状態で[netstat /b]などのコマンドで通信状態を確認すると、当該プロセスが中継サーバとのみ通信しているのが見えると思います。(ピア相手のアドレスは見えないはず)
上記はピアと通信していない、プロセス(アプリ)のみ立ち上げている状態でも同様のはずです。(でないと、中継サーバ経由のピア相手からの通信を受け入れられないですからね)

あとこれらのことはNAT越えとはまた違う話になるんでしょうか?

「NAT超え」(ポート開放とも言いますが)を個別に設定しないとP2P通信ができないから上記のような方式を採用し、様々な相手と中継サーバを経由して通信できるようにしているのだと思います。

投稿2019/11/07 00:13

taichi_0807

総合スコア252

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

稚拙ながら回答致しますと、
WebRTC の場合は、UDP Hole Punching
という方法を使います。
STUNというサーバに対してリクエストをUDPで送信する事で、インターネット側から見た自分の通信可能な情報を受信できます。

この段階では、UDPポートに穴を空けた状態になっているだけです。

これで自分の方は準備完了です。

相手にも同じように相手の情報を取得して貰います。

そして、WebSocketや、google Firebase 等を経由して、相手の情報と自分の情報を交換する事で、はじめてP2Pで通信をする事になります。

但し、上記で通信可能にならない場合があります。
その場合に於いては中継のためにTURNサーバを介して通信が行われます。

法人向けのネットワーク機器では、厳密なNATが行われている場合がほとんどですので、その場合と考えて頂いて構いません。

一旦、情報を交換した後は特に中継のためのサーバは必要ない場合の方が多いと考えて頂いて差し支えありません。

詳細は、NATの詳しい説明と、STUNサーバについてを確認されると、より理解しやすいのではないかと存じます。

投稿2020/04/07 04:28

編集2020/04/07 04:32
johnny

総合スコア10

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問