04_Logo
Ubuntu 18.04 LTS BetaをConoHaに入れてみたところ、
/etc/resolv.confが空になって名前解決出来なくなったので、対処法の備考録。

■俺のConoHaが、resolv.confが空なんですが。

Ubuntu 16.04LTSからdist-upgrade -dして18.04 LTS Betaを入れた後に、無理やり(?)docker-ceを入れてみたところ、resolv.confが空でdocker pullにいい感じに失敗をするようになる。
[email protected]:~# 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.
[email protected]:~#
そりゃそーだw

■ConoHaはDHCPでアドレスを配っている

「systemd-resolve --statusして状況観てね」って丁寧にresolv.confを叩くと、とりあえず上位からnameserverは受け取っているようなのである。

[email protected]:~# systemd-resolve --status
Global
         DNS Servers: 157.7.180.133
                      163.44.76.148
                      2400:8500:1301:2611:2000::148
                      2400:8500:1301:699:157:7:180:133
(snip)

ConoHaでは、DHCPとDHCP v6でインスタンスにアドレスを配っているので、適当にdhclientしてみる。
[email protected]:~# dhclient
RTNETLINK answers: File exists

# dig a google.com
;; ANSWER SECTION:
google.com.             42      IN      A       216.58.200.206

ro[email protected]:~# cat /etc/resolv.conf 
(snip)
nameserver 127.0.0.53

■デーモンを突き止めてみる

なんだかlocalhostに53/udpが立ってて、そこで名前解決しているようだ。
[email protected]:~# lsof -i:53
COMMAND    PID            USER   FD   TYPE DEVICE SIZE/OFF NODE NAME
systemd-r 1798 systemd-resolve   17u  IPv4  22451      0t0  UDP localhost:domain

ただ、なんかしっくりしない。もう少し調べる。
とりあえず、この辺が参考になりそう。
ネームサーバーを変更する - Qiita

■Netplan使ってね

Bionic Beaverでは、/etc/network/interfacesを弄って何かするのはダサくて、「Netplanの定義を書いて適用してね」ってなったっぽい。
この辺に詳しく書いてある。
Netplan - ubuntu wiki
とりあえず、ConoHaの流儀に従って「DHCPね」っていう定義を書いて、適用してみる。
[email protected]:~# cat <<_EOL > /etc/netplan/conoha.yaml
network:
 version: 2
 renderer: networkd
 ethernets:
   ens3:
     dhcp4: yes
     dhcp6: yes
_EOL
[email protected]:~# netplan apply
これでリブートしても名前解決できるようになった。

お後がよろしいようで。