アプリ版:「スタンプのみでお礼する」機能のリリースについて

IPの仕組みについてよくわかっていないので、猿でもわかるように説明していただけると助かります。
グローバルIPは(IPv4では)ネットワークに対してひとつ割り当てられるもので、LAN内ではプライベートIPを使うということはわかっているつもりです。

たとえば、とあるLAN内にあるサーバーのプライベートIPが192.168.1.50だったとします。
外部から、このLANのサーバーにアクセスする際、グローバルIPだけではそのLANのどの端末か、ということまでわからないと思うのですが、一般的にはどのように指定するのでしょうか?

具体的には、たとえばEXSiのサーバーがネットワークAにあったとして、EXSiのクライアントで、ネットワークBからこのサーバーにアクセスしたいとすると(グローバルIPが変動するとかそういう話は無しとして)どのようにサーバーのアドレスを指定するのでしょうか?
クライアント側にはグローバールIPを入力するだけではLAN内の"どこ"にサーバーがあるかわからないか、思うのですが、どうなのでしょうか?

A 回答 (5件)

>たとえば、とあるLAN内にあるサーバーのプライベートIPが192.168.1.50だったとします。


>外部から、このLANのサーバーにアクセスする際、グローバルIPだけではそのLANのどの端末か、ということまでわからないと思うのですが、一般的にはどのように指定するのでしょうか?

外部(グローバルIPの空間)から、プライベートIPアドレス空間(192.168.1.50)はアクセスできません。

プライベートIPアドレス空間というのは、その名の通りプライベートで、あちこちのプライベートな団体で使用されているからです。

外から内にアクセスする場合は、通常ファイアウォールと呼ばれるアクセス制御装置を通します。だってプライベートIPアドレス空間の機器ですから、外部から頻繁にアクセスされることは想定しません。外部から頻繁にアクセスされる、例えば外向きのDNSサーバや外向きのWebサーバはグローバルIPアドレスが振られているはずです。

ファイアウォールは大筋NATと呼ばれる機能を持ちます。もし、無い場合にはファイアウォールの内側にNAT機能を持つルータを配置します。外側からアクセスされるということで、192.168.1.50には1つグローバルIPが対応付けられています。
外部からそのグローバルIPに対してアクセスすると、ファイアウォールでアクセスの可否を判断し(例えば、特定の発信アドレスからしか認めないとか、特定のプロトコルしか認めないとか)、アクセスが可能となれば、そのパケットの宛先IPアドレスを192.168.1.50に置き換えてサーバに渡します。サーバから外部への通信は発信IPアドレスを192.168.1.50からグローバルIPに置き換えます。このように1対1のアドレス変換をするものを静的NATと呼びます。
    • good
    • 0

>クライアント側にはグローバルIPを入力するだけではLAN内の"どこ"にサーバーがあるかわからないか、思うのですが、どうなのでしょうか?



はい、そのとおりです。

グローバルIP(インターネット上)から、プライベートIP(ルーターを介した、LAN内のどこか)にアクセスするには、
そのルータにて「パケット転送(packet forwarding.)」の設定が必要です。

例えば、123.45.6.7 というグローバルIPを持つルータの配下に、192.168.1.50 のIPを持つWebサーバがあったとします。

その場合例えば、ルーター設定にて、「123.45.6.7 に届いた8000番ポートの通信パケットは、192.168.1.50の80番ポートに送信する」という設定をしておきます。

そうすると、外部からアクセスした「http://123.45.6.7:8000/」は、ルータによって192.168.1.50マシンの80番ポートに送信されるので、LAN上にあるWebサーバが応答することが出来ます。

通常は、役割ごとにサーバが違うため、ポート番号を指定しますが、「0~65535番 すべてのポート番号のパケットを、指定サーバに送る」というような設定も出来ます。
そうすると、そのLAN上のサーバは、あたかもインターネット上の1サーバであるかのようにアクセスできます。
(アタックも受けやすいということになりますが。)

--

以上が実マシンでの設定になりますが、EXSiでも考え方は同じになるはずです。

EXSiホスト機と、内部のゲストPC群は、仮想的なルータで接続されていることになっているはずです。
その、仮想ルータの設定、あるいは、EXSiホストでの設定、と言うことになると思います。
    • good
    • 0

外部からネットワークAにあるEXSiにアクセスする方法ですが、具体的に2通りの環境構築方法があると思います。



ルータ上で特定のグローバルIPをEXSiのプライベートIPにルーティングしアクセスさせる方法が一つ。
この場合、あたかもインターネット上ではそのグローバルIPがそのEXSiサーバーに割り当てられているように振る舞うので、クライアントはそのグローバルIPを使用してアクセスすることになります。
ようはルーター上で「このグローバルIPはLAN上にあるこのプライベートIPのものだよ」って宣言をするわけです。
そうすると、そのグローバルIPへのアクセスを受け受けたルータは、LAN上のそのプライベートIPに対してルーティングしてくれるわけです。

もう一つの方法は、VPN(仮想プライベートネットワーク)を使用する方法です。
この場合は、二つの異なるLANをインターネットを仲介して、あたかもひとつのLAN上にあるように接続させるネットワーク構築方法です。
この場合は、クライアントはEXSiサーバーのプライベートIPを使用してアクセスします。
インターネット上では一旦グローバルIPに変換され、VPN接続先のルータまで通信し、その先は再びプライベートIPに戻して通信することになります。

ご参考まで。
    • good
    • 0

そういう読み替えをするのが「ルータ」です。



TCP/IPの通信は、送信するデータに発信元のアドレスと、
送信先のアドレスを付加して流します。

で、そういうデータがルータに到着すると、その先に信号を
流す時に、それまで流れてきた信号をそっくり「データ」と
読み替えて、更にルータのアドレスを付加してデータを送り
ます。

例えば、PCからデータが流れ出す時はこんな感じです。

[宛先:xxx][発信:192.168.x.x]
(以下データとして [・・・データ・・・] )

これがルータまで来ると

[宛先:xxx][中継:ルータのアドレス]
(以下データ扱いで [発信:192.168.x.x][・・・データ・・・] )

こんな感じになります(実際には他にも付加されるデータが
山ほどあるので、上記はどっちも正確な表現では無いです)

ここで重要なことは、ルータは「発信」「宛先」のセットを
ちゃんと「データベース」として把握してるってことです。
逆に言えば、ルータは「どこ発のデータはどこに送る」と
言うことを全部記憶してるってことです。

(こいつをルーティングテーブルって言います。これをどう
覚えているか、テーブルにデータが無い時どういう動きを
するかは、長くなるので省略します)

あとは、こういう中継をいくつも経てデータがサーバに届き、
このデータを分解してサーバが処理したら、直近の中継
ルータに向けてデータを送りだす、といことになります。


結構ややこしい話になりますので、詳しくはこの辺を、
「気合を入れて」読んでいただければ判るかと思います。
http://www.atmarkit.co.jp/fwin2k/network/baswinl …
    • good
    • 0

対応表を作って設定しておきます

    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!