ローカルのdhcpd serverは2台ある。
これは全く同じ固定ipの管理をしている。
違いは、それぞれが配布し管理するdynamic ipの配布幅が重ならないようになっていることくらい。
なので一元化して管理できるようにした。
親機(192.168.0.36)は、こんな感じ。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 |
INTERFACES = "en0, en1"; server-name "macmi2.lo.k-in.co.jp"; option routers 192.168.0.1; option broadcast-address 192.168.0.255; option domain-name "lo.k-in.co.jp"; option subnet-mask 255.255.255.0; option domain-name-servers 192.168.0.36, 192.168.0.35, 192.168.0.1; option domain-search "k-in.co.jp","lo.k-in.co.jp"; default-lease-time 86400; max-lease-time 86400; ddns-update-style interim; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.241 192.168.0.250; option domain-name-servers 192.168.0.1; default-lease-time 43200; max-lease-time 43200; } include "/opt/local/etc/dhcp/known_hosts.conf"; |
子機(192.168.0.36)側はこれ。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
INTERFACES = "en0, en1"; server-name "macmini.lo.k-in.co.jp"; option routers 192.168.0.1; option broadcast-address 192.168.0.255; option domain-name "lo.k-in.co.jp"; option domain-name-servers 192.168.0.36, 192.168.0.35, 192.168.0.1; option domain-search "k-in.co.jp","lo.k-in.co.jp"; max-lease-time 86400; ddns-update-style interim; authoritative; log-facility local7; subnet 192.168.0.0 netmask 255.255.255.0 { range dynamic-bootp 192.168.0.231 192.168.0.240; option domain-name-servers 192.168.0.1; default-lease-time 43200; max-lease-time 43200; } include "/opt/local/etc/dhcp/known_hosts.conf"; |
違っているのはrange dynamic-bootpの割り当て開始・終了位置だけ。
そして、固定ip部分(known_hosts.conf)を外に出し、これをrsyncで同期するようにした。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
SLAVE_HOST = 192.168.0.35 SYNC_FILE = known_hosts.conf CONF_FILE = dhcpd.conf CONF_PATH = /opt/local/etc/dhcp DHCPD = /opt/local/sbin/dhcpd .PHONY: all test sync deploy # デフォルト動作:テスト -> 同期 deploy: test sync # 1. ローカルの文法チェック test: @echo "==> Syntax testing local dhcpd.conf..." $(DHCPD) -t -cf $(CONF_PATH)/$(CONF_FILE) # 2. rsyncで子サーバーへ転送 sync: @echo "==> Syncing $(SYNC_FILE) to $(SLAVE_HOST)..." rsync -avz $(CONF_PATH)/$(SYNC_FILE) rsync://$(SLAVE_HOST)/dhcp_config/ @echo "==> Syntax testing remote dhcpd.conf..." ssh root@$(SLAVE_HOST) "$(DHCPD) -t -cf $(CONF_PATH)/$(CONF_FILE)" |
known_hosts.confを書き換えた時、一度sudo makeを通すことで、チェックと同期が行われる。(当然、これもGeminiさん作)
遣りたいことを伝えて、作っってくれたものを少々弄る。
今回の場合、apple純正が動かないように、DHCPDにフルパスを設定したくらい。
dhcpdの再起動がないのは、リース中だったりしたら問題が起きそうだから。
この変更は次の週末夜中にサーバーが再起動したら反映される。それまで追加対象はdynamicでipが振られることになるけれど、1週間ぐらい問題ないだろう。
と、割り切ることにした。
因みに子機側のrsyncd.confでdhcp_configは設定されている。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
log file=/opt/local/var/log/rsyncd/rsyncd.log pid file=/opt/local/var/run/rsyncd.pid uid = root gid = wheel use chroot = no read only = false max connections = 4 list=false [dhcp_config] path = /opt/local/etc/dhcp comment = DHCP Config Directory read only = no hosts allow = 192.168.0.36 |
当然これもGeminiさん任せである。
子機側にもMakefileを入れた。
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
# 変数設定 CONF_FILE = dhcpd.conf CONF_PATH = /opt/local/etc/dhcp DHCPD = /opt/local/sbin/dhcpd .PHONY: all test deploy # デフォルト動作:テスト deploy: test # 1. ローカルの文法チェック test: @echo "==> Syntax testing local dhcpd.conf..." $(DHCPD) -t -cf $(CONF_PATH)/$(CONF_FILE) |
チェックするだけ。
これは、一応dhcpd.confを直接弄ることも考慮して……ってか、ついでだ。
Terminalのウインドウを間違えて、子機側にMakefile作っちゃったからだ。(笑)
4つも開いて、35と36を同時に弄るとこうなる。気を付けよう。

