「先生!squidサーバ導入メモです」

背景

うちの会社では検証環境とGLOBALに接続できる社内環境がある。社内環境のLANに接続するためにはMACアドレス登録が必要であり、インターネットに接続できる端末は限られる。さらに、MACアドレスの登録に際しては、セキュリティの基準を満たす必要などがありいろいろと面倒である。

うちの検証環境の端末は20台規模で存在し、それぞれを月2回、多ければ週1回ペースでOSを入れ換えたりするので、いちいちセキュリティ基準を満たす対応を行うのは、非常に面倒かつ、無駄が多い。また、検証の大半はGLOBALに接続しなくても問題ないため、LOCALネットワークとして利用していた。

しかし、検証のうち、Windows Update対応を行う必要がある検証があり、その場合はWSUSを構築し、同WSUSを経由してWindowsUpdateを実施し、検証を行っていたのだが、いちいち社内環境でWSUSのアップデートをした後に検証環境に持っていきアップデートを検証する必要があることなどが運用上の煩雑さを生み、作業効率が非常に悪かったし、つい最近WSUSに用いていた端末のディスク容量が枯渇した。

ということで、これを機会に社内環境と検証環境をまたぐProxyサーバを用意し、Windows UpdateのみはProxy経由で実施できるようにするという事を計画立てた。

ということで、自端末のうちの1台をLinux化し、そこにSquidをたてることとした。

この物語は5年ぶりにLinuxに触り、そこからLinuxSquidやその他と格闘する一人の男の物語である。

Fedoraの入手

下記URLへ行き、Fedoraを入手する。ただし、Live CDではなく、DVD形式のインストール前提版を入手すること。
http://fedoraproject.org/ja/

Fedoraのインストール

デフォルト設定のままFedoraをとりあえずインストール。問題なくインストールされ、内蔵およびPCMCIAカードのLANカードが認識される事を確認する。

ちなみに、Fedoraのインストールに至るまでにはubuntuを触ってみたいなぁ。と思ってubuntuを入れてみたり、FedoraのLive CDからインストールしてみたりしたのですが、PCMCIAカードを認識させることができず、pcmcia-csなどを入れれば解決するの?とか思いながらいろいろと試しましたが、だめでした。自分の力のなさを嘆きます・・・。ということで、簡単に認識するであろう、上記のFedoraをインストールしました。

疎通確認

GLOBAL側およびLOCAL側の疎通確認を行う。LOCAL側のPCMCIAカードのNICは当初、自動IP取得が無効化されている可能性があるのでそれは有効化させませう。

Squidの入手

yumコマンドを利用してsquidの入手およびインストールを行う。rootユーザに昇格して以下のコマンドを入力する。

yum install squid

すると、エラーメッセージが表示されることがある。内容としては以下のようなもの。

cannot retrieve repository metadata (repomd.xml) for repository: fedora. please verify its path and try again

これは、以下のURL曰く、fedoraという名前のリポジトリに関するメタデータが読み込めないというエラーとのこと。

http://www.atmarkit.co.jp/flinux/rensai/linuxtips/a118yumerror.html

しかし、上記URLとはメッセージが微妙に異なる。リポジトリ名が異なるのだ。ということで、とりあえず上記URLでは、/etc/yum.repo.d/packagekit-media.repoを編集しろと書いてあるが/etc/yum.repos.d/fedora.repoを編集し、enable=1をenable=0に変更する。再度squidのインストールコマンドを発行するが、インストールできない。

yum install squid

エラーメッセージは今度は変わってupdatesとなった。

cannot retrieve repository metadata (repomd.xml) for repository: updates. please verify its path and try again

そこで、/etc/yum.repos.d/fedora-updates.repoも編集し、enable=0に変更する。が、今度はエラーメッセージが変わる。

インストールの処理を設定しています
パッケージsquidは利用できません。
何もしません

んーーー。yumのコマンドインストールって、結局パッケージをさぁ、インターネットで経由して取得するんでしょ?
じゃ、やっぱりどこかにProxyの設定が必要なんでは?と言うことで検索。/etc/yum.confを弄れと書いてあるので、yum.confに以下の行を追加

proxy=http://proxy.server.name:12345/

コマンド実行するも、挙動変わらず。

インストールの処理を設定しています
パッケージsquidは利用できません。
何もしません

んーーーー。わからないねぇ。にしてもさぁ、ネットの書き込みを不用意に信じてenable=0にしたけど、あれってよかったの?ということで、/etc/yum.repos.d/fedora.repoと/etc/yum.repos.d/fedora-updates.repoのenable=0を1に戻す。で、コマンド入力内容も変えてみる。

yum update

・・・・すると、するするとアップデートが開始した・・・。あらら。なんだ、やっぱりenable=0に変更するのは、リポジトリがInstallMediaの時だけなんだね。

・・・って、ここまで書いて、あぁ、そういうことか。と気づく。Linuxから離れて長いとリポジトリの意味すら忘れてしまうのだな・・・。

つまり、*.repoとは、リポジトリを表す設定ファイルで、どこから新たなパッケージを入手するか?という事を書いてあるわけだ。で、InstallMediaなんて言うのがあると、メディアから入手しようとするからメディアがないと困っちゃうよね。だから、無効化させちゃおうよ。という話なのね。で、俺はインターネット経由で入手しようとするリポジトリの方までenable=0に変更しちゃうもんだからどこからもパッケージを入手できず「何もしません」になるわけだ・・・。

当たり前じゃん・・・。あぁ、無駄な時間を過ごした・・・。エラーメッセージをちゃんと読めば、すぐにわかったことじゃないか・・・。

結論。

cannot retrieve repository metadata (repomd.xml) for repository: fedora. please verify its path and try again

上記のメッセージはfedoraリポジトリからリポジトリメタデータを取得できませんでした。リポジトリのパスを検証して、再度挑戦してください。という意味。で、直接的な原因はパスが間違っているわけではなく、PROXY経由での取得ができなかったから。ということ。
ってことで、yum.confにPROXYの設定をしてから、取得しましょうね。ということ。
で、今はアップデートが長々と続いているので、放置プレイ中。