1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Raspberry Pi 4でDHCP/DNSサーバーを構築

Last updated at Posted at 2025-01-26

きっかけ

 以前構築したラズパイのネットワークブートシステムに追加で、ブートサーバーをDHCP/DNSサーバー化しようと思った。ブートサーバーが、配下のネットワークブートするクライアントに対して新たにサブネットを形成し、DHCP/DNSサーバーとして機能すれば計算クラスタとしてさらに運用しやすくなるのではないかと考えた。

構成

ルーター側とクライアント側をそれぞれ有線で接続し、ルータ側のデバイス名をeth0, クライアント側をeth1とする。

DHCP_DNS.png

また、eth1側はUSB-Ethernet変換アダプタを使用した。

nmcliコマンドでEthernetのデバイス名を確認できる

$ nmcli

構築手順

  • eth1側のip固定化
    • コマンドで設定する場合
    $ sudo ip addr add 192.168.1.1/24 dev eth1
    $ sudo ip link  set eth1 up
    
    • 設定ファイルに記述する場合(投稿者の環境)
    /etc/NetworkManager/system-connections/Wired connection 2.nmconnection
      [connection]
      id=Wired connection 2
      uuid=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
      type=ethernet
      autoconnect-priority=-999
      interface-name=eth1
    
      [ethernet]
    
      [ipv4] #ipv4の項目に固定したいアドレスを入力
      method=manual
      addresses=192.168.1.1/24
      gateway=192.168.1.1
      dns=8.8.8.8;
      
      
      [ipv6]
      addr-gen-mode=stable-privacy
      method=disabled
      
      [proxy]
      
    
    その後、以下コマンドを入力することでeth1側のip固定化が反映される
    $ sudo systemctl restart NetworkManager
    または
    $ sudo reboot
    

  • ポートフォワーディングの設定
$ sudo iptables -A FORWARD -i eth1 -o eth0 -j ACCEPT
$ sudo iptables -A FORWARD -i eth0 -o eth1 -m state --state RELATED,ESTABLISHED -j ACCEPT
$ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE

設定を保存する

$ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"
sudo vi /etc/rc.local
iptables-restore < /etc/iptables.ipv4.nat #追記

  • dnsmasqの設定と有効化

    • (インストールしていない場合は)dnsmasqをインストールする
    sudo apt install dnsmasq
    

    • dnsmasq.confに設定を追記する
    sudo vi /etc/dnsmasq.conf
    enable-tftp
    tftp-root=/tftpboot
    pxe-service=0,"Raspberry Pi Boot"
    
    expand-hosts
    domain-needed
    bogus-priv
    no-resolv
    server=8.8.8.8 #primary
    server=x.x.x.x #second
    local=/magisystem.local/
    domain=magisystem.local
    listen-address=x.x.x.x
      
    interface=eth1          # eth1側をdhcpリースに指定
    no-dhcp-interface=eth0 # eth0側はdhcpリースに指定しない
    dhcp-range=192.168.1.2,192.168.1.100,255.255.255.0,12h #リース範囲を指定
    dhcp-option=option:dns-server,192.168.1.1
    dhcp-option=option:router,192.168.1.1
    dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.2,client1,24h #macアドレス,IPアドレス,ドメインネーム,リース時間
    dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.3,client2,24h
    dhcp-host=xx:xx:xx:xx:xx:xx,192.168.1.4,client3,24h
    
    • dnsmasqを起動、有効化する
    sudo systemctl start dnsmasq.service 
    sudo systemctl enable dnsmasq.service
    

参考にしたサイト

1
1
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
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?