Edited at

リソースの小さいDNSサーバをVirtualBoxで構築する。(VirtualBox+TinyCore+dnsmasq)

More than 3 years have passed since last update.


内容

開発用にリソースの小さい(メモリ64MB,HDD64MB)DNSサーバをVirtualBoxで構築する。

大まかな流れは以下の通り。


  1. VirtualBox VMの作成

  2. TinyCcoreをVMにインストール(HDDにインストール)

  3. ネットワーク設定

  4. OpenSSHのインストール、設定

  5. dnsmasqのインストール、設定


構成

▼環境

項目
内容

VirtualBox
5.0.20 r106931

ホストOS
Windows 10 Home Edition

ゲスト OS
TyneCore v7.0 Core(10 MB) kernel 4.2.9-tinycore

ゲスト IPアドレス
192.168.1.100

dnsmasq
version 2.55

▼VM設定

大項目
小項目
内容

システム
メモリ
64MB

システム
起動順序
1st 光学, 2nd HDD

ディスプレイ
ビデオメモリー
10MB

ストレージ
HDD (SATA)
64MB

オーディオ
オーディオの有効化
OFF

ネットワーク
割当
ブリッジアダプタ


TinyCoreに関するメモ


  • ファイルの保存設定をしないと、OS再起動後に削除される。



    1. /opt/.filetool.lstに保存対象のディレクトリを記載


    2. filetool.sh -bでバックアップ



  • スタートアップ時(OS起動時)に実行するコマンドは/opt/bootlocal.sh
    に記載する。

  • シャットダウンは「sudo poweroff」


手順


  1. TinyCoreのダウンロード

    以下のページより、TinyCoreのインストーラをダウンロードする。

    http://tinycorelinux.net/downloads.html

    → Core(10 MB)をダウンロード


  2. VM設定起動

    VMを新規に作成後、起動する。



  3. インストールツールの入手

    HDDにインストールするためのツール「tc-install」を入手する。

    $ tce-load -wi tc-install
    



  4. パーティション作成

    OSをインストールするパーティションを作成する。

    $ sudo fdisk /dev/sda
    
    …(省略)…
    # →新規作成のnを入力
    Command (m for help):n
    # →プライマリパーティションのpを入力
    Command action
    e extended
    p primary partition(1-4)
    p
    …(省略)…
    # →パーティション番号1を入力
    Partition number (1-4):1
    # →全領域を指定するので、デフォルト値を使用。
    # 値を入力せずEnter
    First cylinder (1-4, default 1):
    # 値を入力せずEnter
    Last cylinder or +size or +sizeM or *sizeK (1-6 default 6):
    …(省略)…

    # wで書込
    Command (m for help):w

    # /dev/sda1ができていることを確認
    $ fdisk -l




  5. TinyCoreのインストール

    TinyCoreをHDDへインストール

    $ sudo tc-install.sh
    
    …(省略)…

    Core Installation.
    Install from [R]unning OS, from booted [C]drom, or from [I]so file. (r/c/i): c
    # → インストーラはcdromとしてマウントしているので「c」を指定。
    …(省略)…

    Select Install type [F]rugal, [H]DD, [Z]ip. (f/h/z): f
    # →「f」を指定する(通常インストール)。
    # ※「h」「z」はUSBメモリから起動する場合に指定。
    …(省略)…

    Select Target for Installation of core
    1. Whole Disk
    2. Partition
    Enter selection (1-2) or (q)uit: 1
    # →1はディスク全領域、2は指定したパーティションを指定。今回はディスク全領域を使うため「1」を指定。
    …(省略)…

    Select disk for core
    1. sda
    2. sr0
    Enter selection (1-2) for (q)uit: 1
    # →sdaはHDD、sr0は光学ドライブ。HDDにインストールするので「1」を指定。

    Enter selection (y,n) or (q)uit: y
    # →ブートローダのインストール有無。今回はインストールするため「y」を指定。

    Select Formatting Opton for sda
    1. ext2
    2. ext3
    3. ext4
    4. vfat
    Enter selection (1-4) or (q)uit: 3
    # →ディスクのフォーマット形式を設定。今回は「3」を指定。

    Enter space separated boot options:
    Example: vga=normal syslog showapps waitusb=5
    # →ブートオプションを設定。今回は何も設定しない。
    # 入力せずにEnterキーを押下。

    Last chance to exit before destroying all data on sda
    Continue (y/..)? y
    # →問題がなければ「y」を入力。やり直しが必要な場合は「y」以外を入力。

    Press Enter key to continue.
    # →Enterキーを押下。

    # 一旦シャットダウンし、VMの設定を変更。
    $ sudo poweroff

    # VM設定
    # 設定→システム→起動順序のファーストブートをCD→HDDに変更。
    # 変更後、OSを起動。




  6. ネットワーク設定

    ネットワーク設定スクリプト「eth0.sh」を作成し、OS起動時に読み込ませる。

    # eth0.shの作成
    
    $ vi /opt/eth0.sh
    # 以下の内容を記載(環境に合わせる)
    # ------------------------------------------
    # #!/bin/sh
    # pkill udhcpc
    # ifconfig eth0 192.168.1.100 netmask 255.255.255.0 broadcast 192.168.1.255 up
    # route add default gw 192.168.1.1
    # echo "nameserver 192.168.1.100" > /etc/resolv.conf
    # echo "nameserver 192.168.1.1" >> /etc/resolv.conf
    # touch /usr/local/etc/ssh/sshd_config
    # ------------------------------------------

    # スタートアップ設定
    $ echo "sudo sh /opt/eth0.sh" >> /opt/bootlocal.sh

    # 永続設定
    $ echo "opt/eth0.sh" >> /opt/.filetool.lst
    $ filetool.sh -b
    $ sudo reboot




  7. SSH設定

    今回はユーザ「tc」でログイン出来るように設定する。

    # opensshのインストール
    
    $ tce-load -wi openssh
    # 必要があれば、以下を更新。今回はデフォルトで使用する。
    # cd /usr/local/etc/ssh
    # sudo vi sshd_config

    # sshでログインするユーザのバスワード設定
    $ passwd tc

    # 動作確認
    $ sudo /usr/local/etc/init.d/openssh start
    $ ps -ef | grep ssh
    $ ssh tc@localhost
    $ exit

    # スタートアップ設定
    $ echo "/usr/local/etc/init.d/openssh start" >> /opt/bootlocal.sh

    # 永続設定
    $ echo "usr/local/etc/ssh" >> /opt/.filetool.lst
    $ echo "etc/passwd" >> /opt/.filetool.lst
    $ echo "etc/shadow" >> /opt/.filetool.lst
    $ echo "etc/group" >> /opt/.filetool.lst
    $ filetool.sh -b
    $ sudo reboot




  8. dnsmasqのインストール・設定

    # dnsmasqのインストール
    
    $ tce-load -wi dnsmasq

    # 設定の修正
    $ vi /etc/nsswitch.conf
    # 以下の通り修正
    # ---------------------------------------
    # hosts: files dns
    # ↓
    # hosts: dns files
    # ---------------------------------------
    $ sudo vi /etc/hosts
    # 以下を追記
    # ---------------------------------------
    # 192.168.1.100 tce-dns
    # ---------------------------------------
    $ sudo cp /usr/local/etc/dnsmasq.conf.example /usr/local/etc/dnsmasq.conf
    # 必要があればdnsmasq.confを修正。今回はデフォルトを使用。

    # スタートアップ設定
    $ echo "sudo /usr/local/sbin/dnsmasq -9 -d" >> /opt/bootlocal.sh

    # /etc/hostsファイルは.filetool.lstに書き込んでもOS再起動後にリセットされてしまうため、以下の仕組みを設定。
    $ vi /home/tc/set_hosts
    # 以下を追記
    # ---------------------------------------
    # 127.0.0.1 box localhost localhost.local
    # 192.168.1.100 tce-dns
    # ---------------------------------------
    $ vi /opt/bootlocal.sh
    # 「sudo /usr/local/sbin/dnsmasq -9 -d」の前に以下を追記
    # ---------------------------------------
    # sudo cp /home/tc/set_hosts /etc/hosts
    # ---------------------------------------

    # 永続設定
    $ echo "usr/local/etc/dnsmasq.conf" >> /opt/.filetool.lst
    $ echo "etc/nsswitch.conf" >> /opt/.filetool.lst
    $ filetool.sh -b
    $ sudo reboot

    # 動作確認
    $ nslookup tce-dns




その他、TinyCoreの設定



  • 日本語キーボードマップ

    日本語キーボードマップ(jp106)をインストールし、有効化。

    # インストール
    
    $ tce-load -wi kmaps

    # スタートアップ設定
    $ sudo echo "loadkmap < /usr/share/kmap/qwerty/jp106.kmap" >> /opt/bootlocal.sh

    # 永続化
    $ filetool.sh -b
    $ sudo reboot




リファレンス