web-dev-qa-db-ja.com

VPNを介してcURLによって発行されたHTTPリクエストを送信するにはどうすればよいですか?

(おそらく)noobの質問で失礼しますが、私はLinuxネットワーキングに非常に慣れていません。すでに数日かけてインターネットで質問の答えを探していましたが、見つからなかったので、熟練した専門家がたくさん訪れているので、ここに質問を投稿することにしました。

とにかく、実際の質問に移ります。2台のサーバーを利用できます。それらをServer-AおよびServer-Bと呼びましょう。 OpenSWANを使用してサーバーAとサーバーBの間にVPNトンネルを確立しました。ソースIPを割り当てました:サーバーAには192.168.2.1、サーバーBには172.16.2.1。サーバーAから172.16.2.1、サーバーBから192.168.2.1に正常にpingできるので、VPNを適切に設定し、両方のサーバーが通信できると想定しています。

さて、サーバーAで、これを実行できるようにしたいと思います。

このようにlibcurlを介してHTTPリクエストを発行すると:

curl http://checkip.dyndns.com/

Server-AのパブリックIPアドレスを介してリクエストが送信されるのを見たいのですが。

しかし、私が発行するとき:

curl --interface 192.168.2.1 same_url_as_in_the_above_request

Server-Bのインターネットアクセスを使用するために、リクエストがVPNを通過するようにしたいので、checkip応答にServer-BのパブリックIPアドレスが表示されることを期待します。

現在、このようなリクエストを発行すると、次のエラーが表示されます。

curl(7):ホストに接続できませんでした

これを達成するために私は何ができますか、それとも私は完全に間違った道を進んでいますか?私がしたいのは、特定のWebサイトにのみアクセスするため、または何らかの理由でServer-AのISPがダウンしている場合に、Server-AからのServer-Bのインターネットアクセスを使用することだけです。自動化する必要はありません。必要なときにいつでも手動で実行できるようにしたいだけです。

ルーティングまたはNATを実行する必要があると思いますが、正確に何をすべきかわかりません。過去2日間に多くの資料を読みましたが、何を理解するのは難しいです。正確なiptablesやrouteコマンドは次のようになります。仮にVPNを設定することが正しい解決策です。

ここにいる誰かが私にアドバイスをくれることを本当に望んでいます、そして私がこのような初心者の質問であなたを笑わせたならば本当に申し訳ありません。

宜しくお願いします!

2
maringtr

特定のウェブサイトのみにアクセスするため

これを行う最も簡単な方法は、HTTPプロキシを使用することです。そして、PACファイルを介してルーティングの選択肢をビロウザーにプッシュします。

またはサーバーAのISPが何らかの理由でダウンしている場合

これには、ルーティングを使用する(iptablesまたはiproute2経由の)非常に異なるソリューションが必要です。

VPNは実際には必須-ではありませんが、リモートHTTPプロキシを実行し、それを見つけることができるすべての侵入者詐欺師に使用させたくない場合(*)、[〜# 〜] must [〜#〜]クライアントのサービスへのアクセスを制限する方法が必要です。VPNはそれを実現するための良い方法です。

*)私が管理しているボックスで、開いているSMTPリレーよりも開いているWebプロキシを見つけようとする試みが増えています。

0
symcbean