【技術的メモ】docker+squidで閉鎖網用プロクシたてた時の詰まりポイントいくつか

お仕事中、dockerコンテナはapt-getやyumで外出られるのに、
こっちの作業端末は閉鎖網から繋いでるから外に出られなくて、調べ物等で色々不便だったので、

閉鎖網PC~開放網dockerコンテナ間の接続が可能な状況において、
dockerコンテナをプロキシサーバにしたら、もしかして閉鎖網からインターネットにアクセスできたりする…?

と言う発想が元。

てなわけで、プロクシサーバソフトには 「squid」を選択。docker+squidでプロクシ作ってみた。
#ちな、「squid=イカ」なので、英語のマニュアルとかナレッジをGoogle先生に翻訳して貰うと結構カオス(爆)

一応squidの入ったイメージもDocker HUBにあるっちゃあるんだけどね…

今環境がPOWERだからそのイメージ使えないのよぅぅぅぅ(号泣)

嗚呼、アーキテクチャの壁は厚い…(涙)

…気を取り直して、と。
やった事は至ってシンプル。

  1. シンプルなコンテナ作ってsshできるようにする
  2. squid入れる
  3. 設定する
  4. 接続確認→プロクシ万歳

てな感じですな。

squidの基本的なところはGoogle先生に「 squid proxy 」って質問すると列挙される皆様方にお譲りするとして、今回はオイラがハマったとこについてのメモっす。
(前置きなげーよ)

以下、当時のつぶやきと共にお送りします。

インストール~設定当初

昨日の思いつき、コンテナにsquid入れたとこまではいいんだが、まだ閉鎖網からプロキシ接続上手くいかず。
コンテナのローカル~squidのポートへのtelnetは問題なし。
netstatで見ると閉鎖網からの接続要求がsyn_recvで止まってるから、ポート開放の問題な気はするが…

インストールから初期設定まではスムーズ。
ローカルのtelnetも問題ないのに、閉鎖網から繋ごうとすると応答がなく、ここで一回目の躓き。

syn_recv問題

ローカルでtelnetしたら繋がるのに、閉鎖網からtelnetすると沈黙…
で、散々悩んでGoogle先生に聞いても原因わからんくて、wiresharkにて通信解析して解決した(おお、SEっぽいぞヾ(^^ ;)オイオイ)。

proxyコンテナと閉鎖網でコネクション確立しないsyn_recv問題は解決
wireshark見たらコンテナからの戻りパケットが届いてなかったので、経路潰してったら途中のフィルタでパケットが破棄されてた
(ログイン権限ある機器のフィルタで助かった…無い機器だったら原因潰せなかったかもしれん)
まだtelnetが通っただけでproxyとして使おうとすると403になるけど、ここからは多分純粋にsquidの設定の問題な筈。。。

この途中経路、要はお外に出るルータさん。

必要最低限のIPとポートしか空けてないんだから、
そらsquidのデフォルトポートで繋ごうとしたらrejectされるわなぁ(苦笑)
と言うことで、ルータさんの開放ポートを勝手に増やすと怒られるので、squidのポートをルータ上の既存開放ポート(の中でも一番影響少ない奴)に設定。
無事、閉鎖網からのtelnet疎通を確認。

最後の関門、TCP_DENIED/403 へ。

TCP_DENIED/403

telnetは通るくせに、何故かプロクシとして使おうとするとTCP_DENIED/403。

どうやらconfがちゃんと反映されてない。
で、ちょいと力業で解決しました。。。
正直お恥ずかしいレベルの解決方法なんだけどねぇ(^^;)

squidのTCP_DENIED/403問題クリア
コンテナ上のせいなのか、
/etc/init.d/squid reloadやっても、
/etc/init.d/squid restartやっても、
/etc/squid/squid.confがきちんと反映されてなかったorz
ちな、対処方法は単なる力業w
docker stopとdocker startでコンテナ上げ落としして、docker exec -it コンテナ名 bashから/etc/init.d/squid startするだけw
本当はもう少しconfが反映されない原因とか調べた方がいいんだけど、ま、閉鎖網から外出られるようになったからいいやw

…我ながら力業である(^^;)

結局なんでconf反映がうまく行かなかったかは、未だに謎w
でも動くからいーのだ。

あ、この串コンテナは、必要な時しか上げてませんよー。
こんなん常時起動してたら客に怒られるわ。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です