web-dev-qa-db-ja.com

同じプライベートIPアドレスで異なるLAN上の2台のコンピューターを接続する方法

異なる都市に2つのデバイスがあり、どちらも同じプライベートIPアドレスを持っています。それらを通信させるにはどうすればよいですか(SSH、RDP、FTP、Telnetなど)。詳しく説明してください。

ありがとうございました

1
Nitin Kumar

あなたは2つの標準的な住宅用または商用インターネット接続について話していると思います(専用回線やVPNなどでリンクされた2つのサイトではありません)。

以下のネットワークの例では、インターネットを介して接続された2つの建物と1つのサーバー(世界中のどこにでも)があります。 _R1_と_R2_の2つのルーターがあり、それぞれに異なるpublic IPアドレス(または "external "IPアドレス)。

建物内では、ルーターとデバイスはすべて共通のIPアドレスを共有しています-ルーター(_R1_および_R2_)はprivateを使用します= _192.168.0.1_のIP、およびデバイス(DAおよびDB)はprivate _192.168.0.10_のIPを使用します。

建物の外部では、ルーターのIPアドレスは異なりますpublic IPアドレス-_203.0.113.5_と_203.0.113.219_。サーバーはpublic IPアドレス_203.0.113.42_でアクセスできます。

example network


ここでは、2種類のIPアドレスに重要な違いがあります。詳細については、wikiページ「 予約済みIPアドレス "」を参照してください。

  • パブリックネットワーク-これらはインターネットから直接アクセスできます
    • 注:ここでは、実際のパブリックアドレスの代わりに、ドキュメント用に予約されているネットワークアドレスのセットを実際に使用しました
  • プライベートネットワーク-これらはネットワーク内での使用のみを目的としています

DAがインターネット上のサーバーまたはホスト(たとえば、_203.0.113.42_)にアクセスするには、ルーターからの支援を受ける必要があります-_203.0.113.42_はローカルネットワークからアクセスできないためです。そのため、構成されたルーター(_R1_)にパケットを送信し、ルーターはパケットをインターネットに転送します。

この場合、ルーターはパケットをわずかに書き換え、「送信元アドレス」をDAのアドレスではなく_R1_のパブリックアドレス(_203.0.113.5_)としてマークします。 (_192.168.0.10_)。その後、パケットが_R1_に返されると、接続テーブルがチェックされ、宛先がDAになるようにパケットが書き直され、ローカルネットワークに転送されます。

これは ネットワークアドレス変換 (NAT)と呼ばれ、ルーター自身のアドレスを使用するための発信パケットの書き換えは「マスカレード」と呼ばれます-すなわち:すべてのアウトバウンドパケットは、背後にあるデバイスではなく、ルーターから発信されたように見えます。

これにより、プライベートネットワーク上のデバイス(例:DAおよびDB)とインターネット上のパブリックサーバー間の通信が可能になります。


ビルAのネットワーク内で提供されるいくつかのサービスを提示するには、_R1_を_203.0.113.42_...のサーバーのように見せかける必要があります。これを行うには、 ポート転送 を導入します。

これは、ポートで着信接続要求を受け入れるように_R1_を構成できるようにする手法です(たとえば、_22_ for [〜#〜] ssh [〜#〜] ) 、サービスを提供しているプラ​​イベートネットワーク内の別のホストに転送します。

この場合、DAにはポート_22_で実行されているSSHサーバーがあるため、外部インターフェイス(つまり、_R1_)のポート22を内部インターフェイスのサーバーに転送するように_203.0.113.5:22_を構成します。 (例:_192.168.0.10:22_)。

ポート転送を構成したので、DBは_R1_のパブリックアドレス...(_203.0.113.5_、ポート_22_)に接続することでDAのSSHサーバーにアクセスできます。 注:DBDAのプライベートIPアドレスを使用しないか、知る必要はありません。その逆も同様です。

ネットワークアドレス変換が自動的に処理され、チェーン全体は次のようになります。

  • DBはパケットを_R2_に送信します-ソース:_192.168.0.10_、宛先:_203.0.113.5_
  • _R2_はパケットを書き換えます-ソース:_203.0.113.219_、宛先:_203.0.113.5_
    • _R2_はインターネット経由でパケットを送信し、_R1_はそれを受信します
  • _R1_はパケットを書き換えます-ソース:_203.0.113.219_、宛先:_192.168.0.10_
    • _R1_はローカルネットワーク経由でパケットを送信し、DAはそれを受信します

リターンパス/応答は逆です。

  • DAはパケットを_R1_に送信します-ソース:_192.168.0.10_、宛先:_203.0.113.219_
  • _R1_はパケットを書き換えます-送信元_203.0.113.5_、宛先:_203.0.113.219_
    • _R1_はインターネット経由でパケットを送信し、_R2_はそれを受信します
  • _R2_はパケットを書き換えます-ソース:_203.0.113.5_、宛先:_192.168.0.10_
    • _R2_はローカルネットワーク経由でパケットを送信し、DBはそれを受信します

ご覧のとおり、衝突するプライベートアドレスはまったく問題ではありません。_192.168.0.10_が送信元と宛先の両方と見なされる状況、または2つのインターフェイスを介して到達できる状況に単一のデバイスが存在することはありません。これが本当なら、リンクは明らかに機能しません。


いくつかの注意:

  • ルーターの構成インターフェイスは大きく異なるため、ポートフォワーディングの設定を順を追って説明することは、使用しているルーターを知らなくても実行できることではありません。
  • このようにポートフォワーディングを設定すると、インターネット全体からサービスにアクセスできるようになります(ファイアウォールルールも構成していない場合)。
  • この方法で暗号化されていないサービス(Telnet/FTPなど)を設定しないことを強くお勧めします。 SSH/SFTPを優先します。
  • あなた必須サービスが適切に保護されていることを確認します-例:認証、レート制限など...
2
Attie