systemd-resolveの設定(Ubuntuなどの動的DNS設定)

systemd-resolveの設定(動的DNS設定)


  • Ubuntuなど、systemd-resolveがデフォルトのDNSリゾルバーとなっているディストリビューションについて。
  • NetworkManagerやavahi-daemonの無効化、/etc/network/interfacesの設定はしなくて大丈夫です。
  • なお、下記のDNS設定を行わないと、Firefox Syncに失敗してしまいます。Google Chromeでのウェブ検索には影響はありませんが、Firefoxでは「support.mozilla.org」、「accounts.firefox.com」、「bugzilla.mozilla.org」などのサポートサイトの名前検索に失敗しますので、Mozilla のサービスを使うために、なんだか妙なのですが、Google の DNS を設定しましょう。

/etc/systemd/resolved.conf の編集

  • 設定は下記のファイル順に構築されます。
/etc/systemd/resolved.conf
/etc/systemd/resolved.conf.d/*.conf
/run/systemd/resolved.conf.d/*.conf
/usr/lib/systemd/resolved.conf.d/*.conf

$ sudo vi /etc/systemd/resolved.conf

  • おすすめはGoogleのPublic DNSを設定です。Googleを使うユーザーにとってはヒット率が高いようです。

[Resolve]
DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:

  • 他のDNSとしては、ISPが提供しているDNSサーバーを指定する。プロバイダが提供しているDNSは接続ルータの管理者画面等で確認します。

[Resolve]
DNS=xxx.xx.xxx.250 xxx.xx.xxx.254

systemd-resolve サービス再起動


$ sudo systemctl restart systemd-resolved.service

設定確認


  • GoogleのPublic DNSサーバー(8.8.8.8、8.8.4.4)が設定されてます。

$ systemd-resolve --status

Global
         DNS Servers: 8.8.8.8
                      8.8.4.4
                      2001:4860:4860::8888
                      2001:4860:4860::8844
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa

          ・・・中略・・・

Link 3 (wlp3s0)
      Current Scopes: DNS LLMNR/IPv4 LLMNR/IPv6
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: allow-downgrade
    DNSSEC supported: yes
         DNS Servers: 192.168.0.1

Link 2 (enp4s0)
      Current Scopes: none
       LLMNR setting: yes
MulticastDNS setting: no
      DNSSEC setting: allow-downgrade
    DNSSEC supported: yes

  • ローカルプロバイダーのDNSサーバー(192.168.0.1)が設定されてます。
$ systemd-resolve --status
Global
         DNS Servers: xxx.xx.xxx.250
                      xxx.xx.xxx.254
          DNSSEC NTA: 10.in-addr.arpa
                      16.172.in-addr.arpa
                      168.192.in-addr.arpa
                      17.172.in-addr.arpa
                      18.172.in-addr.arpa



関連する設定や、PCの現状設定確認


/etc/resolv.conf のnameserver設定はローカルのアドレスとなります。(下記の例では127.0.0.53)

$ cat /etc/resolv.conf

# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
#     DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
# 127.0.0.53 is the systemd-resolved stub resolver.
# run "systemd-resolve --status" to see details about the actual nameservers.

nameserver 127.0.0.53


systemd-resolveを使っているか、dnsmasqを使っているか調べるには

$ sudo lsof -i:53

COMMAND    PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 1079 systemd-resolve   12u  IPv4  22948      0t0  UDP localhost:domain

/etc/nsswitch.conf の設定

「hosts:」行について、「resolve」を「[!UNAVAIL=return]」や「dns」よりも先に記述します。
$ cat /etc/nsswitch.conf

# /etc/nsswitch.conf
#
# Example configuration of GNU Name Service Switch functionality.
# If you have the `glibc-doc-reference' and `info' packages installed, try:
# `info libc "Name Service Switch"' for information about this file.

passwd:         compat
group:          compat
shadow:         compat
gshadow:        files

hosts:          files mdns4_minimal [NOTFOUND=return] resolve [!UNAVAIL=return] dns
networks:       files
(以下略)


ネットワークインターフェース名の確認

ifconfigコマンド、iwconfigコマンド、ip addrコマンド、ip aコマンドで確認します。

ネットワークインターフェースデバイスの設定状態の確認

$ nmcli device show <インターフェース名>

GENERAL.デバイス:                       <インターフェース名>
GENERAL.タイプ:                         wifi
GENERAL.ハードウェアアドレス:           (MACアドレス)
GENERAL.MTU:                            0
GENERAL.状態:                           100 (接続済み)
GENERAL.接続:                           (接続しているアクセスポイント)
GENERAL.CON パス:                    
/org/freedesktop/NetworkManager/ActiveConnection/0
IP4.アドレス[1]:                        (DHCPで割り当てられたIPアドレス)
IP4.ゲートウェイ:                       (DHCPでデフォルトゲートウェイ、192.168.0.1など)
IP4.ルート[1]:                          dst = 169.254.0.0/16, nh = 0.0.0.0, mt = 1000
IP4.DNS[1]:                             (接続ルータから取得したDNS、192.168.0.1など)
IP6.アドレス[1]:                         (DHCPで割り当てられたIPv6アドレス)
IP6.ゲートウェイ:
  

digコマンドでDNSサーバーを指定して名前解決する方法

$ dig @216.239.32.10 www.google.com

;; ANSWER SECTION:
www.google.com. 300 IN A 216.58.200.196


参考サイト

resolved.conf について
resolved.conf https://www.freedesktop.org/software/systemd/man/resolved.conf.html#

systemd-resolved.service について
systemd-resolved.service https://www.freedesktop.org/software/systemd/man/systemd-resolved.service.html

/etc/systemd/network で設定したい場合
systemd.network https://www.freedesktop.org/software/systemd/man/systemd.network.html#

How to switch from NetworkManager to systemd-networkd on Linux - Xmodulo http://xmodulo.com/switch-from-networkmanager-to-systemd-networkd.html

コメント

  1. > DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:
    DNS=8.8.8.8 8.8.4.4 2001:4860:4860::8888 2001:4860:4860::8844

    返信削除

コメントを投稿

このブログの人気の投稿

GRUB起動メニューのタイムアウト時間、起動するOSの変更

Salesforce Trailheadチャレンジメモ(Apex の基礎とデータベース)