Design paper of the home serv…

Design paper of the home server(公開版)

本書では、自宅サーバの設計と構築について述べる。

ゴール

自宅におけるIT環境のインフラを整備する。また、外出先からシームレスに個人情報にアクセスするインフラを整備する。

  1. 外部にWebサーバを公開すること。
  2. 外出先からプライベートWebサーバにアクセスできること。
  3. デスクトップPCに共有フォルダを提供すること。
  4. デスクトップPCにiSCSIストレージサービスを提供すること。
  5. 地上アナログ放送を録画できること。
  6. 外出先から地上アナログ放送を視聴できること。

アーキテクチャ

自宅サーバのアーキテクチャ設計について述べる。

インフラストラクチャデザイン

ネットワーク

ネットワーク構成を以下に示す。

  • 172.16.3.0/24: コアネットワーク
  • 172.16.3.64/26
  • 172.16.3.32: VMネットワークとのゲートウェイ
  • 172.16.3.33~126: VMホストの仮想IP(SNAT) ※1
  • 172.16.3.128/26: ホームネットワーク
    • 172.16.3.129~158: static
  • 172.16.3.192/26: ネットワーク機器
    • 172.16.3.240: Wifiネットワークとのゲートウェイ
    • 172.16.3.254: インターネットとのゲートウェイ
    • 172.16.240.0/24: Wifiネットワーク
    • 172.16.240.1~199: DHCPホスト
    • 172.16.240.201~249: staticホスト
  • 172.16.32.0/20: VMネットワーク
    • 172.16.33.0/24~172.16.65.0/24

    ※1: ゲートウェイルータには、自ネットワーク(172.16.3.0/24)以外をソースとするパケットを拒否してしまう制約がある。そのため、VMからインターネットに送信されるパケットはSNATする。

    サーバ

    機器仕様を以下に示す。

    • Intel Core 2 Duo E8400
    • (GIGABYTE G33M-DS2R)
    • Intel G33
    • Intel ICH9R
    • DDR2-800 8GB
    • Realtek RTL8111B
    • Realtek ALC889A HDAudio
    • Intel PRO/1000CT
    • 玄人志向KRTV-7131
    • Hitachi HDT721010SLA360
    • Hitachi HDT721010SLA360

    ソフトウェアスタック

    ソフトウェアスタック図を以下に示す。

    ファイアウォール

    共通基盤

    DNS

    ホームネットワーク、VMネットワークのノードからのDNS問い合わせはmanagementで解決する。management自身が解決できないDNS問い合わせは、インターネットゲートウェイに転送する。

    メール送信

    すべてのメールをISPにリレーする。ローカル配送は行わない。内部ホスト名は有効なFQDNではないため、リレー時に送信者、受信者のメールアドレスを書き換えること。

    ログ管理

    すべてのログはushaのsyslog-ngで収集する。

    認証

    ユーザアカウントはusha上のLDAPで管理する。ただし、OSのrootはローカルユーザとする。

    ファイル共有

    usha上のNFSエクスポートを通じてファイルを共有する。

    management(VMハイパーバイザ)

    OSはGentoo Linuxを採用する。
    最小限のパッケージをインストールすること。

    • Linux 2.6系の最も新しいカーネルを採用する。
    • パーティション配置を柔軟に行うためLVM2を採用する。
    • 可用性向上のためSoftware RAID1を採用する。
    • ノード分離によるセキュリティ確保のためKVMを採用する。

    managementは以下のサービスを提供する。

    • デフォルトルータ
    • DNSサーバ
    • ファイアウォール
    • iSCSIターゲット
    • KVMハイパーバイザ
    • 地上アナログテレビ録画
    • カメラ監視

    ストレージ

    パーティション配置は以下とする。

    パーティション
    容量
    RAID1デバイスとの対応
    /dev/sda1 1GB /dev/md0
    /dev/sda2 2GB /dev/md1
    /dev/sda3 残り /dev/md2

    論理ボリュームの一覧はここをクリック

    カメラ監視

    USBカメラによる監視を提供する。

    • 監視対象は1台のUSBカメラである。ビデオキャプチャカードもビデオデバイスとして認識されるので注意すること。
    • 詳細は非公開。

    VMゲスト仕様

    すべての仮想ノードは共通のカーネルを使用する。
    KVMハイパーバイザが提供する以下の機能に対応すること:

    • LVM 領域の仮想ディスク (virtio)
    • 仮想ネットワークインタフェース (virtio)
    • 仮想コンソール (virtio)
    • ACPIボタンメッセージ (acpid)

    lisa(公開Webサーバ)

    lisaは以下のサービスを提供する。

    • 外部公開Webサーバ

    外部公開Webサーバ

    URL
    コンテンツ
    aj上のGoogle App Engine Development Serverへのリバースプロキシ。ローカルとmixi.jpからのアクセスのみ許可すること。

    usha(共通基盤サーバ)

    ushaは共通基盤となるノードであり、物理ノードの起動とともに開始すること。

    ushaは以下のサービスを提供する。

    • syslogサーバ
    • nfs4
    • LDAP
    • Windows共有フォルダ
    • メールリレー

    (他のサーバは非公開です)

    インプリメンテーション

    自宅サーバのインプリメンテーションについて述べる。

    共通仕様

    すべてのノードでは以下のパッケージが必要になる:

    • xfsprogs
    • nfs-utils
    • autofs
    • syslog-ng
    • nss_ldap
    • pam_ldap
    • postfix
    • snmpd
    • vim
    • gentoolkit
    • screen

    NFSマウント

    automountにより共通基盤のエクスポートポイントをマウントすること。

    /etc/auto.misc
    home            -fstype=nfs4,noatime,hard,intr,nosuid   usha:/home
    sys             -fstype=nfs4,noatime,hard,intr,nosuid   usha:/sys
    public          -fstype=nfs4,noatime,hard,intr,nosuid   usha:/public

    ログ管理

    syslog-ngにより共通基盤にログを転送すること。

    /etc/syslog-ng/syslog-ng.conf
    #destination messages { file(“/var/log/messages”); };
    destination messages {
        tcp(“usha”);
    };

    認証

    nss_ldap, pam_ldapにより共通基盤のLDAPを用いて認証すること。

    メール送信

    postfixにより共通基盤にメールをリレーすること。

    監視エージェント

    監視マネージャからのSNMP問い合わせに応答すること。

    定期実行

    (必要な場合のみ)dcronを使用すること。ログに記録されるよう、起動スクリプトを変更する。

    /etc/init.d/dcron
    (exec /usr/sbin/crond ${DCRON_OPTS} 2>&1 | /usr/bin/logger -t crond -p cron.info &)

    広告

    コメントを残す

    以下に詳細を記入するか、アイコンをクリックしてログインしてください。

    WordPress.com ロゴ

    WordPress.com アカウントを使ってコメントしています。 ログアウト / 変更 )

    Twitter 画像

    Twitter アカウントを使ってコメントしています。 ログアウト / 変更 )

    Facebook の写真

    Facebook アカウントを使ってコメントしています。 ログアウト / 変更 )

    Google+ フォト

    Google+ アカウントを使ってコメントしています。 ログアウト / 変更 )

    %s と連携中