0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

おうちサーバー構築報告:dhcpサーバー冗長化

Posted at

能書き

おうちサーバー構築報告:予告からのおうちサーバー構築の続きです。

今回はDHCPサーバーの冗長化を図ります。以前もやりましたが、我が家のプライマリ・サーバーにDHCPサーバーを立てます。

今回はスクリプト化が難しかったので、相も変わらず手作業になります。

参考文献

インストール

踏み台サーバーとして172.16.1.100を使用します。

普段使いのクライアントマシン
ssh ansible@172.16.1.100
マシン172.16.1.100:ユーザーansible
ssh root@172.16.1.101

dhcpサーバーをインストール。

マシン172.16.1.101:ユーザーroot
apt update
apt upgrade -y
apt install -y isc-dhcp-server

インストールに成功したら/etcをSubversionで確認します。

マシン172.16.1.101:ユーザーroot
cd /etc
svn st

結果は下記のようになりました。

マシン172.16.1.101:ユーザーroot
# 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)なので、中身を確認。

マシン172.16.1.101:ユーザーroot
# 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::::::

このまま/etcsvn commitします。

マシン172.16.1.101:ユーザーroot
svn st | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | xargs -rt svn add
マシン172.16.1.101:ユーザーroot
sudo svn ci -m"install isc-dhcp-server"

設定

いよいよDHCPサーバーを設定します。

まずはサーバーのネットワーク関係を確認します。

マシン172.16.1.101:ユーザーroot
ip a

こんな結果になります。

マシン172.16.1.101:ユーザーroot
# 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名を取得します。

マシン172.16.1.101:ユーザーroot
SVR_IPADDR=172.16.1.101
NIC_NAME=eth0@if49

そして家庭内ルーターのIPアドレス。我が家はこうです。

マシン172.16.1.101:ユーザーroot
RTR_IPADDR=172.16.2.1

我が家のドメインネームサーバーのIPアドレス。

マシン172.16.1.101:ユーザーroot
DNS_IPADDR=172.16.1.101

これを踏まえてdhcpd.confを設定します。

マシン172.16.1.101:ユーザーroot
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-namelocalにしましたが、きちんとドメインを購入した方はそちらを設定した方が良いでしょう。
  • domain-name-servers前回構築したUnboundを想定しています。
  • default-lease-timemax-lease-timeは24時間です。ここはお好みで。実験する場合には短い方が良いかも知れません、1分とか。
  • ddns-update-styleについて。知らなかったんですが、DynamicDNS的な事が出来るらしいですな。今回はその機能は使いません。
  • authoritativeについては難しい事は言いません。オマジナイと思ってとにかく書く!
  • subnet云々の箇所は、まぁ書いてある通りです。IPアドレスに関する基礎知識があれば何となく理解できるでしょう。

起動

起動します。

マシン172.16.1.101:ユーザーroot
systemctl start isc-dhcp-server

恐ろしい事に、エラーが発生して起動に失敗しても画面には表示されません。必ず確認しましょう。

マシン172.16.1.101:ユーザーroot
systemctl status isc-dhcp-server

本当は動作確認すべきなんですが、もういいよね。

自動起動

全部上手くいったら、マシン再起動で自動起動するようにします。

マシン172.16.1.101:ユーザーroot
systemctl enable isc-dhcp-server

/etcバージョン管理

成功を確認したら/etcをSubversion登録します。

マシン172.16.1.101:ユーザーroot
cd /etc
svn st | grep "^?" | cut -b9- | xargs -I{} find {} -type f -or -type d -or -type l | xargs -rt svn add
マシン172.16.1.101:ユーザーroot
svn ci -m"set DHCP server"

仕舞い

DHCPサーバーを冗長化しました。難しい事はありませんね。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?