CentOSサーバ無事公開成功

意地でもCentOS(Red Hat Linux Enterprise Editionの無償版)をまともに動かしたかったので、ビデオカードのせいでGNOME(ジーノームと読むらしい)が動かなかったSOTEC社製のノートパソコンをYahoo!オークションでとっとと売り払い(Yahoo!オークションなど二度と使わないと言ったはずでは?)、同じくYahoo!オークションで(Yahoo!オークションなど二度と使わないと言ったはずでは?)8,300円也のOS無し中古デスクトップパソコン DELL Optiplex GX50(CPUはCeleron 1.0GHz)を購入した。

インストールは今までの苦労がウソのようにあっさりと完了、ランレベル5(X端末のグラフィカルモード)でCentoOSが立ち上がった。昔に購入してタンスの肥やしになっていたディスプレー切り替え機を引っ張り出し、秋葉原のヨドバシカメラでオス~オスの15ピンディスプレーケーブルを1本調達、ふだんこの「愛と苦悩の日記」の更新などに使っているもう一台のDELL社製Windowsパソコンで使っていた15インチ液晶ディスプレーを、CentOSのDELL Optiplex GX50と切り替えて使えるようにした。
キーボードとマウスが2個ずつあって机の上を占領するのは仕方ないとした。データセンタのサーバラックじゃあるまいし、キーボードスイッチまで購入するような無駄なお金は使えない。
CentOSのGNOMEで画面の解像度を上げていくと、当然のことながら液晶ディスプレーの限界である1280×1024までちゃんと上がり、とてもエレガントなGNOME環境となった。インストールがここまで気持ちよく進むと、それ以降の各種サーバ設定にも俄然やる気が出てくるというもの。
まずApacheの設定ファイルの変更。個人的な趣味でアクセスログファイルは毎日別ファイルにしているので、rotatelogsの場所を探すところから始めたが、その後、基本認証によるログインの必要なアクセス制限領域を作るなどのhttpd.confの書き換えは順調。
以前、会社に導入したApacheでやったのと同じように、FilesMatchディレクティブで、画像、スタイルシート、JavaScriptのインクルードファイル等へのアクセスのログ書き出し抑制の設定も完了した。
さて、Windowsパソコンの方から接続してみると問題発生。HTMLファイル内にはmetaタグで文字コードとしてシフトJISを指定してあるのに、何度アクセスしてもInternet ExplorerがUnicodeと解釈して文字化けする。この問題は、httpd.conf内にApacheの初期文字セットを設定する行を発見し、それをshift_jisに書き換えることで簡単に解決した。
GNOMEが正常に動いていれば、Linuxの起動時にhttpdを自動起動するかどうか、ランレベル別に設定する操作もGUIでできてしまう。Windowsサーバで言う「サービス」の管理のような感覚だ。
次にvsftpdの設定。こちらはftp専用のユーザを新規作成し、rootでのftpを禁止するなど、初めからあまり複雑な設定をするつもりがなかったので問題なし。次はSambaサーバの設定。こちらはswatという初期状態では901番ポートでWebブラウザから接続できる設定ツールがあったが、smb.confを手で書き換えたほうが簡単そうだったので、Windowsパソコンから要ユーザ認証で書き込み可能な共有フォルダを作成してみた。
なお、ここまでの話の大前提として僕の家庭内LANはブロードバンドルータでTEPCOの光ファイバーを使ってインターネットと接続しており、ブロードバンドルータでNATとフィルタリングの設定は済ませてある。
CentOSの導入されているパソコンにはDHCPではなく固定でIPアドレスを付与し、ブロードバンドルータでWAN側からのパケットはすべてCentOSパソコンに流すように設定する。そしてWAN側からは80番(http)、443番(https)ポートしか接続できないようにしてある。LAN側からはCentOSパソコンのIPアドレスが、グローバル側のアドレスとして認識されるように設定してある。
話をもどすと、問題はSambaサーバで発生した。Windowsパソコン側では確かにNetBIOS名でCentOSサーバがブラウズできているが、エクスプローラでそのサーバをクリックすると、しばらく後にアクセス権がないという英語のエラーメッセージが表示される。共有フォルダのアクセス権の設定がまずいのかと考え、CentOSでユーザを新規作成し、共有しているディレクトリのの所有者を変更してみたりしたが、問題は解決しない。
試行錯誤するうちに思い当たったのがGNOMEの画面で見た「ファイアウォール」の設定というやつだ。CentOSの導入直後、あまり意識することなくこの画面でhttp、https、SSH、ftp以外は通さないように設定していた。あの画面でsmbを通す設定ができるはずだと考えて設定画面を開いてみたら、ない。ということはiptablesの設定ファイルを手で編集しなければならないということか。
そこで『CentOSサーバ構築バイブル』を開いてiptablesの設定方法のページを見るが、異様に複雑だ。入力パケットがいくつかの段階を経て出力パケットとして出て行く、その途中の経路の一つひとつについて、接続元IPアドレスと、接続先IPアドレスの組み合わせに対して、どのポートを通すか通さないかの設定を記述していく必要がある。
iptablesの勉強は後でじっくりするとして、僕のとった方法はファイアウォールを停止することだった。そもそもブロードバンドルータが簡易ファイアウォールとして機能しているので、iptablesで「簡易」ファイアウォールを二重にしても無意味だ。
iptablesを停止したところ、Windowsパソコン側からの共有フォルダへのファイルの書き込みやフォルダの新規作成はまったく問題なくなった。ただ、WindowsXPのシステムログで、CentOSサーバが自分がNetBIOSのマスタブラウザだと言い張っているというエラーが1個だけ記録されていたが、僕の家庭内LANは単なるWindowsのワークグループ構成であってドメイン構成ではないので、実害はない。
ということで、家庭内LANでは共有フォルダで簡単、高速にコンテンツを更新できるWebサーバの構築が完了した。ところで、僕はプロバイダと固定グローバルIPの契約をしているわけではないので、僕の家庭内LANに付与されるグローバルIPアドレスは当然のことながら定期的に変更される。
そこでCentOSサーバはDynDNSの動的DNSサービスを使ってインターネットに公開している。DynDNSに対して定期的にグローバルIPを通知するには、DynDNSのWebサイト経由で入手できるIPアドレス通知ツール「ddclient」を利用している。ダウンロードしたアーカイブを展開し、設定ファイルもインターネット上の関連ページを参照すればそれほど試行錯誤することなく自分の環境用に変更できる。
ただ、「ランレベル」という言葉の意味さえ知らなかった僕が、ここまでスムーズにCentOSによる家庭内サーバのインターネット公開を実現できたのは、さまざまなLinux入門書や、CentOSの公式Webサイトから無償でダウンロードできるRed Hat Linux Enterprise Editionの各種マニュアルを濫読したからこそで、やはりWindowsサーバ管理者にとって、Linuxサーバを無事に動かすことの敷居はかなり高いことには違いない。