質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

90.23%

少し変わった構成でCentOS6.x + Squid でプロキシサーバを構築したい。

解決済

回答 3

投稿 編集

  • 評価
  • クリップ 0
  • VIEW 1,478

HiroYoshiy

score 5

前提・実現したいこと

CentOS6.x + Squid でプロキシサーバを作成しております。

GlobalIPを2つ利用します。
ローカルネットワーク

10.0.XX.0/04 GW:10.0.XX.254

です。こちらを利用してプロキシサーバとUTMの組み合わせて、外部から利用可能なセキュアなゲートウェイを構築しようとしております。

XXX.XXX.XXX.A
┌───┐
│ UTM  │
└───┘
10.0.XX.254
    ↑
    ↓
10.0.XX.200
┌────┐
│ Proxy  │
└────┘
XXX.XXX.XXX.B


上記のような構成です。

実現したいこと

許可されたクライアントからのプロキシとして、XXX.XXX.XXX.Bを利用させ、インターネットへの通信は、XXX.XXX.XXX.Aを利用したい。

発生している問題・エラーメッセージ

XXX.XXX.XXX.Bからプロキシサーバを利用すると、XXX.XXX.XXX.Bとして、インターネットに出て行ってしまう。

試したこと

プロキシサーバ上で、ip ruleの設定を利用してマルチホーミングの設定をしたが、XXX.XXX.XXX.Bからプロキシサーバを利用すると、XXX.XXX.XXX.Bとして、インターネットに出て行ってしまう。

NATの設定でいけるのでは?と想像しましたが、XXX.XXX.XXX.Bにアクセスのあるクライアントが、別のGlobalIPからのアクセスとなるため、うまくいかない。

Squidの設定で、外向きに利用するネットワークを設定できないか?と考えましたが不明。

補足情報

CentOS release 6.4 (Final)
Squid Cache: Version 3.1.23

このような構成をすることは可能でしょうか? 
可能でしたら、どのような設定を追加すればよいのでしょうか?
ご存じの方がおられましたらご教授ください。

 2006-08-04追記

構成図に書いてみました。
https://dl.dropboxusercontent.com/u/91408519/utm_and_proxy.png

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 3

checkベストアンサー

+1

UTM に HTTPプロキシ機能があるのなら、squid から cache_peer で親プロキシに指定すればいいと思います。

そうでなければ、既に試されているようですが、デフォルトゲートウェイを 10.0.xx.254 とし、XXX.XXX.XXX.B 側 I/F から入ったパケットを同じ I/F から出て行くようにソースルーティングを設定します。

(例)
eth0 : XXX.XXX.XXX.B/32 側の I/F
eth1 : 10.0.xx.200/24 側の I/F

# ip route add default via 10.0.xx.254 dev eth1  (設定済み)
# ip rule add from XXX.XXX.XXX.B table 1  (設定済み)
# ip route add default dev eth0 table 1  (★追加設定★)

 (2016/08/04 22:09) 追記: XXX.XXX.XXX.B/24 の場合

(例)
eth0 : XXX.XXX.XXX.B/24 側の I/F
eth1 : 10.0.xx.200/24 側の I/F

# ip route add default via 10.0.xx.254 dev eth1
# ip rule add from XXX.XXX.XXX.B table 1
# ip route add default via (eth0 側ゲートウェイ) dev eth0 table 1

投稿

編集

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/04 21:17

    何度も申し訳ありません。ありがとうございます。
    図に書いてみました。
    https://dl.dropboxusercontent.com/u/91408519/utm_and_proxy.png
    ご覧いただければと思います。

    キャンセル

  • 2016/08/04 22:09

    図のご提示、ありがとうございます。
    localhost からのアクセスで、(2)(3)(4)(5)は確認できていますので、(1)(6)をソースルーティングできれば目標を達成できると思います。
    XXX.XXX.XXX.B のプレフィックスは /32 だと想像していましたが、/24 なのですか?
    そうであれば、eth0 側のゲートウェイがあるはずですので、table 1 でそれを指定してください。回答に追記しました。
    外部のクライアントPC から XXX.XXX.XXX.B に ping が通れば(戻りパケットが eth0 から返れば) OK です。

    キャンセル

  • 2016/08/05 12:47 編集

    そうなんです /24なのです(^_^;)
    何度も申し訳ありません。現状です。

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    XXX.XXX.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
    0.0.0.0 10.0.XX.254 0.0.0.0 UG 0 0 0 eth1

    こちらに

    ip route add default via 10.0.XX.254 dev eth1
    ip rule add from XXX.XXX.XXX.B table 1
    ip route add default via XXX.XXX.XXX.1 dev eth0 table 1

    追記いただいた設定をいたしました。

    ip route add default via 10.0.XX.254 dev eth1

    すでにこちらは存在しますので

    RTNETLINK answers: File exists

    となります。

    ip rule add from XXX.XXX.XXX.B table 1
    ip route add default via XXX.XXX.XXX.1 dev eth0 table 1

    こちらは正常にコマンドが発行されました。
    この状態で

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    XXX.XXX.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
    0.0.0.0 10.0.XX.254 0.0.0.0 UG 0 0 0 eth1

    こちらは変化なしです。

    # ip rule
    0: from all lookup local
    32765: from XXX.XXX.XXX.B lookup 1
    32766: from all lookup main
    32767: from all lookup default

    # ip route show table main
    XXX.XXX.XXX.0/24 dev eth0 proto kernel scope link src XXX.XXX.XXX.B
    10.0.XX.0/24 dev eth1 proto kernel scope link src 10.0.XX.200
    169.254.0.0/16 dev eth0 scope link metric 1002
    169.254.0.0/16 dev eth1 scope link metric 1003
    default via 10.0.XX.254 dev eth1

    # ip route show table 1
    default via XXX.XXX.XXX.1 dev eth0

    もともと行っていた設定が

    ip rule add from XXX.XXX.XXX.B table 1 prio 10000
    ip route add table 1 default via XXX.XXX.XXX.1

    こちらで、

    ip rule add from XXX.XXX.XXX.B table 1
    ip route add default via XXX.XXX.XXX.1 dev eth0 table 1


    このように変更されたということになります。
    プライオリティが無いこと? devを指定してマルチホーミング(ソースルーティング?)を設定した?と理解しています。

    できました!目標とする構成ができました!
    ありがとうございました!大変感謝しております。

    余談ですが、squid設定をしておりまして、何度やってもエラーになるので、不思議に思い確認した所、selinuxが、enableになっていたことに気が付きました・・・これが問題であったような気もしています。

    キャンセル

0

squid.conf に 外向けインターフェースを指定するではダメでしょうか?
tcp_outgoing_address= "インターネット側に抜けるインターフェース IPアドレス"

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/04 14:44

    いえいえ。ありがとうございます。

    キャンセル

  • 2016/08/04 14:56

    他のご回答者様へのコメントにある以下
    > XXX.XXX.XXX.B からプロキシ経由で外に出る場合は、XXX.XXX.XXX.Bが外部アドレスになってしまうようなのです。
    これを以下とすることで、インターフェース指定できないのでしょうか?
    tcp_outgoing_address=10.0.XX.200

    キャンセル

  • 2016/08/04 21:19

    何度も申し訳ありません。記載いただいている方法も試したのですが、意図した動作をしてくれませんでした。

    図に書いてみました。
    https://dl.dropboxusercontent.com/u/91408519/utm_and_proxy.png
    ご覧いただければと思います。

    キャンセル

0

ProxyサーバからUTM経由で抜ける通信の場合、
gatewayがUTMになるように設定する方法では無理でしょうか?

今はProxyサーバから直接外部に抜けている気がします。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2016/08/03 15:51

    回答有り難うございます。仰るとおりです。
    GWはインターフェース毎に設定しているのですが、XXX.XXX.XXX.Bからプロキシサーバにアクセスすると、その際にはGWもXXX.XXX.XXX.BのGWになってしまうのです。

    キャンセル

  • 2016/08/03 15:54 編集

    # ip rule
    0: from all lookup local
    10000: from XXX.XXX.XXX.B lookup 1
    32766: from all lookup main
    32767: from all lookup default

    としてデフォルトゲートウェイは

    # route -n
    Kernel IP routing table
    Destination Gateway Genmask Flags Metric Ref Use Iface
    XXX.XXX.XXX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth0
    10.0.XX.0 0.0.0.0 255.255.255.0 U 0 0 0 eth1
    169.254.0.0 0.0.0.0 255.255.0.0 U 1002 0 0 eth0
    169.254.0.0 0.0.0.0 255.255.0.0 U 1003 0 0 eth1
    0.0.0.0 10.0.XX.254 0.0.0.0 UG 0 0 0 eth1
    ````
    このようにしています。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 90.23%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

同じタグがついた質問を見る