ネットワークが不安定な環境でDNSをTCP接続して何とか通信する

スポンサーリンク

ネットワークが不安定な環境で、なんとかネット接続する為の緊急対処です。
DNSを UDP では無く、TCPで接続します。

パケットロストするような不安定なネットワーク環境では、DNSによる名前解決もうまくいかず、ブラウザでのネットアクセス等への影響は甚大です。

DNS は通常、高速性を持つUDPプロトコルで通信しますが、再送といったパケットロストへの対処を持つTCPプロトコルで通信出来れば、問題を回避できます。
従来、一定サイズを超える DNSクエリーはTCP接続でしたが、下記サイトによると、全てTCPアクセスしても良くなったようです。

TCPだけでDNSサーバにqueryできるようになってた:Geekなぺーじ

以下、方法です。

TCP & UDP リピーター、stone を使います。
stone で UDP の DNSパケットを、TCP接続に切り替えます。

stone は下記ページの、正式版の個所の stone version 2.3e for WindowsXP をダウンロードして使用します。
for WindowsXP となっていますが、Windows10 でも動作します。

Simple Repeater `stone’

コマンドプロンプトから次の書式で実行します。

stone -d DNSサーバのアドレス:53 53/udp

例えば、DNSサーバに 8.8.8.8 を指定します。

stone -d 8.8.8.8:53 53/udp

これで、DNSサーバに 127.0.0.1 を指定すれば、指定したDNSサーバ(ここの例では 8.8.8.8) に TCP接続でアクセスします。
下記サイトの手順で、優先DNSサーバーに 127.0.0.1 を指定して下さい。

DNSサーバーを設定する方法、自動取得に戻す方法 | JCOMサポート

今回の手順で正しく設定されているか、確認してみます。
次のサイトにアクセスして、[Test My DNS] を押します。
表示されたIPアドレスが 8.8.8.8 になっているか、確認して下さい。

Web-based DNS Randomness Test | DNS-OARC

なお、今回の方法は、不安定なネットワーク環境用に、DNSを高速性を持つUDPプロトコルの代わりに、パケットロストへの対処を持つTCPプロトコルで通信させています。
通常の問題無いネットワークでは、遅くなるだけでメリットが無いので、注意して下さい。

コメント

タイトルとURLをコピーしました