nameserverが無ければ名前解決をすることが出来ない。例えば「yahoo.co.jp」とか、無意識にアクセスして、ブラウザ上であればなんかhttps://yahoo.co.jpにつながってくれる。

参考サイト様↓

https://qiita.com/l0x3el/items/860c696891c9757935a9

https://qiita.com/shigeomi-t/items/f9fcee8b639c35b2cc36

ネットで見つけた情報

①/etc/resolv.confを直接書き換える(ダメ)

/etc/resolv.confには「nameserver 127.0.0.53」という謎アドレスが割り振られている。

だが、同時にこんなことも書いてある。

  1 # This is /run/systemd/resolve/resolv.conf managed by man:systemd-resolved(8).
  2 # Do not edit.
  3 #

Do not edit、触るなという事。

この続きは後程触れる。

おまけ・/etc/network/interfacesを触る

これ。古い奴で今の22.04LTSとかだともう無い、になるのかな。

参考→https://qiita.com/mashi0923/items/af9e0c5ed01dc41fc418

netplanに置き換えられているような形になるぽい。新参者にはイメージ付きづらいけど。

②netplanを触る

netplanはどうやらsystemd-resolvedが持っているようなので、これを触るのが一番早そうだ。

参考にできそうなサイト→https://qiita.com/zen3/items/757f96cbe522a9ad397d

こちらも→https://qiita.com/yas-nyan/items/9033fb1d1037dcf9dba5

なんだけど、nameserverの設定が効いてない気がする(気のせいか?)

③/etc/systemd/resolvd.confを触る

これが一番確実だとおもっておりまする。

さっきのDo not editの奴をgoogle翻訳に突っ込んでみました

# これは man:systemd-resolved(8) によって管理される /run/systemd/resolve/resolv.conf です。
# 編集しないでください。
#
# このファイルは /etc/resolv.conf としてシンボリックリンクされている可能性があります。 見ているなら
# /etc/resolv.conf で、このテキストが表示されると、シンボリックリンクをたどったことになります。
#
# これは、ローカル クライアントを直接接続するための動的な resolv.conf ファイルです。
# 既知のすべてのアップリンク DNS サーバー。 このファイルには、構成されているすべての検索ドメインがリストされます。
#
# サードパーティのプログラムは通常、このファイルに直接アクセスすべきではありません。
# /etc/resolv.conf のシンボリックリンク経由。 man:resolv.conf(5) を管理するには
# 別の方法では、このシンボリックリンクを静的ファイルまたは別のシンボリックリンクに置き換えます。
#
# サポートされているモードの詳細については、man:systemd-resolved.service(8) を参照してください。
# /etc/resolv.conf の操作。

man:systemd-resolved.service(8)も見てみましょうか。

ぐわあ。

必要箇所だけ。

systemd-networkdについては全くの無知なのでここでは触れないこととして、

systemd-resolved.serviceがこの辺を管理しており、/etc/systemd/resolved.confの設定がどうやら適用されるらしい。

sudo vi /etc/systemd/resolved.conf

して、

DNS=dnsサーバのipアドレス

コメントアウトしてこの記述にして、

sudo systemctl restart systemd-resolved.service

でsystemd-resolved.serviceを再起動し設定を読み込む。これで完了。

127.0.0.53って?

調べたら腐るほど出てくるけど、スタブリゾルバと呼ばれるキャッシュDNSサーバに問い合わせるためのソフトウェアのこと。


(24/5/14更新)127.0.0.53自体はスタブリゾルバというより、「スタブリゾルバが参照する謎のアドレス」と言った方が正しいようだ。

どのOSにも名前解決を要求するためのソフトウェアであるスタブリゾルバが動いており、Ubuntuの場合はsystemd-resolved。このソフトウェアが名前解決を要求する先としてresolv.confに127.0.0.53が登録されている。

cat /run/systemd/resolve/resolv.conf

で登録されているDNSサーバに解決を求めるらしく、

127.0.0.53というのは「ローカル DNS スタブリスナ」という、ネットワーク名前解決を行うためにローカルでlistenしているアドレスになるらしい。

参考→ https://wiki.archlinux.jp/index.php/Systemd-resolved

なんかこれ以上突っ込むととんでもなく複雑になりそう・・・


最初の謎の文章「yahoo.co.jpに無意識につながる」というのは、スタブリゾルバがパソコン内部で勝手に問い合わせて名前解決してくれているからである。

jprsさんの記事→https://jprs.jp/glossary/index.php?ID=0197

ubuntuのスタブリゾルバについて→https://marsquai.com/28f2a43f-28a8-44d1-9c2b-816da58c1271/a198d358-144c-4842-a449-c0030defab9e/76c5ef6d-73e5-4425-95a5-38940c13ef0e/

↑の記事で若干出ている「スタブリゾルバを使わない」は、今だと/etc/systemd/resolved.confのDNSStubListener=をnoにすると使わないように設定したりできる。やりたい人は調べてみてね

おわ

投稿者 nekoy3

猫山さん。 そこら辺の情報系大学生。 ツイ廃しすぎてSNSに大半の時間を吸われており、自己規制欠けたらQOLが上がりかけててわろてる。(笑い事じゃない)

関連投稿

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

CAPTCHA