web-dev-qa-db-ja.com

トラフィックは内部IPと外部IPの間でどのように分離されますか?

ホームネットワークから192.168.0.Xにpingを実行すると、外部WAN IPではなく、ネットワーク内でそのアドレスを検索しようとします。ただし、74.125.224.163にpingを実行できます。 pinggoogle.com。

内部ネットワークを74.125.224.Xに設定して、pingを実行しようとすると、ネットワーク内でのみ表示されますが、Googleのサーバーと通信できると思います(変更は試みていません)。同じIPアドレス。

これはどのレベルで分離されていますか?パケットは、IPアドレスの宛先がLANではなくWANに送信されることをどのように認識しますか?

3
Zombian

パケットは何も知りません–宛先アドレスのみを伝送します。移動するパスは、コンピューター、ルーター、およびインターネット上の他のルーターに保持されているルーティングテーブルによって決定されます。

コンピュータからパケットが送信されたとき...

  1. OSはまず、宛先アドレスがコンピューターのネットワークインターフェイスに割り当てられているかどうかを確認します。はいの場合、OSはそれ自体を消費します–パケットはコンピュータの外部には送信されません。

  2. それ以外の場合は、宛先アドレスに一致するすべてのルートをルーティングテーブルで検索します。いくつかあるかもしれません–OSは最も長い一致する「プレフィックス」を持つものを選びます。

  3. 宛先アドレスに一致するルートがない場合、パケットはドロップされます。

たとえば、自分の住所が192.168.1.1 ..の場合.

  • コンピュータのルーティングテーブルは次のようになります。

    • 10.11.12.0/24には、ppp0インターフェースを介して直接アクセスできます
    • 192.168.1.0/24には、eth0インターフェースから直接アクセスできます。
    • 10.42.0.0/16には、10.11.12.50を経由してアクセスできます。
    • 0.0.0.0/0には、192.168.1.254を経由してアクセスできます。

    /の後の数字は、比較するビット数を示します。 CIDR表記 を参照してください。例えば。 /16の場合、両方のアドレスの最初の16ビット(左端のビットから開始)は等しくなければなりません。 /0の場合、何も比較されないため、ルートはどのアドレスとも一致します。これが「デフォルトルート」です。

    実際のルーティングテーブルにもメトリックがあります。たとえば、ラップトップをイーサネットとWiFiの両方を介してLANに接続した場合、同じネットワークへの2つの同一ルートがありますが、イーサネットルートはWiFiよりも高速であるため、メトリックが低くなります。 。簡単にするために、ここではメトリックを省略しています。

  • 192.168.1.5にpingを実行すると、OSは次のようになります。

    1. 192.168.1.5へのルートを探す
    2. ルート192.168.1.0/24および0.0.0.0/0を検索します
    3. ルート192.168.1.0/24を選択します。プレフィックスが長いため(24> 0)
    4. ルートがeth0インターフェースを指していることを確認してください
    5. eth0ケーブルを介してパケットを送信します

    パケットはイーサネット(またはWiFi、または...)を経由して宛先コンピューターに直接送信されます。

  • 74.125.224.163にpingを実行すると、OSは次のようになります。

    1. 74.125.224.163へのルートを探す
    2. ルートを見つける0.0.0.0/0
    3. ルートにゲートウェイ192.168.1.254があることを確認してください
    4. 192.168.1.254へのルートを探します。これも直接到達可能です(2番目のゲートウェイを経由せずに)
    5. ルートを見つける192.168.1.0/24
    6. ルートがeth0インターフェースを指していることを確認してください
    7. eth0ケーブルを介してパケットを送信します

    パケットはイーサネット(またはWiFi、または...)を経由して192.168.1.254(ホームルーター)に送られ、次に独自のルーティングテーブルを使用して同じプロセスが繰り返され、パケットがネクストホップ(ISPのISP)に送信されます。ルーター)。

(したがって、Googleと同じネットワークを使用している場合、自分のネットワークへのルートが常に最初に選択されるため、Googleに到達できなくなります。)

11
user1686

いいえ、コンピュータは最初にホームネットワーク内でそのアドレスを検索しようとはしません。ルーティングテーブルを調べます。

その表には、次のルールが含まれています

  1. IPは明示的にIPと一致しますか(route add -netで追加)。次に、このインターフェースを介して送信します
  2. IPはリストされているネットワーク範囲に属しており、特定のインターフェイスを介して送信しますか。
  3. すべてが失敗した場合は、指定されたインターフェースを介してデフォルトゲートウェイに送信します。

この表には、特定の「内部」ネットワークと「外部」ネットワークはありません。

ただし、単一のNICmスイッチとルーターを使用した一般的なセットアップでは、通常、次のようにこれらのテーブルに入力します。

  1. 自分用(localhost 127.x範囲または独自のIP)の場合は、ループバックデバイスを介して「送信」します。
  2. ローカルネットワーク用の場合(IPアドレスとネットワークマスクの両方を使用してNICを設定しているのでわかります))、ローカルイーサネット経由で送信します。
  3. それが一致しない場合は、デフォルトゲートウェイ(ローカルネットワーク上のルーター)に送信します。

コンピュータは、パケットが宛先にどのように到着するかを気にしません。知っていることはすべて、ローカルで何をして残りを委任するかだけです。

これはあなたの質問によく似ているかもしれませんが、旅行の仕方を知っているのはパケットではありません。パケットで何をすべきかを決定するのは、ローカルルーティングテーブルを使用するローカルコンピュータです。


ここで、内部ネットワークを74.125.224.Xに設定し、(更新されたルーティングテーブルを使用して)pingを実行しようとすると、ネットワークスタックは自分のIPをpingしようとしていることを認識します。自分のコンピューターからpingに対する応答が得られます。あなたはグーグルではないので、あなたは忘れることができますグーグルで回る検索エンジンを介した答え。それは実際のグーグルコンピュータに到達することは決してないだろう。

彼らへのパケットがあなたのコンピュータを離れることは決してないので、彼らとの通信は不可能でしょう。代わりに、ループバックを介して直接ルーティングされます。

ループバックを無効にするか、コンピューターにこれらのパケットをデフォルトルーターとインターネットにプッシュするように明示的に指示した場合、回答は得られません。他のすべてのコンピュータは、パッケージをGoogleのrealコンピュータに転送し、ネットワークには転送しません。

2
Hennes

お使いのコンピュータには、 サブネットマスク とIPアドレスがあります。ネットワークソフトウェアは、サブネットマスクを使用して、IPアドレスがローカルサブネット上にある(したがって直接接続できる)か、別のネットワーク上にある(したがってデフォルトゲートウェイ経由で接続する必要がある)かを判断します。

サブネットマスクで定義されているように、Googleサーバーがコンピューターと同じサブネット内にあるようにIPアドレスを変更した場合、しませんそのGoogleサーバーと通信できるようになります。

1
Mike Scott