妖怪ハウス内のネットワーク、すなわち妖怪ネットワークの改善作業は続いている。
さて、まともなスイッチングハブとルーターを導入したことで、妖怪ネットワークはだいぶマシになった。しかし、まだ妖怪ネットワークのパフォーマンスには、不満がある。厳密に計測したわけではないが、京都に住んでいたときよりも、パフォーマンスが劣っているように感じられる。何十個ものブックマークしたURLをタブで開いて閲覧するのが遅すぎる。
これはなぜだろうと考えたが、ふと、DNS lookupが遅いのではないかと考えた。帯域的には、何の問題もないはずである。ルーターの性能も十分である。実際、Webサイトのダウンロードは十分に早い。ダウンロードまでがなぜかもたつく。
調べてみようと、digを使ったところ、なぜか動かない。動かない理由は、DNSキャッシュサーバーとして動作しているYAMAHAのRTX810は、EDNSをサポートしていないからであった。digコマンドに+noednsオプションを指定した所、digは動いた。
しかし、RTX810越しにDNS lookupをしたのでは、正しく計測できない。digコマンドは、@に続けてサーバーを指定することで、直接サーバーに対してDNS lookupを飛ばしてくれる。さっそく、ISPが通知しているDNSサーバーについて調べてみた。すると、奇妙な特徴が判明した。
私のよく閲覧するWebサイトのドメイン名を引くのに、400msはかかる。あるドメイン名に対して、DNS lookupをしてから数秒間は、8msほどでlookup可能なのだが、数秒を過ぎると、また400msかかる。これは、京都に住んでいたときのISPの提供するDNSサーバーに比べて、あまりにも遅すぎる。
RTX810のキャッシュに載っている限りは、1msでDNS lookup可能だが、大本がこんなに遅くてはどうしようもない。
とりあえず試験的に、Googleの提供するPublic DNSである、8.8.8.8と8.8.4.4をRTX810に設定してみた。これにより、利用者側での設定変更の必要はない。Googleの提供する公開DNSサーバーで、普段閲覧するWebサイトのドメイン名を引いてみたところ、どのドメイン名でも、38ms程度の、非常に安定した時間がかかることが判明した。ほとんどのドメイン名のDNS lookupに400msかかる、ISPの提供するDNSサーバーよりは相当に優れているといえる。
妖怪ネットワークのもうひとつの問題は、WiFiだ。今は、BUFFALOに変えて、NECの無線LANルーターを使っているが、これも複数人で接続すると、とたんに不安定になる。やはり、業務用のしっかりした無線LAN APを使うべきだろうか。問題は、そのような業務用機器は、値段も高いということだ。
私は基本的に無線は使わないので、今すぐに解決しなければならない問題ではないが、長期的には解決したいところだ。
古いノートPCに、Deadwood(maradns)とsquidを入れるというのはどうでしょう。
ReplyDeleteいくらISPのがクソだからってDNSはGoogleに任せていい場所じゃないと私は思うけど管理者ポリシーの違いか
ReplyDelete気が向いたらopenNICのも試してみて
試験的にOpenNICに切り替え。
ReplyDeleteISP外のDNSサーバーを利用すると、CDNからの配信が遅くなるケースが出るという副作用がありますよ。
ReplyDeletehttp://ya.maya.st/d/201109b.html#p20110916_1_3
とか参照。
なるほど、とりあえずOpenNICは日本国内にDNSサーバーがあるが。
ReplyDeleteしかし、GoogleからOpenNICに変えたとして、OpenNICが信用できるかという問題に変わるだけなので、根本的な信頼の問題解決にはならない。
Namecoinのような仕組みが必要なのか。
squidはともかく、手元のLinuxサーバでDNSキャッシュサーバーを上げて、LAN内ではそこを使うって手はあると思いますけどね。
ReplyDeleteforwarder使うならISPのDNSサーバーを経由しますが、DNSキャッシュサーバとして動かすなら、ISPのDNSサーバーは経由しないわけで。
もっとも、自宅から、利用したいサイトのDNSサーバーへのアクセス自体が遅いと、あまり改善しない可能性もありますが。
それはTTLを尊重しないキャッシュサーバーを構築するということでしょうか。
ReplyDelete- NEC の無線LANルータは、無線LANブリッジとして使いましょう。民生品AtermシリーズはNATセッション数が少なすぎます。ブリッジとしてだけ使うなら結構いい働きをします。
ReplyDelete- LinuxでもBSDでもいいのでマシンを一台おいて、それにdhcpdとDNS recursive resolverをやらせましょう。
- 前者は isc-dhcpd, 後者は unbound か PowerDNS-recursor を使います。このローカルに立てた DNS recursive resolver の情報を DHCP 情報としてクライアントに配ります。
- つまり、ISP提供のDNS recursive resolver は使わず(当然 Google DNS も使わず) 自分で root DNS server から再帰的に名前解決するのです。
-「TTLを尊重しない」というのは意味が分かりませんね。
- squid を使うか使わないかは任意です。
自作ルーターはロマンですが、RTX810のパフォーマンスに勝つためには、けっこう面倒だと思いますがね。
ReplyDelete