オレオレDNS!

問題名

オレオレDNS!

概要

独自のドメイン test.ictsc を名前解決できるようにする。

前提条件

  • DNSサーバーがVM1に立っており、192.168.8.1:53をlistenしている
  • VM1の/etc/resolv.confをテキストエディタ等で192.168.8.1:53に書き換えてはいけない(再起動時に上書きされるため)
  • VM1が所属するLANではDHCPが有効になっており、192.168.8.1:53がDNSサーバーとして広報されているため、どうにかしてDHCPの指定するDNSサーバーが/etc/resolv.confに反映されるようにしましょう。

初期状態

vm1からdig test.ictscを実行すると何もレコードが帰ってこない

終了状態

vm1からdig test.ictscを実行するとAレコードが返ってくる

解説

netplanがDNSサーバーとして1.1.1.1を指していた問題でした。この環境の場合、systemd-resolvedが/etc/resolv.confを管理しており、そのsystemd-resolvedにDNSサーバーを設定しているのがnetplanになっています。そのため、netplanの設定を修正します。

初期状態では/etc/netplan/01-netcfg.yamlの中身は以下のようになっています。

network:
  ethernets:
    eth0:
      dhcp4: 'no'
      dhcp6: 'no'
      addresses: [192.168.8.1/24]
      gateway4: 192.168.8.254
      nameservers:
        addresses: [1.1.1.1]
  renderer: networkd
  version: 2

これを、以下のように編集しDHCP: yesにすると正解となります。

network:
  ethernets:
    eth0:
      dhcp4: 'yes'
      dhcp6: 'no'
  renderer: networkd
  version: 2

systemd-networkで192.168.8.1を設定してる解答がありましたが、DHCPを使っていないので不正解としました。
また、Discoveryが帰って来ないのは単にIPプールが枯渇して192.168.8.1以外のIPを取ってこれないだけで、ip addr delしたのちdhclientすると正しく帰ってきます。