##0.はじめに
自分の勤める会社では、セキュリティ強化の一環でDVDメディアへの書き込みやUSBメモリの使用が禁止となっており、従来のハードウェアにLinuxをインストールしようとしても、かつてのように気軽にできなくなってきました。
そこで自分のPCに立てた仮想マシンに、DHCPサーバおよびTFTPサーバを設定し、PXEBOOTで別PCに導入することを行いましたので、その時の手順を備忘録としてここに残します。
PXEBootの手順は、ググるといくつか出てきますが、思った通りに動かなかったので、今回実施してうまくいった内容をここに記載します。
##1.構成図
・Ubuntu用サーバは、有線LANの口が一つ以上あること。
・業務PCは、WiFiと有線LANの口が一つ以上あること。
##2.仮想マシンへのUbuntu OS導入
①Windows PCにVirtualBoxを導入します。(今回の本題ではないので、詳細はスキップ)
②Ubuntu Server 16.04のISOイメージをダウンロードします。
http://releases.ubuntu.com/16.04/からubuntu-16.04.5-server-amd64.isoを選択。
③VirtualBoxで仮想マシンを新規作成します。(基本はデフォルト設定で作成します)
④ネットワークの設定を変更します。
アダプター2を有効にし、割り当てにブリッヂアダプター、アダプタータイプは有線NICを指定します。
⑤ストレージ設定で、光学ドライブには、②でダウンロードしたISOファイルを指定します。
⑥仮想マシンを起動し、Ubuntuをインストールします。
途中でNICを選択する画面が出ますが、enp0s3側を選択してください。
⑦インストール完了後、OSを再起動&ログインします。(opensshサーバを導入すると後が楽です。)
⑧sudo apt-get updateにてエラーにならないことを確認します。
⑨IPアドレスの確認を行う。
enp0s3がNAT 10.0.2.15/24、enp0s8がIPアドレスなしになっていることを確認する。
$ ip a
(中略)
2: enp0s3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 10.0.2.15/24 brd 10.0.2.255 scope global enp0s3
valid_lft forever preferred_lft forever
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
3: enp0s8: <BROADCAST,MULTICAST> mtu 1500 qdisc noop state DOWN group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
##3.DHCPサーバの設定
①有線NICのIPアドレスを設定します。
$ sudo vi /etc/network/interfaces
下記を追記します。
auto enp0s8
iface enp0s8 inet static
address 192.168.0.1
netmask 255.255.255.0
ここでは、192.168.0.1/24を設定します。
設定後、OSを再起動します。
$ sudo reboot
$ ip a
(中略)
3: enp0s8: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
link/ether XX:XX:XX:XX:XX:XX brd ff:ff:ff:ff:ff:ff
inet 192.168.0.1/24 brd 192.168.0.255 scope global enp0s8
valid_lft forever preferred_lft forever
inet6 xxxx::xxxx:xxxx:xxxx:xxxx/64 scope link
valid_lft forever preferred_lft forever
②DHCPサーバのモジュールを導入します。
$ sudo apt install -y isc-dhcp-server
③DHCPサーバで使用するインターフェースに有線NICを指定します。
$ sudo vi /etc/default/isc-dhcp-server
INTERFACES="enp0s8"
④DHCPサーバの設定をします。
$ sudo vi /etc/dhcp/dhcpd.conf
default-lease-time 600;
max-lease-time 7200;
subnet 192.168.0.0 netmask 255.255.255.0 {
option routers 192.168.0.1;
option subnet-mask 255.255.255.0;
option domain-name-servers 8.8.8.8, 8.8.4.4;
}
host ubuntu1 {
hardware ethernet XX:XX:XX:XX:XX:XX; #UbuntuサーバのNICのMACアドレスに置換
next-server 192.168.0.1;
fixed-address 192.168.0.11;
filename "pxelinux.0";
}
$ sudo systemctl enable isc-dhcp-server
$ sudo systemctl restart isc-dhcp-server
⑤仮想マシンをGWとするため、IPマスカレードの設定をします。
$ sudo sysctl -w 'net.ipv4.ip_forward=1'
$ sudo iptables -t nat -F
$ sudo iptables -F
$ sudo iptables -L
$ sudo iptables -t nat -A POSTROUTING -o enp0s3 -j MASQUERADE
$ sudo iptables -A FORWARD -i enp0s3 -o enp0s8 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -A FORWARD -i enp0s8 -o enp0s3 -j ACCEPT
設定を保存します。
$ sudo apt install -y iptables-persistent
##4.TFTPサーバの設定
①TFTPサーバのモジュールを導入します。
$ sudo apt-get install -y tftpd-hpa
②Ubuntuのnetboot.tar.gzをダウンロードします。
$ cd /var/lib/tftpboot
$ sudo wget http://archive.ubuntu.com/ubuntu/dists/xenial-updates/main/installer-amd64/current/images/netboot/netboot.tar.gz
③netbootファイル群をTFTP用ディレクトリに配置します。
$ sudo tar xvzf netboot.tar.gz
④TFTPサーバの再起動します。
$ sudo systemctl restart tftpd-hpa.service
##5.Ubuntu用PCをPXEBOOTモードで起動
①LANケーブルをUbuntu用PCとWindowsPCと接続します。
②Ubuntu用PCのBIOS画面で、PXEBootする設定を行い、起動します。
③Ubuntuのインストーラーが起動することを確認します。
以上で、PXEBootインストール手順の完了です。