能書き
おうちサーバー構築報告:予告からのおうちサーバー構築の続きです。
今回はDHCPサーバーの冗長化を図ります。以前もやりましたが、我が家のプライマリ・サーバーにDHCPサーバーを立てます。
今回はスクリプト化が難しかったので、相も変わらず手作業になります。
参考文献
インストール
踏み台サーバーとして172.16.1.100を使用します。
ssh ansible@172.16.1.100
ssh root@172.16.1.101
dhcpサーバーをインストール。
apt update
apt upgrade -y
apt install -y isc-dhcp-server
インストールに成功したら/etc
をSubversionで確認します。
cd /etc
svn st
結果は下記のようになりました。
# svn st
? apparmor.d/dhcpd.d
? apparmor.d/local/usr.sbin.dhcpd
? apparmor.d/usr.sbin.dhcpd
? default/isc-dhcp-server
? dhcp/ddns-keys
? dhcp/dhcpd.conf
? dhcp/dhcpd6.conf
M group
M gshadow
? init.d/isc-dhcp-server
? logcheck/ignore.d.server/isc-dhcp-server
M passwd
? rc0.d/K01isc-dhcp-server
? rc1.d/K01isc-dhcp-server
? rc2.d/S01isc-dhcp-server
? rc3.d/S01isc-dhcp-server
? rc4.d/S01isc-dhcp-server
? rc5.d/S01isc-dhcp-server
? rc6.d/K01isc-dhcp-server
M shadow
? systemd/system/multi-user.target.wants/isc-dhcp-server.service
? systemd/system/multi-user.target.wants/isc-dhcp-server6.service
アカウントが増えている様子(group,gshadow,passwd,shadow)なので、中身を確認。
# svn di --diff-cmd diff -x -U0 group gshadow passwd shadow
Index: group
===================================================================
--- group (revision 3)
+++ group (working copy)
@@ -57,0 +58 @@
+dhcpd:x:111:
Index: gshadow
===================================================================
--- gshadow (revision 3)
+++ gshadow (working copy)
@@ -57,0 +58 @@
+dhcpd:!::
Index: passwd
===================================================================
--- passwd (revision 3)
+++ passwd (working copy)
@@ -29,0 +30 @@
+dhcpd:x:108:111::/run:/usr/sbin/nologin
Index: shadow
===================================================================
--- shadow (revision 3)
+++ shadow (working copy)
@@ -29,0 +30 @@
+dhcpd:!:20086::::::
このまま/etc
をsvn commit
します。
svn st | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | xargs -rt svn add
sudo svn ci -m"install isc-dhcp-server"
設定
いよいよDHCPサーバーを設定します。
まずはサーバーのネットワーク関係を確認します。
ip a
こんな結果になります。
# ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
inet 127.0.0.1/8 scope host lo
valid_lft forever preferred_lft forever
inet6 ::1/128 scope host noprefixroute
valid_lft forever preferred_lft forever
2: eth0@if49: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default qlen 1000
link/ether bc:24:11:c4:3e:de brd ff:ff:ff:ff:ff:ff link-netnsid 0
inet 172.16.1.101/16 brd 172.16.255.255 scope global eth0
valid_lft forever preferred_lft forever
inet6 fe80::be24:11ff:fec4:3ede/64 scope link
valid_lft forever preferred_lft forever
これを見て、IPアドレスとNIC名を取得します。
SVR_IPADDR=172.16.1.101
NIC_NAME=eth0@if49
そして家庭内ルーターのIPアドレス。我が家はこうです。
RTR_IPADDR=172.16.2.1
我が家のドメインネームサーバーのIPアドレス。
DNS_IPADDR=172.16.1.101
これを踏まえてdhcpd.confを設定します。
cat >/etc/dhcp/dhcpd.conf <<___
option domain-name "local";
option domain-name-servers $DNS_IPADDR;
default-lease-time 86400;
max-lease-time 86400;
ddns-update-style none;
authoritative;
subnet 172.16.0.0 netmask 255.255.0.0 {
range 172.16.3.2 172.16.3.254;
option subnet-mask 255.255.0.0;
option broadcast-address 172.16.255.255;
option routers $RTR_IPADDR;
}
___
補足説明。
-
domain-name
はlocal
にしましたが、きちんとドメインを購入した方はそちらを設定した方が良いでしょう。 -
domain-name-servers
は前回構築したUnboundを想定しています。 -
default-lease-time
とmax-lease-time
は24時間です。ここはお好みで。実験する場合には短い方が良いかも知れません、1分とか。 -
ddns-update-style
について。知らなかったんですが、DynamicDNS的な事が出来るらしいですな。今回はその機能は使いません。 -
authoritative
については難しい事は言いません。オマジナイと思ってとにかく書く! -
subnet
云々の箇所は、まぁ書いてある通りです。IPアドレスに関する基礎知識があれば何となく理解できるでしょう。
起動
起動します。
systemctl start isc-dhcp-server
恐ろしい事に、エラーが発生して起動に失敗しても画面には表示されません。必ず確認しましょう。
systemctl status isc-dhcp-server
本当は動作確認すべきなんですが、もういいよね。
自動起動
全部上手くいったら、マシン再起動で自動起動するようにします。
systemctl enable isc-dhcp-server
/etc
バージョン管理
成功を確認したら/etc
をSubversion登録します。
cd /etc
svn st | grep "^?" | cut -b9- | xargs -I{} find {} -type f -or -type d -or -type l | xargs -rt svn add
svn ci -m"set DHCP server"
仕舞い
DHCPサーバーを冗長化しました。難しい事はありませんね。