初めてsquidの設定を行った。
備忘も兼ねて、ここに記す。
・・・ プロキシのOSS。Linux用、Windows用もあり。今回はLinuxでのスクイドの設定のお話。
・・・ ユーザ・またはサーバからのhttp/https通信をいったん受け、代理で応答してくれるシステム。
これがあると管理上便利・楽になったりする。詳しくはググって下さい。
今回ドハマリして23時過ぎまで残業となった。
4・5年ぶりの深夜残業となってしまった。
簡単に書くと、squidの入ったプロキシサーバに来た通信を、2つの経路に分ける設定を行った。
ユーザ(httpアクセス)
⇒ プロキシサーバ(作業対象squid)
⇒ 特定のURLへの通信は、専用の社内ウェブサーバへ流す。
⇒ それ以外の通信は、既存のプロキシへ流し、社外へ通信させる。(社外向け多段プロキシ)
・作業対象のプロキシのIPを192.168.1.1とする
・外部向け多段プロキシを192.168.1.2とする
・作業対象プロキシの /etc/squid/Web-list には、社内Webサーバ向け(DMZ設置)のFQDNが書かれている。
・作業対象プロキシの /etc/hosts には、Web-listのFQDNのグローバルIPを記載している。(自身で名前解決する)
作業対象プロキシの /etc/squid/squid.conf に、以下4行を記述したら解決した。 ※標準的な設定は割愛
① cache_peer 192.168.1.2 parent XXXX(Port番号) 0 no-query
② cache_peer_access 192.168.1.2 allow !Web-list
③ always_direct allow Web-list
④ never_direct allow all
① ⇒外部向け多段プロキシへの橋渡しの設定。次のホップ先が192.168.1.2(外部向け多段プロキシ)とする設定。
これにより、自身のプロキシ192.168.1.1に来た通信は、基本的に192.168.1.2へ飛ばす様になる。confの中で1つは必要な設定。
② ⇒キャッシュピアアクセスは、個別のルーティングみたいなもの?
リスト「Web-list」には、社内WebサーバのFQDNが記載されてある。
!がついているので否定となり、【Web-list”以外”の通信は、192.168.1.2に行け】という設定になる。
③ ⇒always_directは、squid自身が、直接(外部向け多段プロキシ(cache_peerの設定)を経由せず)宛先URLにアクセスする事を制御するもの。
つまり【Web-listのURLは、直で宛先URLへ行け】という物。
つまりは自サーバのHostsにあるIPへ流れる、という想定。
④ ⇒never_direct設定が記載されてある行までに定義されていないドメインへのアクセスは、最終的に暗黙の転送先へ飛ばされる。
これを入れる事により、Web-list以外の通信が外部向け多段プロキシに飛ばされ、実際に192.168.1.2のアクセスログに出てくる様になった。
つまり、①②④はセットで必要なのかな? ①②を有効にさせる為に④が必要なのかな?
なんにせよ、この4つの設定で要件がクリアされ、無事終電前には帰る事が出来た。
ちなみに、この設定は僕はほぼ行っていない。
横であれやこれや調べながら発言していただけ。
一緒に対応頂いていた方が、答えを全て導き出してくれた。
大変感謝。一生忘れない。
ありがとうございました。