自宅サーバ

自宅サーバとは、自宅に設置されたサーバのことであり、インターネットに公開しWebサーバなどのサービスを運用したり、家庭内LANで自宅内の機器を管理するのに使われる。個人が趣味で運用することが多い。

インターネットに公開する場合、ホスティングサーバを利用する場合と比較して、自宅サーバではハードウェア・ソフトウェア共に自由に構成することができ、管理者権限を完全に掌握でき、ホスティングサーバでは制限されがちな計算負荷・データ保存量・通信量を気にすることなく運用できる利点がある。 一方、ホスティングサーバでは他人任せであったサーバの管理をすべて自分で行なわなければならず、労力が必要となる。

家庭内LANでの運用では、ファイルサーバなどにより自宅内にある機器のデータを一元的に管理できるなどの利点がある。

1. 運用形態
-------

1.1. 機器
-------

機器は、個人の趣味嗜好により様々な種類が使われる。本格的なサーバ環境を目指す人は、サーバ専用機器を利用し、専用ラックに載せて運用している。とはいえ専用のものを使うことは少なく､パソコンをそのまま用いることが多い。近年では主に中古のノートパソコンが好まれる。自宅サーバ向けに超小型のプラグコンピュータも販売され、玄箱のようなNAS機器を転用して運用することもある。

これは自宅環境では専用のサーバルームを用意しづらいため、静音性を重視せざるを得ない事情もある。また、常時稼動させることにもなるため、電気代についてもある程度重視しないといけない。省電力の機器は通常のものと比較して一般に性能が劣るため、トレードオフの要因のひとつになっている。

1.2. OS
-------

OSは、個人の趣味嗜好により様々な種類が使われる。Linux系、BSD系、OpenSolaris、Windows系のほかにホームサーバ専用のMicrosoft Windows Home Serverなどがある。 Windows系や一部のLinux系は、OSのライセンス料が必要なため、無償のOSが好まれる傾向にある。

1.3. 接続環境
---------

自宅サーバでWebサーバなどのサービスをインターネットに公開するには、一般的に言って、高速で常時接続なインターネット回線が必要であり、また外部から自宅サーバにドメイン名で接続するためのサービスへの登録が必要である。日本では光回線やADSL、CATVなどが自宅サーバの回線として使われる。その回線でインターネットサービスプロバイダに接続しIPアドレスを得るが、自宅サーバを運用するにはこれがグローバルIPアドレスである必要がある。集合住宅などではプライベートIPアドレスが割り振られる場合があり、その場合通常の方法では自宅サーバを運用できない。また、グローバルIPアドレスを得られても、契約によっては自宅サーバの運用が禁止されている場合もあるので注意が必要である。

得られたグローバルIPアドレスが固定IPアドレスか動的IPアドレスかはISPやISPとの契約の種類によって異なる。固定IPアドレスの場合、それを通常通りドメインネームサーバに登録することで、ドメイン名を名前解決して外部からの接続を受け付けることができる。一方、動的IPアドレスの場合、単にそれを一度ドメインネームサーバに登録しただけではIPアドレスが変化したときに外部から接続できなくなるので、IPアドレスが変化した場合にも対応できるダイナミックドメインネームシステムを使い、定期的に現在のIPアドレスを登録し直す。また、IPアドレスの形態がどちらの場合であっても、ドメイン名は自分で取得する場合もあるし、自分でドメイン名を取得せず、ドメイン名の下位の部分を貸し出すサービスを利用する場合もある。

2. サービス
-------

2.1. Webサーバ
-----------

Webサーバは、Apache HTTP Serverを使用されていることが多いと言われている。 Windows専用のAN HTTPDや、IISなども利用されている。

自宅サーバは、狭義には自宅でWebに公開しているWebサーバのことを指すこともある。近年の常時接続の急速な普及の影響で、簡単に実現することが出来るようになり、レンタルサーバでは実現できないHTTPSやSFTPなどのセキュアなサーバを構築することができ、容量を気にすることなくコンテンツを公開できる。また、CGIやPHPなどのサーバ側で実行するコンテンツを好きなだけ利用できるなどの利点がある。しかし、十分なファイアウォールソフトウェアやネットワーク機器を装備していなければ、外部からの攻撃に弱くなるという欠点がある。また、家庭用のOSでは、安定した動作は期待できないため、多くのアクセスが予想されるサーバでは、LinuxなどのOSを使う場合が多い。

自宅サーバのWebサーバの場合、他者に公開するためのサーバかコンテンツやサーバ管理などの用途に分かれる。

2.1.1. WebDAV
-------------

Webサーバの中には、FTPを使用せずHTTP経由でファイル転送ができる機能WebDAVを備えているものもある。Apache HTTP Serverはモジュールを追加インストールすることでWebDAVを使うことができる。この技術はセキュリティ上の問題からFTPプロトコルの使用が禁止されているネットワーク上でデータを転送するために使われることがある。WebDAVそのものがFTPとは異なるセキュリティ上の問題を抱えることもある。

2.2. FTPサーバ
-----------

FTPサーバは、 Windows系においては、FileZilla ServerやTiny FTP Daemon、WarFTPd、NekosogiFTPd、IISに含まれるFTPサービス等を利用している。セキュアにファイルを転送するためには、FTPのかわりにSFTP  やSCPが使われることもある。

2.3. メールサーバ
-----------

メールサーバは、PC-UNIX系ではSendmailやQpopper、qmail、Postfix、Exim等、一方Windows系ではXMailやRadish、Microsoft Exchange Server等が利用されていることが多いと言われている。その他にもJava製のApache Jamesなどが挙げられる。

2.4. ファイルサーバ
------------

ファイルサーバにはWindowsマシンでLinuxがインストールされたサーバにあるファイルをLANで共有するためにSambaサーバが使われることがある。また、Mac用にはNetatalkがある。玄箱のようにファイルサーバ専用機としてつかうNASというものもある。このファイルサーバは動画保存に利用するビデオサーバ、音楽や動画をどこにいても受信しながら視聴できるストリーミングサーバと連携して使われることもある。

2.5. その他サーバ
-----------

その他、NTPサーバや、ネットラジオサーバ等がある。近年ではハードディスクの大容量・低価格化に伴い、自宅サーバにビデオサーバを構築しているユーザも多くなってきている。自宅の玄関に設置された監視カメラで録画した動画を随時保存するサーバや、カメラで監視しながら、携帯電話を通してペットにオートフィーダで餌をあたえるサーバや、携帯電話で家電製品の電源を管理するサーバも販売されている。

2.6. ルータ
--------

家庭用インターネット回線で広く使われる、いわゆるブロードバンドルータと呼ばれるルータも広義のサーバである。ルータにはファイアウォールが内蔵されているものが多く、自宅サーバ系構築でそれを利用することも多い。 最近のルータはルータとしての本来の機能やファイアウォールの他にも様々な機能を兼ね備え、スイッチングハブや、ADSLモデム、無線LANアクセスポイント、DHCPサーバ、IP電話、ビデオサーバ、携帯電話からのテレビ番組録画予約機能を内蔵したものも存在する。

ルータをPCにインストールされたLinuxで構築することもできるが、手間がかかり、電力消費と騒音、物理的サイズが大きい問題がある。オープンソースなファイアウォールソフトウェアは、Linuxではiptablesなどが挙げられる。

2.7. 仮想化技術
----------

仮想化技術としてシンクライアントを実現するためにXenが使われることがある。また、最近では無料で利用できるVMwareなどが使われることも多い。

2.8. VPN
--------

VPNソフトウェアとしてSoftEtherやOpenVPNが使われることがある。

3. 課題
-----

3.1. セキュリティ
-----------

外部ネットワークからの通信を許す為、乗っ取りなど侵入される危険性が高くなる。

3.2. メールサーバ
-----------

ダイナミックDNSを使った動的IPアドレス回線上にメールサーバが稼働している場合、宛先のプロバイダがInbound Port 25 Blockingを導入していると、自宅メールサーバから送信したメールが宛先プロバイダではねられる。

また、自宅サーバの回線のプロバイダがOutbound Port 25 Blockingを導入していると、外部のメールサーバのTCP25番ポートと通信できないため、通常の方法ではメールを送信できない。 対策としては、外部のTCP587番ポートのメッセージサブミッションエージェントを利用する方法がある。

4. 参考文献
-------

5. 関連項目
-------

PCサーバ