 
 
余剰になった Raspberry Pi 3B+ で、DHCP,DNS サーバー を構築した時のメモ
条件
| 項目 | 値 | 
|---|---|
| SBC | Raspberry Pi 3B+ | 
| OS | Raspberry Pi OS lite (64-bit bookworm ) | 
| ネットワーク | 有線LAN 固定IP | 
| 実施日 | 2025/02/26 | 
 $ ssh pi.local 
OS のアップデート
$ sudo apt update 
$ sudo apt -y upgrade
DHCPサーバーなので、IPアドレスを固定とする。
| 自アドレス | 192.168.1.2/24 | 
| gateway | 192.168.1.1 | 
| DNS | 192.168.1.2,8.8.8.8 | 
| IPv6 | 停止 | 
| ドメイン | home | 
 $ nmcli connection show
 $ sudo nmcli connection modify "Wired connection 1" ipv4.addresses 192.168.1.2/24
 $ sudo nmcli connection modify "Wired connection 1" ipv4.gateway 192.168.1.1
 $ sudo nmcli connection modify "Wired connection 1" ipv4.dns 192.168.1.2,8.8.8.8
 $ sudo nmcli connection modify "Wired connection 1" ipv4.dns-search home
 $ sudo nmcli connection modify "Wired connection 1" ipv4.method manual
 $ sudo nmcli connection modify "Wired connection 1" ipv6.method disabled
 $ sudo nmcli connection up "Wired connection 1"
mail の設定 (smtpサーバーに投げるだけ)
 $ sudo apt install -y msmtp-mta msmtp
の後 ~/.msmtprc を適宜設定
ntp(chrony) の設定
 $ sudo apt -y install chrony
の後 /etc/chrony/chrony.conf を適宜設定
 $ sudo systemctl restart  chrony
 $ sleep 10 ; chronyc sources
ロケールの設定
 $ sudo raspi-config
  1. 5 Localisation Options
    1. L1 Locale       Configure language and regional settings
で ja_JP.UTF-8 に設定する。
DNSサーバー(unbound) のインストール (設定は後述)
 $ sudo apt -y install bind9-host unbound
 $ sudo systemctl stop  unbound
DHCPサーバー(udhcpd) のインストール (設定は後述)
 $ sudo apt -y install udhcpd
 $ sudo systemctl stop udhcpd
/boot/firmware/config.txt を修正する
 #dtparam=audio=on              # コメントアウト
 #camera_auto_detect=1          # コメントアウト
 #dtoverlay=vc4-kms-v3d         # コメントアウト
 #max_framebuffers=2            # コメントアウト
 #disable_overscan=1            # コメントアウト
 dtoverlay=disable-bt           # 追記
 dtoverlay=disable-wifi         # 追記
IPv6 の停止の為に /boot/firmware/cmdline.txt に ipv6.disable=1 を追加
 console=serial0,115200 console=tty1 root=PARTUUID=ca2c7784-02 rootfstype=ext4 ipv6.disable=1 fsck.repair=yes rootwait
/etc/modprobe.d/raspi-blacklist.conf に下記を設定
 blacklist bcm2835_codec
 blacklist bcm2835_v4l2
 blacklist bcm2835_isp
 blacklist snd_bcm2835
 blacklist drm
 blacklist dm_mod
 blacklist ipv6
スワップを使用しない
 sudo apt remove -y dphys-swapfile
/tmp等 を RAMディスク に変更 /etc/fstab に追記
 tmpfs   /tmp         tmpfs   defaults,size=64m,noatime,mode=1777  0  0
 tmpfs   /var/tmp     tmpfs   defaults,size=16m,noatime,mode=1777  0  0
 tmpfs   /var/log     tmpfs   defaults,size=32m,noatime,mode=0755  0  0
/etc/unbound/unbound.conf に設定 下記は設定例
 server:
     verbosity: 1
    
     interface: 0.0.0.0
     interface: 127.0.0.1
     access-control: 192.168.0.0/16 allow
     access-control: 127.0.0.0/8 allow
     do-ip6: no
    
    local-zone: "home." static
    local-data: "gw.home.                IN A 192.168.1.1"
    local-data: "dhcpd.home.             IN A 192.168.1.2"
    local-data: "dns.home.               IN A 192.168.1.2"
    local-data: "book.home.              IN A 192.168.1.2"
    local-data: "raspi.home.             IN A 192.168.1.2"
    local-data: "ubuntu.home.            IN A 192.168.1.3"
    
 forward-zone:
     name: "."
     forward-addr: 8.8.8.8
     forward-addr: 8.8.4.4
    
 remote-control:
 $ sudo systemctl restart unbound
| 配布アドレス | 192.168.1.233 -> 252 | 
| gateway | 192.168.1.1 | 
| DNS | 192.168.1.2,8.8.8.8 | 
| ドメイン | home | 
/etc/udhcpd.conf に設定
 start   192.168.1.233
 end     192.168.1.252
 interface   eth0
 max_leases  20
 option  subnet  255.255.255.0
 option  domain  home
 option  lease   864000
 opt dns 192.168.1.2, 8.8.8.8
 opt router  192.168.1.1
/etc/default/udhcpd を編集して no -> yes にしてから
 $ sudo systemctl restart udhcpd