🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

Q&A

解決済

3回答

4153閲覧

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

HiroYoshiy

総合スコア7

CentOS

CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

proxy

proxy(プロキシー)は、企業などの内部コンピュータとインターネットの中間に位置し、例えば直接インターネットに接続できない内部コンピュータの代理としてインターネットに接続する等をするシステム、もしくは代理として機能を実行するソフトウェアです。内部ネットワークへのアクセスを一元管理し、内部からの特定の種類の接続以外を遮断すること、外部からの不正アクセスを拒否することなどに用いられます。

0グッド

0クリップ

投稿2016/08/03 04:28

編集2016/08/04 12:21

###前提・実現したいこと
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

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答3

0

ベストアンサー

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/03 07:29

編集2016/08/04 13:09
TaichiYanagiya

総合スコア12173

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroYoshiy

2016/08/03 08:31

回答いただきありがとうございます。 既に設定してある ip ruleは下記でした。 ip rule add from XXX.XXX.XXX.B table 1 prio 10000 ip route add table 1 default via XXX.XXX.XXX.1 としておりましたが、下記を加えるという意味でしょうか? ip route add default dev eth0 table 1 そうすると、table 1 のGWのデフォルトデバイスeth0を使いなさい。 という意味になると思います。 ip route add default dev eth1 table 1 こちらも試してみましたがダメでした。 # 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 # ip route show table 1 default dev eth0 scope link
TaichiYanagiya

2016/08/03 09:46

まずは、squid からインターネットへの HTTP通信がどちらから出ているか確認したいと思います。 (1) デフォルトゲートウェイが 10.0.xx.254 となっている場合、"curl http://www.google.com/" などで HTTPパケットが UTM 側に出ていくかどうか。UTM のログや tcpdump などのパケットキャプチャで確認。 (2) "squidclient -h 127.0.0.1 -p 3128 http://www.google.com/" などで squid を経由した場合、HTTPパケットが UTM 側に出ていくかどうか。
HiroYoshiy

2016/08/04 05:49

HTTPパケットはUTM側に出て行くことが確認できました。 squidclient を利用して検証しても問題なく意図した経路から外部に出ていきます。 XXX.XXX.XXX.B からプロキシ経由で外に出る場合は、XXX.XXX.XXX.Bが外部アドレスになってしまうようなのです。 あっさり設定できると思い込んでおりましたが、能力不足が身にしみましたので、別のアプローチを試すことも考えております。
TaichiYanagiya

2016/08/04 06:05 編集

> XXX.XXX.XXX.B からプロキシ経由で外に出る場合は、XXX.XXX.XXX.Bが外部アドレスになってしまうようなのです。 eth0 から出るパケットの送信元IPアドレスは XXX.XXX.XXX.B になるのはその通りなのですが、デフォルトゲートウェイを eth1 側にしていれば、squid からの HTTPリクエストパケットはすべて eth1 側から出ますよね? [client] <-1-> [eth0 squid eth1] <-2-> [UTM] 1 の戻りパケットをソースルーティングで返すのではなく、UTM を経由させたいということですか? (追記) <-2-> で UTM を経由してインターネットに出て行くパケットの送信元IPアドレスが XXX.XXX.XXX.B に NAT されるということですか?
TaichiYanagiya

2016/08/04 13: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 です。
HiroYoshiy

2016/08/05 03:49 編集

そうなんです /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になっていたことに気が付きました・・・これが問題であったような気もしています。
guest

0

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

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

投稿2016/08/03 06:39

moonphase

総合スコア6621

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroYoshiy

2016/08/03 06:51

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

2016/08/03 06: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 ```` このようにしています。
guest

0

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

投稿2016/08/03 04:51

over

総合スコア4315

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

HiroYoshiy

2016/08/03 07:11

試してみたのですが、プロクシサーバからの返却がありませんでした。 # ping yahoo.co.jp PING yahoo.co.jp (183.79.135.206) 56(84) bytes of data. 64 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=1 ttl=53 time=8.84 ms 64 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=2 ttl=53 time=8.77 ms 64 bytes from f1.top.vip.kks.yahoo.co.jp (183.79.135.206): icmp_seq=3 ttl=53 time=9.16 ms プロクシサーバからPINGしてみた結果です。 # traceroute 183.79.135.206 traceroute to 183.79.135.206 (183.79.135.206), 30 hops max, 60 byte packets 1 10.0.XX.254 (10.0.XX.254) 0.949 ms 1.597 ms 1.096 ms 2 * * * 3 * * * 4 * * * 5 * * * 6 * * * 利用したいGWも動作しているようなのですが・・
over

2016/08/04 00:30

すいません。勘違いの回答をしていました。 本設定はローカルインターフェースの指定のみ有効です。
HiroYoshiy

2016/08/04 05:44

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

2016/08/04 05:56

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問