ポート開放のやり方・手順

まずポート開放とは?

そもそもポート開放とは何なのか?何のためにあるのか?を簡単に説明します。

まずスマホやゲーム機などは下図のような感じにインターネットにつながっています。

そこに外部から不正なデーターなどが来たとします。これをルーターなどは防ぎます。

しかしこれは不正じゃなく正しいものも防ぎます。

つまり「このデーターは通していいよ💛」とルーターに教える必要があるという事です。それがポート開放です。

ポート開放を正しく行えばこのようにデーターが行き来できるよう
(ゲーム内ではオープンと言ったりも) になります。

※とっても簡単に説明をしてます。Google先生に聞いたほうが詳しく知れます。

で、どうやるの?やり方はよ

はい。ではポート開放のやり方に移りますね👼

まずルーターの管理者ページに飛びます。

管理者ページに飛ぶ方法はルーターのIPアドレスでアクセスするのが一般的です。(よくわからない人はルーターの名前で調べれば出てくると思います。)

ipconfig からゲートウェイ調べてアクセスするのもありかも

管理者ページにアクセスするとこのようにログインを求められるので入力します。

当方の環境ではこんな感じ
JCOMで契約するとついてくる「HUMAX ルーター」です

初期設定のIDとパスワードはルーター名で調べると出てくるのですが、大抵はID「admin」「user」のパスワード「password」などです。

ログイン後のページを探っていくと、「ポート開放」「ポート転送」
「ポートフォワーディング」 などと書かれた設定画面があると思いますので開きます。

画面が開けたら設定していきます。

まず LAN側=家・WAN側=外 という事を頭に入れといてください。

まずLAN側IPアドレスに「ポート開放をしたい端末のIPアドレス」を入力します。

※なお、PCでは「ipconfig」、PS4など家庭用ゲーム機では「接続情報」などから確認できます。

次に開放する(使用したい)ポート番号・プロトコルを入力します。

使用するポート番号・プロトコルはソフトウェア・ゲーム等により異なるため調べる必要があります。「〇〇〇 ポート番号」などで調べれば出てきます。

※参考資料: Call Of Duty Minecraft

また、ポート番号を入力する欄が2つある事が多いのですがこれは開始番号と終了番号です。どういうことかというと、例えば 10000 ~ 10010 のポートを開放したいとします。その時一つ一つ設定するとなると、10個も設定しないといけなくなります。この手間を省くためにあるものです。

つまり「10000番ポートだけでいい」という人は 10000 ~ 10000 と同じにすればいいだけの話です。 なお、普通WAN側のポート番号はLAN側のポート番号と同じにします。

最後にWAN側IPアドレスですがこちらは転送元のアドレスは大抵の場合わからないのですべてのIPアドレスから受付られるようにします。すべてから受け取るには「0.0.0.0」(機器によっては255.255.255.255の場合も) を設定します。

あとは「保存」して終了です。お疲れ様でした^^


なお「設定がめんどくさいーーー」と友達に言われたのもあり、設定を楽々できるアプリを開発中です。完成次第、ここに貼りたいと思います。
なお開発は1,2週間程度の予定です👼

ダウンロードはこちら


ここまで読んでくれてありがとうございました!!

ホームページでは他にも

・様々な記事や作った作品および過程
・ソースコード、素材ファイル
・あらゆる”モノ”の作り方

などなど随時、記事や作品を新規公開・更新していますので是非見ていってくださいね!見ていただけると本当に嬉しいです!

C#でUPnPを使った ポートマッピング

ゲームを始めオンラインでの通信機能が必要になる事は多いと思います。

そんな時立ちはだかる難関の1つ。それはNAT越えです。

NAT越えをする手段はいくつか考えられますが、今回は一番簡単(?)なUPnPを使ってルーターにポートフォアリングを設定して通信通路を確保したいと思います。 この記事はその時の記録です。

実行・テスト環境

テスト環境:Unity 2018 2.9f1

今回のプログラムはUnity+C#で作成。

パケット送信などの仕組み・ソースコードは 前に書いた記事「UnityでUDP通信を行うには」 などを参考にしてください。

ルーターにポートフォアリング(ポート転送)をリクエストする

ネットワーク内のルーターを探索する

探索の為に「M-Search」リクエストを送信先「 239.255.255.250 : 1900 」(ブロードキャスト)にUDPで送信します。

「M-SEARCH」送信の様子

その後ルーターなどUPnP対応機器からのリスポンス「NOTIFY」が同じアドレスで返ってくるので受信します。

UPnP対応機器からのリスポンス「NOTIFY」

ルーターの情報を取得

先ほどの情報を元にルーターに「HTTP / GET」で詳細情報をリクエストします。

リクエストは以下のようなプログラムで実装しました。


私の環境では「192.168.0.12」のPCから「192.168.0.1」のルーターにリクエストを送信している

なお、リクエストに成功すると「HTTP 200 OK」が返され、XML形式の情報を入手することができます。

そのXMLのうち今回は <controlURL> の情報を元にリクエスト先アドレスを入手します。

リクエストをルーターに送信

先ほどの情報を元に対象のアドレスに「HTTP / POST」でリクエスト内容(SOAPプロトコル)を送信します。

今回テストに送信したリクエストは以下の通りです。

このリクエストではポート「12345」のUDP通信を「192.168.0.12」に転送するリクエストをしています。

ExternalPortとInternalPortは転送元と転送先なので通常同じにします。

リスポンスを受信し成功確認

上のSOAPリクエストを送信するとルーターからリスポンスを受け取ります。

この時、「HTTP 200 OK」なら成功です。

HTTP/1.1 200 OK で成功だとわかる
ルーターの管理者ページでも確認できる

成功すると上図のように管理者ページにも追加されているのがわかる。

なお、失敗だと「 HTTP/1.1 500 Internal Server Error 」が返されます。失敗原因としては「既にポートが使用中」「UPnP設定の上限まで達している」などが挙げられます。

そもそも何も返ってこない場合、そもそもどこかが間違えているはずですので再確認してみてくださいね。

外部からの送信テスト

ポートフォアリングの設定などがしっかり出来ていることを確認するために外からUDPでパケットを送信してみます。

パケット送信アプリで送信テスト

スマートフォンからDocomo(4G)のキャリア回線で自宅のパソコンへとメッセージを送信。

パケット(メッセージ)が届いているのが分かる

受信できていれば完璧です。

オンラインゲーム作りの第一歩ですかね^^

今度は「UDPホールパンチング」という方法でも挑戦してみたいと思います。
またその時は記事を書きますね


ここまで読んでくれて本当にありがとうございました~^

ホームページでは他にも

・様々な記事や作った作品および過程
・ソースコード、素材ファイル
・あらゆる”モノ”の作り方

などなど随時、記事や作品を新規公開・更新していますので是非見ていってくださいね!見ていただけると本当に嬉しいです!

また、「このアプリの作り方を知りたい。この部分どうなってるの?」「身の回りのこんなもの作れるの?」などなどご意見何でも受け付けていますので是非連絡くださいね!

オンラインゲームをつくるまでの記録~VRを使ったゲーム開発~

Unity上でVRオンラインゲームを開発するまでの記録です。

ところどころをざっとまとめてある感じです。

ゲームシステムとしてはFPSに近い感じと考えています。

Unityを使い始める

初心者向けに書く予定ですが、まだ書いてません-_-
いつか書きます。

ゲームを作る

> VRに対応させる

UnityでVRゲームを初めて作る方に向けて Google VR SDK の使い方を説明しています。「VRゲームを作りたいな~」「でも難しそうだな~」なんて思っている方に簡単だとわかってもらい、手軽に始められるように書きました。

>コントローラーに対応させる

今回のスマホゲームはVRの為、コントローラーを使っての操作になります!

通信ができるようにする

> UDPを使ったパケット通信

マルチプレイゲームの基本・通信機能の部分に焦点を当て書いた記事になります。今回はFPSのようにプレイヤーの動きに俊敏に対応できるようにUDPを使って通信します。

> UPnPを使ってNAT越え

これまででUDPを使った通信でキャラクターを動かすことができるようになったが、オンライン上で通信するには基本サーバーが必要。しかしそんなサーバーを用意する予算がないためP2P通信でゲームを作ろうと考えた。

しかし、P2P通信をオンライン上でするためにはNAT越えという難関が待っている。

そこで私がNAT越えをする為に考えたのが「UDPホールパンチング」「UPnP」の2つだった。

NAT越えを楽々してしまおうと考えた結果まずは「UPnP」を使うこととした。

>UDPホールパンチングを使ってNAT越え

この記事は準備中です。しばらくお待ちくださいね^^

トップページに戻る