web-dev-qa-db-ja.com

単一のIPとpfSenseを使用して異なるサイトを公開する-Squid

私はpfSenseにかなり慣れていないので、ご容赦ください。

要約すると、私は持っています:

  • 分割DNSが有効になっているネットワーク。
  • 単一のIIS単一のIPを使用するWebサーバー、ポート80で異なるホストヘッダーバインディングを使用して異なるサイトを実行、すべてのサイトが内部ユーザーに対して正常に機能.
  • pfSense 2.3.4-RELEASE-p1。ネットワークエッジにSquid 0.4.40がインストールされています。
  • 私が持っているものは以下の画像のようになります:

enter image description here

私が達成しようとしていること:

  • 同じ内部URLを使用して、外部ユーザー向けに内部サイトを公開します。
  • 透過プロキシ(内部キャッシュおよびCalmAV用)およびHTTPSは必要ありません。

私はpfSenseがリバースプロキシを使用してこのトリックを実行できることを読み、ここで説明されている手順に従って有効にしました(内部サイトに同じ80ポートを使用することを除いて): https://www.reddit.com/ r/homelab/comments/2vyiiy/til_reverse_proxy_via_squid_in_pfsense /

問題:

  • 外部ユーザーがサイトのURLを入力してEnterキーを押すと、ブラウザは接続を試みますが、数秒後にページを読み込まずに失敗します。奇妙なのは、入力したURLがHTTPからHTTPSにリダイレクトされることです。

トラブルシューティング:

  • 内部通信用の透過HTTPプロキシを無効にしました。
  • Squidログには、URLのリダイレクトに関連するものは何も表示されていません。
  • PfSenseファイアウォールログは、外部ユーザーがHTTPを使用して一度接続でき、その後、すべてのトラフィックがHTTPSを使用して通信されることを示しています

質問:

  • このシナリオはpfSense/Squidでも有効ですか?
  • はいの場合、何が欠けていますか?そうでない場合、代替手段は何ですか?
  • IISで異なるポートを使用してサイトを公開し、Pfsenseでポートリダイレクトを有効にする必要がありますか?(これは私が避けようとしていることです)

追加の手順やトラブルシューティングのアドバイスは非常にありがたいです。

1
Noor Khaldi

解決済み:

私はSquidマニュアルと親密な時間を費やす必要がありました。それがどのように機能するかを本当に理解するために強くお勧めします: http://www.visolve.com/squid/whitepapers/reverseproxy.php

マニュアルを読んだ後、ゼロから始めてpfSenseを完全に再インストールすることにしました。Squidサービスに問題があると思い始めたため、ログには何も表示されていませんでした。

私のシナリオに適用されたヒントとテクニック:

  • DNS分割が正しく行われていることを確認してください。
  • PfSenseが最初に内部DNSを使用していることを確認してください。 ORローカルサイトのpfSenseに静的DNSエントリがあること(hostsファイルまたはDNSフォワーダの静的エントリ)
  • 使用しない場合でも、フォワードプロキシを構成して有効にする必要があります。透過モードを有効にする必要はありません。
  • フォワードプロキシを最初に有効にする必要があります。フォワードを構成せずにリバースプロキシを有効にすると、問題が発生します。
  • スプリットブレインDNSを使用している場合、展開で使用されるホストヘッダーについてpfSenseに通知する必要はありません。実際にホストヘッダーを追加すると、squidサービスが私のシナリオでダウンしました。

これを理解するのに少し時間がかかったので、私のように行き詰まっている他の人を助けることができるように、私の発見に答え/アーカイブした方がいいと思いました、

ステップバイステップガイド:

ステップ1:Services => Squid Proxy Server => Generalに移動して、フォワードプロキシを有効にします。

  • Eanble Squidプロキシ:Check
  • プロキシインターフェイス:[〜#〜] lan [〜#〜]
  • プロキシポート:3128
  • インターフェイスでのユーザーの許可:チェック済み
  • トランスポートHTTPプロキシ:チェックされていません
  • フィルタリング中のSSL Man:チェックされていません

ステップ2:Services => Squid Reverse Proxy => Generalに移動して、リバースプロキシを有効にします。

  • リバースプロキシインターフェイス:[〜#〜] wan [〜#〜]
  • 外部FQDN:私の例では、これはxyd.comである必要があり、トップドメイン名のみ、他の何かを入力するとエラーが発生しますが、これはフィールドに入力できるドメイン名は1つだけです。ドメイン名の1つが一致している限り、別のドメイン名のプロキシもできますが、確認できません。
  • リセットTCP許可されていない要求での接続:チェック済み
  • HTTPリバースプロキシを有効にする:チェック済み
  • リバースHTTPポート:80

上記のすべてを実行して保存し、次に進む前に、Squidサービスが稼働中であることを確認します。Status => Services => Squid Services Status Green、そうでない場合は、それが完了するまで作業を再確認します。

次に、外部DNSと内部DNS間のマッピングを定義します

ステップ3:サービスに移動して内部Webサーバーを定義する=> Squid Reverse Proxy => Webサーバー

  • Addをクリックして、各内部Webサーバー(WebサイトやURLではない)を追加します
  • このピアを有効にする:チェック済み
  • ピアエイリアス:内部Webサーバーの名前。簡単に参照できる名前にすぎません。私の例から:Web/IIS
  • ピアIP:私の例からDNSによって解決された実際の内部IP:10.0.0.2
  • ピアポート:内部サイトが使用しているポート、私の例:80
  • ピアプロトコル:[〜#〜] http [〜#〜]

これを完了すると、pfSenseは、今適用した設定を持つ内部Webサーバーがあることを認識しました。次に、マッピングを定義することによって、このWebサーバーが何を持っているかを伝える必要があります。

ステップ4:Services => Squid Reverse Proxy => Mappingsに移動して内部URLを定義します

  • このURIを有効にする:チェック済み
  • グループ名:このグループで使用されているURLまたはホストヘッダーをすばやく識別できる任意の名前。「Web/IIS Group Redirection Group "[〜#〜] edit [〜#〜]:ここで長い名前を書き込むと、Squidサービスが失敗し、スペースのない短い名前のみを書き込みます。
  • ピア:この例から、このグループで識別されたURLに応答できるサーバーを選択する必要があります:前のステップで識別されたWebサーバー:Web/IIS
  • URI設定:pfSenseでこのグループに一致させるホストヘッダー、ドメイン名、またはURLに書き込む必要があります。ここに大きな注意があります:透過モードENABLED、私の例では、透過モードはオフでしたホストヘッダー、ドメイン名、またはURLを記述する必要はありませんでした

Squidサービスが実行されていることを確認した後、外部ユーザーとta-daからテストを行いました。出来た :)

1
Noor Khaldi