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サーバー冗長化・Ubuntu 24.04 LTS in MicroServer N54L

Posted at

能書き

私的サーバー構築日誌:仕切り直しからの自宅サーバー構築の続きです。

今回はDHCPサーバーの冗長化を図ります。以前もやりましたが、その時の計画に基づき、セカンダリサーバー(=ファイルサーバー)にもDHCPサーバーを立てます。

我が家のIPアドレス体系(再掲)

以前も同じ事をやりましたので、その再掲です。クラスBにして、第3オクテットで分類して使い分ける方針です。

DHCPプロトコルについて。プロトコルの仕様は、LAN 内に複数のDHCPサーバーが在っても問題無く動くようになっているそうです。問題はDHCPサーバーのIPアドレス管理が同期されない事で、IPアドレスが重複して発行されてしまう事態になりかねない点にあります。だからDHCPサーバー毎にIPアドレス範囲を分離する事で、多重発行を防ぐようにすれば良い、との事。

我が家のネットワークアドレス: 172.16.0.0/16

172.16.0.*
エイリアスIPアドレスとして、サービス毎に割り当てる固定IPアドレス(仮想IPアドレス)
172.16.1.*
ステイショナリIPアドレスとして、NIC毎に割り当てる固定IPアドレス及びMACアドレス毎にDHCPサーバが固定的に割り当てるIPアドレス
172.16.2.*
無線LANルータ内蔵のDHCPサーバーによる動的割り当てのIPアドレス
172.16.3.*
プライマリサーバーのDHCPサーバーによる動的割り当てのIPアドレス
172.16.4.*
セカンダリサーバーのDHCPサーバーによる動的割り当てのIPアドレス

目標

Ubuntu 24.04 LTS を入れた我が家のファイルサーバー MicroServer N54L にDHCPサーバーを立てます。

参考文献

インストール

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

sudo apt -y install isc-dhcp-server

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

cd /etc
sudo svn st

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

$ sudo 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)なので、中身を確認。

$ sudo svn di --diff-cmd diff -x -U0 group gshadow passwd shadow
Index: group
===================================================================
--- group       (revision 5)
+++ group       (working copy)
@@ -62,0 +63 @@
+dhcpd:x:110:
Index: gshadow
===================================================================
--- gshadow     (revision 5)
+++ gshadow     (working copy)
@@ -62,0 +63 @@
+dhcpd:!::
Index: passwd
===================================================================
--- passwd      (revision 5)
+++ passwd      (working copy)
@@ -36,0 +37 @@
+dhcpd:x:110:110::/run:/usr/sbin/nologin
Index: shadow
===================================================================
--- shadow      (revision 6)
+++ shadow      (working copy)
@@ -36,0 +37 @@
+dhcpd:!:20057::::::

以前と同じですな。

このまま/etcsvn commitします。

sudo svn st | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | sudo xargs -rt svn add
sudo svn ci -m"installed 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: enp3s0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000
    link/ether 9c:b6:54:a9:14:76 brd ff:ff:ff:ff:ff:ff
    inet 172.16.1.3/16 brd 172.16.255.255 scope global enp3s0
       valid_lft forever preferred_lft forever
    inet6 fe80::9eb6:54ff:fea9:1476/64 scope link
       valid_lft forever preferred_lft forever

これを見て、IPアドレスとNIC名を取得します。

SVR_IPADDR=172.16.1.3
NIC_NAME=enp3s0

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

RTR_IPADDR=172.16.2.1

我が家のドメインネームサーバーのIPアドレス。プライマリ・サーバーになります。

PRIMARY_IPADDR=172.16.1.2

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

cat | sudo tee /etc/dhcp/dhcpd.conf >/dev/null <<___
option domain-name "home";
option domain-name-servers $PRIMARY_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.4.2 172.16.4.254;
  option subnet-mask 255.255.0.0;
  option broadcast-address 172.16.255.255;
  option routers $RTR_IPADDR;
}

# secondary server
host $(cat /etc/hostname) {
  hardware ethernet $(cat $(find /sys/devices -name $NIC_NAME)/address);
  fixed-address $SVR_IPADDR;
}
___

この設定の説明については以前の記事を参照してください。

起動

起動します。

sudo systemctl start isc-dhcp-server

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

systemctl status isc-dhcp-server

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

自動起動

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

sudo systemctl enable isc-dhcp-server

/etcバージョン管理

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

cd /etc
sudo svn st | grep "^?" | cut -b9- | sudo xargs -I{} find {} -type f -or -type d -or -type l | sudo xargs -rt svn add
sudo svn ci -m"setting 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?