やりたいこと
Webサイトによっては、JavaScriptなどのリソースが無効なドメイン指定していて、それがページの読み込みのブロックする形で置かれている場合、タイムアウトするまでページ全体が表示されないことがある。
タイムアウトを短くすることでこの待ち時間を短くしたい。
(あと、自分でドメインをルーターでブロックしていたり、ネットワーク管理者にブロックされているときも同様のことが起きることがある)
/etc/resolv.conf
LinuxではDNSの設定を/etc/resolv.confに書くが、Ubuntuでは/etc/resolv.confを直接編集できない。
無理やり編集したところで再起動や、なんらかのタイミングで戻ってしまう。
resolvconf
/etc/resolv.confを編集できるようにする方法はいくつかあるみたいだが、resolvconfを使用した。
sudo apt install resolvconf
でインストールした後
sudo systemctl status resolvconf.service
で起動しているか確認。
デフォルト設定
デフォルトでresolv.confの設定は
options timeout:5 options attempts:2
となっていて、2つDNSサーバーを設定している場合
なので全てタイムアウトするまでに(5 + (5 x 2 / 2)) x 2 = 20秒経ってしまう。
resolv.confの元を編集
/etc/resolvconf/resolv.conf.d/head
options timeout:2 options attempts:1
としてみた。
- タイムアウト時間は2秒
- 試行回数1回
これでタイムアウトまで4秒になるはずです。
再起動
systemctl restartでは反映されなかったので再起動したら反映された。
状態確認
sudo systemctl status resolvconf.service cat /etc/resolv.conf