プロキシサーバー squid の構築でハマった話です。
取引先のサーバーで、管理画面にIPアドレスの制限をかけていて、うちの会社の固定IPアドレスからしかアクセスできないようになっているところがあるのですが、どうしても他の場所からアクセスしなければならなくなりました。
そこで、古いPCに Linux を入れ、デフォルトで入っている squid というソフトウェアを使って会社内にプロキシサーバーを立て、そこを経由して取引先のサーバーに入ることができるようにしてみました。
Web上には解説サイトもたくさんあるので、何とかなるだろうと思いながら設定をしていったのですが・・・
困ったその1 他のマシンからアクセスできない!
デフォルトでは、プロキシサーバーには、そのマシン自身からしかアクセスできない設定になっています。そこで、まずはローカルネットワークから使えるように設定を変えてみました。
ところが、ローカルネットワーク上の他のマシンからは、どうやっても接続が拒否されるのです。
アクセス制限を全部外してみてもつながらないので、これは squid の問題ではないのではないかと思ったのですが、「じゃあ、何なの?」ってことになってお手上げ。
アクセスしようとしているマシンの設定も変えてみましたが、全然ダメ。
このトラブルで、ほぼ1日費やしてしまいました。
仕方が無いので、その日はいったん引き上げ、翌日、同僚の友人にサーバーに明るい方がいるとのことで聞いてみました。
「ポートが閉じてるのかも。iptables を調べてみて」
というわけで「Linuxファイヤウォール」を調べてみたら、確かにいろいろ制限がかかっています。
でも良くわからないので、とりあえず全部「許可」にしてみました。
そうしたら・・・簡単に繋がってしまいました。
・・・昨日の苦労はなんだったんだ・・・
全部許可にした iptables は制限をかけ直しました。最初から squid用のポートだけ許可してあげれば良かった訳ですが、きっちり見直せたので、まぁ、いいです。
困ったその2 Basic認証をかけたらサイトが表示できない
ローカルネットワークから接続できれば、外部ネットワークから接続できるようにするのはそれほど難しくありません。
ルーターのポートを開けて、IPマスカレード設定をしてやることで、あっけなく外部からも接続できました。
でも、それでは会社のIPアドレスさえわかれば誰でもアクセスできてしまいますので、悪い事の踏み台にされたりして良くありません。
本当ならVPNにすべきなのでしょうが、時間も知識もないし、ソフトウェアVPNは遅いという話もあるので、今回はBasic認証を使うことにしました。
解説サイトを見ながら設定し、ブラウザからアクセスすると、ちゃんと認証ダイアログが出てきます。意外に簡単です。
ところが認証後、「The requested URL could not be retrieved」とエラーが出てサイトが表示できないのです。
仕方が無いので、エラー内容でググってみました。
「IEのバグである」という記事を見つけましたが、テストで使っているのは Firefox。いちおう試しにやってみたけど効果なしです。
他に有用な情報は無く、半ば諦めながら設定ファイルを見直していると・・・ミスタイプを見つけてしまいました。
acl password proxy_auth REQUIRED とすべきところを、「REQUIED」としていたのです。
ミスを修正して squid を再起動してみたところ、何の問題も無く動くようになりました。
squid -k parse で調べた時はエラー出てこなかったし、アクセスするとダイアログが出てくるから、まさかタイプミスしているとは思ってもみなかったんです。
昨日、今日と、いったい何時間かかったんだろう・・・
しかも、ググっても全然有用な情報にヒットしなかったということは、誰もこんなことでつまずいていないんでしょうか?
この記事を書いた人
-
FAシステムメーカー、国内最大手印刷会社製版部、印刷・ウェブ制作会社を経て、家庭の事情で実家に帰省して独立
現在はフリーランスと制作会社シニアディレクターのマルチワーク
ウェブ制作のほぼ全般を見渡せるディレクター業務が主だが、デザイン・コーディングも好き
1997年ブログ開設
WordPressコミュニティには2011年から参加
WordCamp Kansai 2016 セッションスピーカー
WordCamp Tokyo 2023 パネルディスカッションパネラー
WordBench京都、WordBench神戸、WordPress Meetup八王子など登壇多数
最新の投稿
ご質問・ご相談などありましたら
お気軽にお問い合わせください
資料請求・お問い合わせにはメールアドレスが必要です
コメントを残す