開設期間
主にサーバ設定を行った期間となる。
また、8月いっぱいは帰省のため手を出せない状況だった。
5日目(9/6)
自作パソコンの方も相当苦戦したが、設定の方も苦戦した。何を設定しても正常に動かない。
ここは落ち着いて現状確認し、帰省中に熱を下げて再度挑むことにした。
そこで、うまく動かない原因は、どうもネットワーク関連の設定のようだと考えた。それを踏まえて自宅サーバを開設する上で、自分に足りないものを考えた。
どう考えてもアドレスの解決方法などを全く知らないため、インターネットに関する根本的知識が欠けていると判断。本を購入し再度設定を開始した。
今頃本買ったのかとか言わないで。
まず設定の上で、パソコンの名前が必要になった。パソコンの名前をそのままアドレスにするため、ドメイン名とも一致するという条件で、パソコンの名前を決めた。
Azulite(アズライト)というマイナーな宝石の名を与え、azulite.netなるドメインを購入した。
そうなってから何回目か分からないCentOSを再インストールし、SSH,DHCP,DNSという各サーバをインストールした。
SSHは遠隔操作を可能にするもので、Puttyでwindows上からサーバの設定などを行うことができるようになる。これを導入した時点で専用ディスプレイとキーボードを取り外すことになる。
DHCPはLAN内のパソコンにIPアドレスを振り分けたり、アクセスが来たらLAN内のどこに飛ばすかを指示できる。これでサーバへの問い合わせをすべてサーバに送ることができる。ルーターやルーター兼用モデムなどにはこのサーバが入っているため、そちらの設定を切るかいじることで、外部からのアクセスをサーバに送ることが可能になる。
DNSはホスト名とIPアドレスの相互交換サーバで、これを適切に設定することで、世界中のDNSはazulite.netというドメインがあればこちらのサーバを紹介し、こちらのDNSはhiroki.azulite.netやwww.azulite.netなど複数のホストを管理できるようになる。これでazulite.netというドメイン以下をすべて管理することになる。
どのサーバも、WEBサーバや設定をする上で、必要なサーバとなる。
SSHはopenssh-server、DHCPはdhcp、DNSはbindをそれぞれyumというコマンドでインストールした。
特に気をつけたのがbindの設定で、今回はマスターサーバのみでスレーブサーバがないため、勝手に任意のサーバへ転送されたりすることのないよう、ない(none)と明言する必要のある個所があったりした。
ここではホスト名ごとにゾーンを作り、セキュリティ向上になるというbind-chrootをインストールした。
6日目(9/7)
メインのWEBサーバの構築に入った。メールサーバは今回構成に加える予定はないので、その部分を飛ばして先に進むことにした。
WEBサーバは有名なApacheをインストールした。
ここで手こずったのは、ホスト名の違いによるドキュメントルートの変更だった。
ドメイン名以降は全てフォルダ構造となり、ほとんどのケースでサーバ内のフォルダ構造と一致する。
しかし複数のホストの場合はそれぞれに別のフォルダを割り当てるドキュメントルートの変更が必要になる。
今回はバーチャルホストというApacheの機能を使い、設定ファイルを別に作り、Apacheの設定ファイルにincludeでファイルを読み込むように書き加えた。
バーチャルホスト用のファイルにホストごとに別々のフォルダを割り当てる設定をしたが、Apacheの心臓であるhttpdを起動するとフォルダがないとエラーが出た。
指定したフォルダがroot権限でないことが原因か、それともApache管轄外のフォルダを指定したのが問題か、いろいろと試行錯誤する中で、chrootがあると邪魔なことが分かり、一度アンインストールをした。
試行錯誤する中、どうもドキュメントルートの変更はApache管轄内でなければエラーになるようなので、その中でフォルダを指定する方針にした。
あらかた必要なサーバの構築が終了し、IPアドレスでのアクセスを試みた。
見事、IPアドレスは上手くいった。しかしドメイン名ではルーター兼モデムの設定画面が出てしまうまま、サーバの一晩常時稼働のテストに入った。
7日目(9/8)
昨日からの一晩常時稼働は異常な発熱も異常な騒音もなく終わった。アドバイスのおかげか、扇風機よりも静かだったことが判明した。
昨日のドメインでのアクセスの場合、すべてルーター兼モデムの設定画面になるのは、相変わらずだ。
そこで、強行策を考えた。
恐らくこれはルーターが変なことをしているのが原因だ。ならばルーター兼モデムを、モデムのみのブリッジモードに切り替え、ルーターの役割をすべてサーバに一任すれば上手くいくのではないか。
幸い、(NAT)ルーターがLinuxで構築できるため、本を見ながらそれを設定することにした。
ちょうどその頃、東京の雷が酷いことに驚き、これは瞬電が怖いということで小型UPSの購入を決意した。
そのUPSが家に到着した後、ルーター兼モデムからハブに直接ケーブルが伸びているのを止め、中間にサーバをかませるように配線変えをすることにした。
これも幸い、イーサネットボードを購入していた。そのため元々マザーボードについていたのを合わせて、2つのLANポートがすでにサーバについている。そのおかげでモデムとハブの間にかませることが可能だったことも大きい。
この配線の場合、ルーターであるサーバはLAN内(ローカル)からのアクセスはすべて容認し、グローバルからのアクセスに関してはWEBサーバとして動くか、遮断する。つまりファイアウォールのような仕事をすることになる。
8日目(9/12)
小型UPSが到着し、さっそく配線を再構成しようと考えたが、使用までに充電を12時間しなければならず、しばし放置。
夜に電源もLANも配線を変えた。さっそくNATルーター構築プログラムをインストールし、設定をした。
しかし、LAN内から外に出れず、SSH接続も断たれた。これでは遠隔操作ができない。
設定がまずかったようで、内部からのアクセスもすべて遮断しているようだ。いろいろしたが翌日設定することにした。
9日目(9/13)
ディスプレイとキーボードを再度接続し、NATルーターを朝一番で切った。
これからどうするかいろいろ悩みながら再度ネットで検索した結果、LAN内からのアクセスの場合、ルーターの設定画面は必然的に出てくるということを知った。
そこで世界用のDNSサーバにazulite.netに自宅のIPアドレスを設定し、携帯のフルブラウザで確認した。
しばらく後、確かに、azulite.netのドメインでアクセスすることができた。
その後、hostsというbindのnamedよりも優先されるファイルを編集し、DHCPもルーターではなくサーバのを使うように設定することで、LAN内からもazulite.netでサーバにアクセスできるようになった。
結局NATルーターは無駄だった上に、LANの配線は元に戻ったが、無事サーバとして起動した。
セキュリティに関してはあまり強そうではないが、とりあえず本で想定する自宅サーバのネットワーク構成の1つになった。
おまけ3:DiCE(9/20)
個人でプロバイダと契約すると、動的IPアドレスを支給される。その場合、DNSとIPアドレスを関連付けているため、すぐにその関係が断たれてしまう。
しかし、頻繁なDNSの更新は面倒だ。そこでその面倒さを少し軽減したものがダイナミックDNSと呼ばれるシステムになる。
ただ、これも更新には何らかのアクセスを必要とする。
すでにアクセスしたらIPアドレスのみを返す場所と、IPアドレスやパスワード、ドメイン名などを指定すれば簡単に更新できる場所を知っていた。
それを踏まえた上で、Perlで更新用のスクリプトを作ることにした。
  • 呼び出されたら上記のIPアドレスを返すアドレスにアクセスして結果を得る
  • サーバ内のIPアドレスを記録したファイルの中身と比べ、変更があれば自分の携帯宛にメールを出す
  • 携帯にメールが来たら、すでにそこにクリックするだけで更新できるアドレスが貼られているので、それを選択して上記の更新アドレスにアクセスする
  • このPerl-Scriptをサーバに数分おきに実行させる
この話を先日先輩にしたところ、それをすべてやってくれるDiCEというプログラムを使っていると聞いた。
windows版は知っていたが、Linux版もあることを知り、インストールした。
こうして、無事放っておいてもIPアドレスを更新する、自宅サーバが完成した。