NURO光のZTE社製ルーター「F660T」「F660A」でDNSによる名前解決が遅い時に試したいこと

NURO光といえば、下り最大10Gbps(ベストエフォート型)を提供するSo-netが提供するプロバイダーサービスです。しかし、NURO光を契約してから、速度低下や画面表示が遅い、という経験をされたことないでしょうか。それは、So-netが提供するONU兼無線LANルーターであるZTE社製の「F660T」「F660A」のDNSサービスが原因かもしれません。

そもそも、「DNS」とは「Domain Name Systems」の略称で、名前解決サービスとも呼ばれます。TCP/IPプロトコルでは、IPアドレス(v4もしくはv6)と呼ばれる、数値もしくは英数字で表現された、世界で一意の住所をもとに相手のコンピューターと通信を行います。しかし、一般的にIPアドレスは「XXX.XXX.XXX.XXX」(IPv4の場合)のような形式をしており、人間が覚えられるようなものではありません。

そこで、IPアドレスの代わりに、たとえば弊サイトのドメイン名である「ottan.jp」といった意味のある文字列と、上記のIPアドレスを紐づけて「ottan.jp」にアクセスしたらIPアドレス「YYY.YYY.YYY.YYY」へ変換してアクセスするということを一般的に行なっています。この「ottan.jp」を「YYY.YYY.YYY.YYY」に変換するサービスがDNSサービスです。(名前をIPアドレスに解決するのです)

「F660T」「F660A」のボトルネックを解消する

では、冒頭のZTE社製ルーター「F660T」「F660A」と、このDNSサービスの関係性を見ていきましょう。これらのルーターの役割は、あくまでダークファイバー(使用されていない光ファイバー!)を通してプロバイダーであるSo-net回線に接続するものです。また、ルーター(無線LAN機能も内蔵)としての一般的な機能(ルーティングはもとより、ファイアウォール機能、IPアドレス割り当て「DHCPサービス」、などなど)を兼ね備えています。また、この役割の中に冒頭のDNSサービス機能が含まれます。

インターネット黎明期の頃、初期に登場したルーターにはDNSサービス機能は付与されていませんでした。そのため、インターネットに接続する(接続して名前解決する)為には、プロバイダーが提供するDNSサーバーのIPアドレスを、インターネットへ接続するクライアントに直接指定する必要があったのですが、プロバイダーのDNSサーバーのIPアドレスが変更になるとすべてのクライアントのDNSサーバーのIPアドレスを書き換える必要があります。また、名前解決の都度、クライアントはインターネット上のDNSサーバーに名前解決を要求する必要があり、そのレスポンスが悪くなると、Webページの表示に時間がかかるなどの弊害が生じます。

そこで、ルーターにDNSサーバーとしての役割を持たせ、クライアントにはルーターのIPアドレスをDNSサーバーのIPアドレスとして指定します。まず、クライアント側はプロバイダーのDNSサーバーを意識する必要がなくなります。ルーターは、クライアントから名前解決の要求を受け付けると、上位(プロバイダー)のDNSサーバーに対して名前解決の要求を行います。実際には、そこからさらに上位のDNSサーバーに対して名前解決を行いと繰り返し行いますが、その結果としてのIPアドレスをクライアントに返します。その際に、ルーターは結果をキャッシュとして保持します。次回のクライアントからのリクエストの際は、キャッシュを参照して、クライアント側からのリクエストに対して即座に応えることができて、名前解決も高速に!…というわけですが。

前置きが長くなりましたが、NURO光で提供されるZTE社製ルーター(とくに「F660T」)には、(おそらく)このDNSサーバーとしての機能としてがイマイチのようです。「イマイチ」とは曖昧ですが、前述のキャッシュが機能していないのか、複数のクライアントからの多数のリクエストに応えるのが遅いのか、とにかく「DNSサーバー」としての役割が「イマイチ」なのです。回線速度は申し分ないのに、名前解決がイマイチではストレスを感じるかもしれません。しかも、必ずしも「イマイチ」というわけでもないので、そこがまたストレスになるのです。

DNSパススルー機能を使用しよう

というわけで、もうZTE社製ルーターのDNSサーバー機能には頼って要られません。昔のように、クライアント側に直接プロバイダーが提供するDNSサーバーのIPアドレスを指定した方がまだマシです。しかし、ありとあらゆる末端の機器までもがインターネットに無線で接続させるこの御時世ですから、すべての機器(クライアント)に対してDNSサーバーのIPアドレスを設定するのを想像すると真っ暗になります。そこで、使用したい機能が「DNSパススルー」機能です。

「DNSパススルー」は、「F660T」もしくは「F660A」にログイン後、「ネットワーク」→「LAN」→「ダイナミックアドレス管理(IPv4)」、IPv6を使用している場合は「ダイナミックアドレス管理(IPv6)」で設定できます。「DNSサービスの設定を優先にする」をチェックし、保存すれば設定完了です。「DNSパススルー」とは、「パススルー」という文字列が示す通り、ルーターに接続したクライアントのDNSサーバーのIPアドレスは、ルーターのIPアドレスを通り越して、自動的にプロバイダーのDNSサーバーのIPアドレスが設定されます。ルーターは、プロバイダーのDNSサーバーのIPアドレスをクライアント側に教えるだけです。

クライアント側は名前解決をルーターのDNSサーバーに対して行うのではなく、直接プロバイダーが提供するDNSサーバーに対して名前解決を試みるようになります。なんだか「イマイチ」なルーターのDNSサーバーを介することがなくなり、名前解決の速度向上が期待できます。しかし、名前解決を行うのに、プロバイダー、つまり外側のDNSサーバーを経由する必要があることから、その分応答が遅くなる可能性はあります。(もちろん、プロバイダーのDNSサーバーもキャッシュを保持しています)

プロバイダーのDNSサーバーがあてにならなければPublic DNSを使用する

ざっくりと述べると、誰でも使用可能なGoogleやCloudflare社提供のオープンなDNSサーバーがあります。上記のDNSパススルーでも改善されない場合は、こちらをお試しください。

「アプリケーション」→「DNSサービス」→「DNS」と開きます。GoogleのPublic DNSを使用する場合、以下のアドレスを指定してください。下2つはIPv6用です。

8.8.8.8
8.8.4.4
2001:4860:4860::8888
2001:4860:4860::8844

同様にCloudflareのPublic DNSを使用する場合、以下のアドレスを指定してください。下2つはIPv6用です。

1.1.1.1
1.0.0.1
2606:4700:4700::1111
2606:4700:4700::1001

DNSサーバーのIPアドレスを指定しただけでは、クライアント側に認識させることができません。「DNSサービスの設定を優先にする」を指定した際にプルダウンから「DNSパススルー」ではなく「DNSアドレス指定」に変更します。IPv4、IPv6ともに行いましょう。

こうすることで、クライアントは名前解決の際にはPublic DNSに対して名前解決を行うことになり、安定した名前解決の速度が期待できます。

まとめ

今回ご紹介したポイントをまとめておきましょう。

  • DNSサービスとは、人間の理解のできる文字列をIPアドレスに変換するサービス
  • ルーターは、DNSサービスを兼ね備えている(上位のDNSサーバーの応答結果をキャッシュしておく機能がある)
  • NURO光のZTE社製ルーター「F660T」「F660A」はDNSサービスが「イマイチ」
  • 「DNSパススルー」を使用すればクライアントの設定を変更することなく、プロバイダーのDNSサーバーを指定できる
  • プロバイダーのDNSサーバーすら遅ければGoogleやCloudflareのPublic DNSを使う
comments powered by Disqus