• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:自宅鯖にて自宅LAN内でグローバルIPは同じですが)

LAN内でのグローバルIP共有とパケットの送信についての疑問

このQ&Aのポイント
  • 自宅LAN内でグローバルIPを共有するための方法やパケットの送信について疑問があります。
  • グローバルIPが同じでも、MACアドレスが分からない場合のパケット送信の仕組みについて考えました。
  • 同じポートで複数のサーバーを立てる場合、パケットはどのように送信されるのでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5293/13829)
回答No.1

NAT(NAPT)が使用されているルータで外部からグローバルIPアドレス宛に届いたパケットは、ポート開放等の機能で登録された情報に照らし合わせてLAN内のPCへ転送されます。 例えば 『外部から3000番ポートにアクセスがあった場合は、192.168.1.1:3000へ転送』 という設定をルータに行うと、外部からのアクセスがLAN内のPCに転送されます。 何も設定しなければ、ルータはあて先不明のパケットとして処理(破棄したりエラーを返したり)します。 ポート開放の設定は、外部から受付けるポート番号一つに付き一つの転送先しか設定できませんので、LAN内で同じポートで待ち受けるPCが複数有る場合はグローバル側で受付けるポート番号を分けて設定する必要があります。 『外部から3000番ポートにアクセスがあった場合は、192.168.1.1:3000へ転送』 『外部から3001番ポートにアクセスがあった場合は、192.168.1.2:3000へ転送』 といった具合です。

ppmcn
質問者

お礼

ご回答ありがとうございます。 NAT・NAPTの機能をよく分かっていなかったのですが、挙動含めてよく理解できました。 皆さんのご回答とても参考になったのですが、一番早く回答して頂けたt_ohtaさんにベストアンサーを付けさせていただきます。 ありがとうございました。

その他の回答 (3)

回答No.4

> ルータはLAN内のどの端末にパケットを送るか分からないのではと思いました はい。その通りです。 よって、外部へのサービスを立ち上げる場合は、 ルータの ポート転送やポートマッピングや静的IPマスカレードやDMZ等 (ルータによって呼び名が違うのですが) の機能を使って、グローバルIPとプライベートIPを ポート毎に紐付けする必要があります。 ポート番号ごとに設定できるので、ポート番号の違うサービスであれば 復数のサーバーに振り分けできます。 たとえば、Webサーバーとメールサーバーの2台が設置できます。 しかし、ポート番号が同じサービスの場合は、ルータの機能だけでは振り分けできないので リバースプロキシや、リダイレクタや ロードバランサ等の中継機能が別途必要になります。

ppmcn
質問者

お礼

とても参考になりました。 勉強不足のため、知らない単語が多々あるので、よく調べたいと思います。 ご回答ありがとうございます。

回答No.3

ご参考。 http://ja.wikipedia.org/wiki/%E3%83%8D%E3%83%83%E3%83%88%E3%83%AF%E3%83%BC%E3%82%AF%E3%82%A2%E3%83%89%E3%83%AC%E3%82%B9%E5%A4%89%E6%8F%9B >ポート番号3000でアプリケーションのサーバーX(ローカルIP:192.168.1.1)を立てていたとします。サーバーXにあててリクエストのパケットを外部からAA.AA.AA.AA:3000で送信した場合、LAN内ではピンポイントに192.168.1.1にのみパケットを流すことはできないですよね? ルーターに「WAN側にAA.AA.AA.AA:3000で入って来たパケットは、LAN側ポートの192.168.1.1:3000に出せ」ってNAPT設定をすれば良い。 >もっというと、同じアプリケーションのサーバーをLAN内の複数の端末・同じポートで立てていた場合、どうなるのでしょう。 外に居るクライアントは「どっちのサーバーに繋ぐか」を、何らかの方法で選択しないといけません。 なので「サーバーの選択」を「ポート番号」で行います。 ルーターに「WAN側にAA.AA.AA.AA:3000で入って来たパケットは、LAN側ポートの192.168.1.1:3000に出せ。WAN側にAA.AA.AA.AA:3001で入って来たパケットは、LAN側ポートの192.168.1.2:3000に出せ。」ってNAPT設定をすれば「外からサーバーを選ぶこと」が出来ます。 192.168.1.1のサーバーも、192.168.1.2のサーバーも、どっちも「ポート3000」で待ち受けします。 外から見ると「同じグローバルIPアドレスで、ポート3000のサーバーと、ポート3001のサーバーが居る」と言う状態になるのです。

ppmcn
質問者

お礼

ご回答ありがとうございます。 NAT・NAPTについての知識が欠けていました。 そういった挙動をとるのですね。 非常に勉強になりました。

回答No.2
ppmcn
質問者

お礼

非常に助かります。 よく勉強したいと思います。

関連するQ&A