User Tools

Site Tools


自作クラスタ計算機:dnsmasqの基本設定

This is an old revision of the document!


Table of Contents

概要

  • DnsmasqはDHCPサーバーとDNSサーバーの両方を同時に行えるソフトで、小規模なネットワークの構築には非常に便利です。
  • DHCPサーバでは各計算ノードにIPアドレスを割り振り、プライベートネットワークを構成します
  • DNSサーバはIPアドレスとホスト名の紐づけを行います。

環境

  • プライベートLAN側のインターフェース … enp1s0f1
  • 外部DNSサーバ … aaa.aaa.aaa.aaa および bbb.bbb.bbb.bbb
    • わからない場合はネットワーク管理者に問い合わせてください。管理ノードの固定IPを設定するときに使ったのと同じやつです。
    • 無料のだと 8.8.8.8 (Google) とか 1.1.1.1 (Cloudflare) などが有名所です。

導入手順

管理ノードで作業を行ってください。

  1. インストール
    sudo apt update
    sudo apt install dnsmasq
  2. 設定ファイルを編集
    /etc/dnsmasq.conf
    # 外部DNSサーバー
    server=aaa.aaa.aaa.aaa
    server=bbb.bbb.bbb.bbb
    
    # 上位DNSサーバーに転送するには、アドレスに.が必要
    domain-needed
    
    # プライベートIPアドレスの逆引き(IPアドレスからドメイン名を引く)要求を、上位DNSサーバーに転送しない
    bogus-priv
    
    # プライベートLANのドメイン名を定義
    domain=cluster.internal
    
    # 計算ノードが接続されているインターフェースを指定(環境に合わせて変更)
    interface=enp1s0f1
    
    # 指定したインターフェースのIPだけで明示的にバインド
    listen-address=192.168.0.1
    bind-interfaces
    
    
    # --- DHCP 設定 ---
    
    # プライベートLANのサブネットマスク
    # staticがあると、dhcp-hostで指定された機器にしかIPアドレスが配布されない
    dhcp-range=192.168.0.0,static,255.255.255.0,12h
    
    # MACアドレス,ホスト名,IPアドレス(順不同)を入力
    dhcp-host=ac:1f:6b:bc:93:8a,node11,192.168.0.11
    dhcp-host=ac:1f:6b:bc:92:09,node12,192.168.0.12
    dhcp-host=ac:1f:6b:bc:97:98,node13,192.168.0.13
    
    # すでに固定済みのノード(今の場合は管理ノード)のアドレス
    host-record=head.cluster.internal,192.168.0.1
    
    # 上で登録されていないMACアドレスからの問い合わせを無視
    dhcp-ignore=tag:!known
    
    
    # ルータ(今の場合はヘッドノード)のIPアドレス
    dhcp-option=option:router,192.168.0.1
    
    # ローカルDNSサーバー(今の場合はヘッドノード)のIPアドレス
    dhcp-option=option:dns-server,192.168.0.1
    • DNSサーバーのポート番号は53番が基本ですが、Ubuntuではsystemd-resolvedがループバック(自己参照アドレス)の53番ポートを使っています。
    • このままだと衝突して動かなくなるので、listen-addressとbind-interfaceを使って計算ノード側のIPアドレスだけを監視させるようにします
    • domainで定義するドメイン名は、平たく言えばこのプライベートLANの名前です。世の中に存在するドメイン名(google.comなど)と衝突しなければなんでもいいです。ここでは後述のLDAPのドメイン名に合わせました。
  3. 構文チェックと起動・有効化
    $ dnsmasq --test
    $ sudo systemctl restart dnsmasq
    $ sudo systemctl enable dnsmasq
  4. 管理ノード自身がDnsmasqによって動いているDNSサーバーを見に行くようにする
    $ sudo nano /etc/systemd/resolved.conf
    /etc/systemd/resolved.conf
    [Resolve]
    DNS=192.168.0.1
    Domains=cluster.internal
    $ sudo systemctl restart systemd-resolved
  5. IPアドレスが配布されたか確認
    $ ping node11
    • ドメイン名を省略せずに書くと以下のようになります。
      $ ping node11.cluster.internal
  6. リースしてるIPアドレスの確認
    $ cat /var/lib/misc/dnsmasq.leases
    • IPアドレスの変更などで、リースをやり直したい場合はこのファイルを削除してください
      $ sudo systemctl stop dnsmasq
      $ sudo rm /var/lib/misc/dnsmasq.leases
      $ sudo systemctl start dnsmasq
    • Dnsmasqを再起動してもIPアドレスが配布されない場合は、NICを再起動させてください。
      $ sudo ip link set enp1s0f1 down
      $ # 数秒待つ
      $ sudo ip link set enp1s0f1 up
    • NICを再起動できない(ネットワークを切れない場合)は、計算ノードのターミナルを開いて、以下のようにIPの開放と再取得を行います(NIC名が enp1s0 の場合)
      $ sudo dhclient -r enp1s0
      $ sudo dhclient enp1s0

計算ノードの追加などで設定ファイルを更新したときは、Dnsmasqも忘れずに再起動する。

$ sudo systemctl restart dnsmasq
自作クラスタ計算機/dnsmasqの基本設定.1783510099.txt.gz · Last modified: 2026/07/08 20:28 by koudai