外部IPへのリクエストをローカルホストにリダイレクト(サーバーをエミュレート)


11

サーバー(ハードコードされたIP)を呼び出し、開始する前に答えを期待するアプリケーション(ソースコードなし)を得ました(一種のログイン)。

サーバーが半分の時間ダウンしているため、公式サーバーの動作をエミュレートするダミーサーバーを作成したいと思います。

私の問題:

トラフィックをローカルマシンにリダイレクトするにはどうすればよいですか?

すべての要求をIP wxyzに送信して、ローカルホスト(ダミーサーバーが実行されている)に再ルーティングするようにします。

より詳しい情報:

  • 私のダミーサーバーはapache / phpソリューションです。
  • 16進エディターを使用して、アプリケーションのハードコードされたIPを編集しようとしましたが、アプリケーションを起動するとチェックサムが失敗します。
  • IPがアプリケーションでハードコーディングされているため、hostsファイルを使用できません。
  • win xpを実行しています。

関連: Windows Server 2008でトラフィックを1つのIPから別のIPにリダイレクトする方法

回答:


7

これは完全なハックになりますが、問題のサーバーのIPをローカルインターフェースの追加IPとして割り当てることもできます。手順はこちら


これはすごい!しかし、私は今それを試すことができません(私のインターネットはダウンしています、私は3Gでテザリングしています..)。来週の終わりにフィードバックをお送りします。
ロダ

1
これは本当にすごい!素晴らしい、非常に簡単なソリューション。ありがとう!
ロダ

甘い、それを聞いてうれしい:)
ロバートスウィッシャー

1
精度:NICに2sd IPを追加すると、副作用が発生しました。同じ外部サブレッド内のすべてのIPは、NICにリダイレクトされます。つまり、IP 50.51.51.51を追加すると、IP 50.51.51.52に到達できなくなります。これは、ルート50.51.51.0およびルート50.255.255.255が原因です。回避策:ルート50.51.51.52->通常のゲートウェイを追加します。
ロダ

リンクが壊れています
-danilo

2

さて、あなたは次を試すことができます:

そのIPアドレスに特定のルートを設定します。これは、次のようにダミーサーバーをゲートウェイとして使用します。

route add -host wxyz / 32 gw dummy-server-ip

そのためには、ネットワークのメインルーターにアクセスするか、要求を送信しているマシンでアクセスする必要があります。これにより、wxyz IPアドレスを持つTCPパケットがダミーサーバーのMACアドレスに効率的に送信されます。そのため、ダミーサーバーがそれらをどう処理するかを確認する必要があります。

次に、wxyz IPアドレスをセカンダリサーバーとしてダミーサーバーに追加します。
最後に、ダミーサーバーのapache構成を更新して、wxyzアドレスもリッスンするようにし、ダミーサーバーのvhostがIPアドレスとドメイン名の両方の着信要求を受け入れるようにします。

これは、要求元のマシンとダミーサーバーの間に他のルーターがない場合にのみ機能することに注意してください。また、ファイアウォールが関与している場合は、更新も必要です。


答えてくれてありがとう、それはまさに私がやりたいことのようだ。しかし、私はそれを実装するのに問題がありました。ルーターに触れないことも好みます。これは、このソリューションが私のマシン専用であるべきだからです。あなたが私に例として挙げたコマンドは、私のwin XPでは動作しません。また、成功せずに「route add wxyz 127.0.0.1」を試しました。アプリケーションとダミーサーバーの間にファイアウォール/ルーターがありません。両方とも同じマシンで実行されます。(しかし、私はソフトウェアファイアウォール:kasperskyを持っています)このルートを設定する方法についての助けを本当に感謝します。
ロダ

1
Windowsで使用可能なrouteコマンドがあります。route ADD wxyz MASK 255.255.255.255 127.0.0.1これにより、ルートが自分のマシンに戻ります。wxyzアドレスでの着信要求に対してファイアウォールを開く必要がある場合があります。
wolfgangsz

このコマンドを使用してルートを追加しようとしましたが、成功しませんでした。理由がわかりません。
ロダ

「ルートは62.1.1.10マスク255.255.255.255 127.0.0.1を追加します」エラーメッセージは言う:「ルートの追加エラー:間違ったパラメーター」(ESから翻訳される)
ロダ

うーん、127.0.0.1をそのインターフェイスの実際のLAN IPアドレスに置き換える必要があるかもしれません。私はこれまでこのようなことを試したことがないので、少し推測が必要です。
wolfgangsz

1

おそらくiptablesと一緒に何かを叩くことができます。これは私がかつて使用したものの、もはやあなたに足掛かりを与えるためにやっていません:

*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
-A PREROUTING -d 172.16.25.202 -i eth0 -p tcp -m tcp --dport 25 -j DNAT --to 172.16.27.59:8025
-A POSTROUTING -o eth0 -j MASQUERADE 
COMMIT

NB:私はずっと前にこれをしました、そこに間違いがあるかもしれません

問題と思われる唯一のことは、それがインターフェイスに固有であることです。eth0はインバウンド部分専用であるため、ターゲットとしてまだloインターフェース(127.0.0.1)でipを使用すると動作する可能性があります...


1
それは素晴らしい答えでしょう...しかし、彼はWindows XPを実行しています。
ジェイソンバーグ

ドッ!「apache / php」を見たので読み終わったと思います。あなたがそれを指摘した後でも、私はそれを見る前に3回スキャンしました。まあ、私はそれを残すでしょう、多分それはいつかどこかで誰かを助けるでしょう。
jj33

Vagrant、busybox、iptablesを使用して、選択的なVPNを作成することを考えています。少数の既知のIPアドレスのみがVPNに属しているため、他の場所へのトラフィックはVPNを通過しないことをシステムに伝えたいと考えています。私の考えは、非常に軽量なLinuxをbusyboxとして使用してVPNに接続し、iptablesまたはhostsファイルなどを使用して、既知のIPアドレスの要求をゲストVagrant VMにリダイレクトしてVPNを処理することです。このiptablesルールは私にいくらかの助けを与えるかもしれません:)
ブルーノフィンガー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.