web-dev-qa-db-ja.com

IPアドレスを別のIPアドレスにリダイレクト/ルーティングする方法は?

IPアドレスを別のIPアドレスにリダイレクト/ルーティングする方法は?

例:10.10.10.10-> 20.20.20.20で、ブラウザに10.10.10.10と入力すると、20.20.20.20に接続します。

10.10.10.10と20.20.20.20が外部IPアドレスであると仮定します。

9
yarek

はじめに

これを実装する前に、ルーティングが実際に何をしているのかを知ることは非常に役に立ちます。

ルーティングによってネットワークアドレスが変更されることはありません。 (まあ、NATはそうです。そしてNATはルーティングが適用されている間に実行できます。しかし、何かをする方法を学びたいのであれば、物事をシンプルに保つためです。シンプル/従来のルーティングは、別のプロセスとして考えるのが最も良い方法です。

アドレスなどの変更を検討する前に、実際にどのように機能するかを完全に理解していることを確認しましょう。これにより、一般的なネットワーク設計ルールに違反するようなことは行わないようにします(ハードウェアの大部分によって拒否される可能性があります)。および通常これらのルールを実装するソフトウェア)。これが学べば、少なくとも私たちがクレイジーなことをしようとすると、私たちがやろうとしていることがクレイジーであることを理解し、私たちが直面しようとしている障害の種類に精神的に備えるでしょう。これは、これらの詳細を知らないよりもはるかに優れています。

ルーティングについて

ルーティングは通常、トラフィックが1つのネットワーク(「サブネットワーク」または「サブネット」と呼ばれることが多い)から別のネットワークに確実に到達するように設計されています。

コンピュータがネットワークトラフィックを送信する場合、ネットワークトラフィックの「フレーム」を送信している可能性があります。これらのフレームは「レイヤー2」トラフィックと呼ばれます。 (レイヤー1は、ケーブルやアンテナ、電波などの物理接続に焦点を合わせています。)フレームはMAC-48アドレス(EIU-48アドレスとも呼ばれ、より一般的には単に「MACアドレス」と呼ばれます)に配信されます。フレームが配信される最も一般的な方法は、イーサネット(UTP銅ケーブル経由)またはWi-Fiを使用することです。

フレームにはパケットが含まれる傾向があります。最近の最も一般的なタイプのパケットはIPv6とIPv4です。 (おそらくその順序ではありません...)これらのパケットはレイヤー3トラフィックと見なされます。パケットには、TCPセグメントまたはUDPデータグラムが含まれる傾向があります。これは、レイヤー4トラフィックです。「レイヤー」という用語は、「OSIモデル」で説明されているものと一貫して使用しています。多くのプロフェッショナルレベルのネットワーキングクラス/トレーニングで教えを受けます。

今、あなたが192.168.1.103にいて、4.2.2.2と通信したいとしましょう。これはUDPポート53トラフィック(DNS)である可能性がありますが、代わりにICMP(ping)を例として使用します。

通常、コンピューターは192.168.1.103と、プレフィックスの長さ(IPv4/24など)で指定されるネットワークのサイズを比較します。プレフィックス長(特にIPv6/64)は、IPv6で最も一般的です。 IPv4の場合、ネットワークのサイズはサブネットマスクとして書き出されることがよくあります。一般的なサブネットマスクのバイナリ値はすべて1で始まり、すべてのゼロはサブネットマスクの終わりに向かっているため、255.255.255.0のようなサブネットマスクで終わることがよくあります。 IPv4/24および255.255.255.0のこれらの例を使用すると、ネットワークのサイズは256アドレスです。したがって、コンピュータは、可能なすべてのインターネットアドレスがそのサイズの均等なサイズのグループに分割されている場合、256アドレスのグループの先頭と末尾にあるアドレスを特定します。したがって、すべての可能なインターネットアドレスが256アドレスのグループに分割されている場合、192.168.1.103は192.168.1.0および192.168.1.255(両端を含む)からなるグループに含まれます。

目的の宛先は4.2.2.2であり、4.2.2.2は192.168.1.0と192.168.1.255の間にないため、トラフィックはフレームを使用して4.2.2.2のMACアドレスに送信されるだけではありません。 (IPv4のアドレス解決プロトコル(ARP)または近隣探索プロトコル(IPv6を使用していた場合)を使用してMACアドレスを検出することはほとんどありません。これは、MACアドレスが別のネットワーク上にあるためです。これは、ARPに影響する制限と関係がありますとIPv6 NDPです。)フレームをそこに送信できない場合、4.2.2.2とどのように通信できますか?

ルーティングによって。 4.2.2.2へのトラフィックを取得するのに役立つゲートウェイを見つけることができます。最も一般的な消費者向け機器の場合、人々は2種類のネットワークに慣れていることがよくあります。コンピューターが属するネットワークと世界中のインターネットです。 (企業には複数のサイトが存在し、他のネットワークが存在する場合があります。)世界中のどこ(インターネット全体)へのアドレスを処理するためのゲートウェイは、「最後の手段のゲートウェイ」と呼ばれることもあり、「デフォルトゲートウェイ"。これは、発生するより具体的なゲートウェイがない場合に、任意のアドレスに使用されるゲートウェイです。

したがって、コンピューターはデフォルトゲートウェイのIPv4 ARP要求を送信します。これはネットワークに存在する必要があります。ごく一般的には、これがネットワーク上の最初の「使用可能な」アドレスになります。 (いくつかの非常に古いブロードキャスト標準のため、そしておそらくいくつかの一般的な混乱のために、多くの人々はサブネットの最初のアドレスを使用できないものとして扱います。これにはいくつかのソフトウェアとハ​​ードウェアの作成者が含まれるため、それらの人々の決定はしばしば残りに影響しますしたがって、この例では192.168.1.0は使用できない場合があります。)したがって、192.168.1.1は最初に使用可能なアドレスであり、デフォルトゲートウェイである可能性があります。その例を使用します。

コンピューターがデフォルトゲートウェイのMACアドレスを見つけたら、コンピューターは4.2.2.2用にアドレス指定されたIPパケットを使用してICMPメッセージを送信し、そのIPパケットはMACアドレスに送信されるフレームの一部ですゲートウェイ。

そのため、ICMPメッセージを含むネットワークトラフィックは、実際には192.168.1.1のIPアドレスに送信されません。トラフィックは、192.168.1.1に関連するMACアドレスに送信されます。

次に、トラフィックがMACアドレスに送信されるため、ローカルルーターがトラフィックに注意を払います。これはルーターであるため、トラフィックをルーティングすることで連携します。したがって、ルーターは、同じネットワーク上にあることにより、4.2.2.2と直接通信する方法を知っているかどうかを判断します。おそらく、ルータは4.2.2.2のMACアドレスを取得する方法を知りません。ルーターがトラフィックをインターネットサービスプロバイダー(ISP)にある別のルーターのMACアドレスに「ルーティング」するため、このプロセスが繰り返されます。

これをすべて説明するポイントは、コンピュータで10.10.10.10を20.20.20.20に変換できたとしても、受信側の機器が10.10.10.10のトラフィックを期待していない場合は役に立たない可能性があるということです。 20.20.20.20の受信デバイスはトラフィックを受信する可能性がありますが、トラフィックが10.10.10.10を対象としている場合は無視する可能性があります。

私の実際の例では、IPトラフィックがデフォルトゲートウェイに関連するMACアドレスに送信されたとしても、トラフィックのルーティングプロセス全体を通じて、IPパケットの宛先4.2.2.2が変更されないことに注意してください。

したがって、宛先IPアドレスを変更しようとしている場合、それは単純なルーティングではありません。それがNATです。 NATはネットワークアドレス変換の略です。したがって、ネットワークトラフィックに特定のネットワークアドレス(10.10.10.10)が含まれる場合、別のアドレス(20.20.20.20)に変換されます。次を参照してください。- WindowsのNAT

TCPの制限

多くのインターネットトラフィックがTCPを使用していることに注意してください。 TCP接続を20.20.20.20に接続しようとすると、TCPの双方向通信要件が原因で問題が発生する可能性があります。20.20.20.20にトラフィックが送信され、その後20.20 TCPは、TCPの開始時に「TCPハンドシェイク」を完了するために双方向通信を必要とするため、.20.20は正常に応答できる必要があります。 (「ペイロード」)データが送信される前に接続します。ソフトウェアプログラムが10.10.10.10にトラフィックを送信していると判断した場合、ソフトウェアプログラムは20.20.20.20からの応答トラフィックを受け入れません。発信トラフィックでは、NATの効果を逆にすることができる必要があるかもしれません。TCPはHTTP(ウェブ)などの非常に一般的です)およびSMTP(電子メール)。主な例外は、非常に小さいトラフィック(UDPを使用する従来のDNS。別の例はICMPです)または遅延に非常に敏感なトラフィック(VOIP、ニュース(株価、情報onは、再更新された新しい情報よりも役に立たない)、リアルタイムゲーム)。使用するプロトコルがTCPのような低レベルのプロトコルに依存しているかどうかを知ることは非常に役立ちます。ネットワークスニッフィング(tcpdumpやWiresharkなど)も、機能しない理由を理解するのに非常に役立ちます。

NATの可用性

通常、エンドユーザーマシンではNAT=を気にしません。通常、これはルーターによって行われます。Windowsの一部のバージョンでは、ルーターであるという機能をサポートしています。つまり、コンピュータは他のルーターがトラフィックを処理するのと同様にネットワークトラフィックを処理します。

この質問には「Windows」タグが付いているので、Microsoft Windowsに組み込まれたソフトウェアを使用してこれを実行したいと思うのですが、NATは、最新のバージョンのWindowsでは、この機能が「ルーティングとリモートアクセス」(「RRAS」と略される)と呼ばれるソフトウェアに組み込まれています。

私の知る限り、RRASはMicrosoft Windowsの「ホーム」バージョンではサポートされていないことがよくあります。多くの場合、Windows Serverのリリース(Windows Server 2008 R2など)でサポートされています。 「Windows 7 Professional」のような「Professional」エンドユーザーリリースでサポートされていると思います。 「Windows 7 Home」などのホームリリースでは、この機能が完全に欠落しているのではないかと思います。

Windowsのバージョンで機能が利用できる可能性がある場合でも、おそらくデフォルトで無効になっているため、アンインストールされることさえあります。したがって、Windowsの機能をインストールできる場所に移動する必要がある場合があります(「サーバーマネージャー」、または名前の一部に「プログラム」という単語が含まれているコントロールパネルのアプレットなど)。そのアプレットの左側のフレームには、 「機能」を追加/インストール/有効化するためのハイパーリンクがあります)。

これで、理論的には、トラフィックをNATして別のIPアドレスとして送信するプロキシにトラフィックをルーティングするようにコンピュータに指示できる可能性があります。だからあなたが求めていることが可能かもしれません。

アプローチ

考えられる代替策の1つは、IPトラフィックではなくDNSの操作を検討することです。たとえば、おそらくCNAMESを使用して(関連するドメイン名のDNSレコードに影響を与える可能性がある場合)、またはホストファイルを使用して、DNS名を別のIPアドレスにポイントします。多くの場合、実装と反転がはるかに簡単です(変更を元に戻すことにした場合)。

これは、実際に達成しようとしていることに対して最善のアプローチとはならない可能性が非常に高いと思われます。ルールに従って、通常のことを行うことは非常に難しい場合があることを理解してください。物事の独自の方法を発明しようとすることは、はるかに困難です。標準的な方法を使用したネットワークの設計を成功させる前に、ネットワークを設計する際に独創的になりすぎて、標準的な方法の制限を知っている(そしておそらく、これらの制限が存在する理由も知っている)こと、そしてあなたが本当にやり直しの方が良い(そしてなぜ良いのか)。そうしないと、多くの問題が発生する可能性があります。 (私はいくつかの経験から話すことができます。結局、私は物事を最初に簡単な方法で試すことを学ぶだけでした。)

質問は XY問題 の典型的なケースのように見えます。要求したこと以外のことを達成しようとしている場合は、実際に達成しようとしていることを尋ねる別の質問を作成してみてください。

15
TOOGAM