Proxy DHCP + iSCSI(NAS4Free)でディスクレスマシン

週末になると秋葉原でジャンク品のノートPCやサーバーを買ってきたりするのだが、物理マシンが増えてくると問題になるのがHDDなどのストレージの用意

検証のために毎回それを用意するのが面倒になってきたので、iPXEでiSCSIのストレージからブートできるように環境を整えた

PXEを利用するためには通常、PXE対応のDHCPサーバーを用意する必要があるのだが、既存のDHCPサーバーの設定は変更したくなかったため、今回はDNSMasqのProxy DHCP機能を利用した

 

参考ページ

qiita.com

 

基本的には上記のリンク先と同じことをしているが、ディスクの追加を簡単に行えるよう、iSCSIターゲットサーバとHTTPサーバーは、PXE/TFTPサーバーとは別に用意したNAS4Freeサーバーを利用する

環境

  • Proxy DHCP/TFTPサーバー
    • ESXi 6.0
    • CentOS7
    • 192.168.1.6
  • HTTP/iSCSIサーバー(NAS4Free)
  • クライアント

 

設定

  • dnsmasq.conf
    # DHCP-Proxyを使う
    dhcp-range=192.168.1.0,proxy
    
    # dhcpが175オプションを持っていたときipxeというタグをSetする
    dhcp-match=set:ipxe,175 # gPXE/iPXE sends a 175 option.
    
    # ipxeタグでないときはundionly.kpxeをbootする
    dhcp-boot=tag:!ipxe,undionly.kpxe
    
    # bootするipxeのメニューのファイル名,Server名,サーバーのIPアドレス
    # これをBootすることでipxeメニューを表示する。
    dhcp-boot=http://192.168.1.20:8080/boot.ipxe,192.168.1.20,192.168.1.20
    
    # pxe-serviceを使う設定
    # 自らがDHCP-Serverである場合は設定する必要はないのだが、
    # Proxy-DHCPの場合は設定する必要がある。
    pxe-service=tag:!ipxe,x86PC,"splash",undionly.kpxe
    
    # tftpを使う
    enable-tftp
    
    # tftpで公開するフォルダ
    tftp-root=/var/ftpd
    log-queries
    conf-dir=/etc/dnsmasq.d

     

  • boot.ipxe
    #!ipxe
    dhcp net0
    
    menu Welcome to the LT-Home iPXE!!
    item back Next Device
    item iscsi0 Next Device(iSCSI-0)
    item --gap
    item hoge infomation
    item hoge MAC:${net0/mac}
    item hoge ProxyDHCP:${proxydhcp/dhcp-server}
    
    choose --timeout 10000 --default iscsi0 target && goto ${target} || goto menu
    
    :iscsi0
    set iscsi-basename iscsi:192.168.1.20:::0:iqn.2018-05.com.lettuce.home.nas4free
    sanboot ${iscsi-basename}:${net0/mac}
    exit
    
    :back
    exit
    
    :hoge
    exit
    

     

この状態で起動するとiPXEのメニュー画面が表示されるはず(スクショの都合でVM)

f:id:lettuceandlettuce:20180613224037p:plain

ここでMACアドレスが表示されるので控えておくこと

 

iSCSIターゲット設定

  • ベース名
    f:id:lettuceandlettuce:20180613225416p:plain
  • ポータル
    f:id:lettuceandlettuce:20180613225439p:plain
  • イニシエーター
    f:id:lettuceandlettuce:20180613225509p:plain
  • エクステント

    ディスクサイズを必ず指定すること

    f:id:lettuceandlettuce:20180613225519p:plain
  • ターゲット

     ターゲット名をクライアントのMACアドレスにする

    f:id:lettuceandlettuce:20180613225527p:plain

ここまでの設定を行うと、作成したディスクのブートをすることが可能になる

あとはディスクイメージを書き込むなりOSをインストールなりすればディスクレスマシンの完成