それマグで!

知識はカップより、マグでゆっくり頂きます。 takuya_1stのブログ

習慣に早くから配慮した者は、 おそらく人生の実りも大きい。

NetworkManager でDHCPで取得したDNSの設定を/etc/resolv.confに書き込む

ubuntu デスクトップのネットワーク設定は NetworkManagerから

Ubuntu のネットワーク周りはカオス。というか、最近のLinuxのネットワーク周りはディストリ間でsystemdによる共通化を受容している段階なのでややこしい。

Ubuntuのデスクトップ版は主にNetworkManagerで管理しているんだけど、DNSの設定は、resolv.confに直接書かずにリンクになってたりする。これがちょっと不満なので、直接 /etc/resolv.confに書き込んでほしい。

/etc/NetworkManager/NetworkManager.conf

[main]
plugins=ifupdown,keyfile
dns=default

設定したら再起動

再起動して、DNS設定をDHCPから取得し直す。

sudo systemctl restart network-manager

もし。/etc/resolv.confがsymlinkになって利すると面倒なので、いったん/etc/resolv.confを空にしておくといいかも

sudo rm /etc/resolv.conf;
sudo touch /etc/resolv.conf

再起動後は、直接取れる。

再起動後、DHCPで割り振られたDNSサーバーが直接参照できるようになる。

takuya@:~$ ll /etc/resolv.conf
-rw-r--r-- 1 root root 89 2019-10-11 15:38 /etc/resolv.conf

/etc/resolv.conf

# Generated by NetworkManager
search local
nameserver 192.168.2.1
nameserver 192.168.2.5

network-managerのDNS設定

https://qiita.com/onokatio/items/af0035d1563acbbfeed2

これによると、次のようになる。

  • dnsモード 振る舞い
  • default 取得したDNSサーバーをそのまま使います。
  • dnsmasq キャッシュ用にdnsmasqをサブプロセスとして起動します。DNSサーバーは127.0.0.1を使います。
  • unbound 上のunboundバージョン
  • systemd-resolved 上のsystemd-resolvedバージョン
  • none NetworkManagerはDNSに関して何もしません。また次に書いてあるrc-managerも無効になります。

ネットワーク周りは面倒くさい。

dns の設定だけでも、

  • network-manager
  • /etc/resolv.conf
  • /etc/resolvconf.conf
  • systemd networkd-resolved

と、相互に依存しながら編集してるので、注意しないとデフォルト設定がどこに流れているのかわからなくなるよね。。。