Linux
VirtualBox
dnsmasq
dns
TinyCore

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

More than 1 year has 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
    

リファレンス