DnsChanger(DnsChanger/dnsChanger-desktop) は、Windows・macOS・Linux のDNSサーバーを、GUIの一覧から選んでワンクリックで切り替えられるオープンソースのデスクトップアプリです。ライセンスは MIT、実装は TypeScript+Electron+React、GitHub のスターは 約1,174(本稿執筆の 2026年7月12日 JST 時点)です。
DNSの切り替えは、OSの設定画面を開いてアダプターを選び、プライマリ・セカンダリのIPを打ち込む……という地味な手作業になりがちです。しかもその手順は Windows・Mac・Linux でまったく違います。DnsChanger は、この「OSごとにバラバラなDNS設定」を 1枚のGUIに統一し、応答速度(Ping)を見ながら選んでボタン一発で反映、切断すれば元に戻す、というところまでをまとめたツールです。本稿は公式リポジトリ(README/ソースコード)をもとに、① DnsChanger は結局何ができるのか、② 何を解決するのか、③ 何を代替できるのかを、内部の仕組みから導入手順まで噛み砕いて解説します。
- ・課題:DNSを変えたいが、設定画面もコマンドもOS(Win/Mac/Linux)ごとに違い、IPの手打ちと復帰が面倒。
- ・解決:一覧から選んでワンクリックで切替、Pingで速い先を確認、切断で元のDNSへ即復帰。3OSを同じUIで。
- ・中身:新しい魔法ではなく、各OS標準の
netsh/networksetup/resolv.confを叩くGUIラッパー。MITでコードも読める。 - ・注意:DNS変更は「名前を引く先」を変えるだけで、VPNや暗号化ではない。同梱リストの提供元は自分で確認を。
DnsChangerとは?DNSをワンクリックで切り替えるクロスプラットフォームOSS
DnsChanger のゴールは、README の言葉を借りれば「安全なアプリの中に、良質なDNSサーバーを集める」ことです。噛み砕くと、「どのDNSを使うか」を選ぶ・試す・戻すという一連の操作を、OSの差を意識せずにできるようにするアプリだと言えます。
技術スタックは Electron(デスクトップの外枠)+ React(画面)+ TypeScript です。Electron 製なので、同じコードベースから Windows・macOS・Linux 向けのインストーラが配布されており、README のダウンロード表ではいずれも「Stable(安定版)」と記載されています。CLI 版も存在し、リポジトリのトピックには cli が含まれます。
まず、DnsChanger が提供する機能を俯瞰しておきましょう。
ここで大事なのは、DnsChanger は「新しいDNSプロトコル」でも「独自のリゾルバ」でもないということです。やっていることは、OSのネットワーク設定にあるDNSサーバー欄を、GUIから書き換えているだけです。だからこそ動作が軽く、仕組みが理解しやすく、いつでも元に戻せます。「魔法の高速化ツール」ではなく、面倒な設定作業のショートカットとして捉えると、期待値を正しく持てます。
本サイトの読者が知りたい3つの問い——「① 結局何ができる/② 何を解決する/③ 何を代替できる」——に先に短く答えておくと、次のようになります。
・①できること:DNSサーバーを一覧やカスタムから選び、Pingで速さを確かめ、ワンクリックで切替・切断できる(Win/Mac/Linux共通のUIで)
・②解決すること:OSごとに違う設定画面やコマンドを覚えずに、DNSを手早く試し、失敗しても即座に元へ戻せる
・③代替すること:OS標準のネットワーク設定画面の手動操作、netsh / networksetup の手打ち、自作のDNS切替スクリプト
DnsChangerで何ができるのか:主要機能を1つずつ
ここからは、アプリの画面(前掲のスクリーンショット)に沿って、機能を1つずつ見ていきます。
サーバー一覧から選ぶ(同梱リスト+レート+タグ)
DnsChanger には、初期状態でいくつかの公開DNSリゾルバが同梱されています。ソースコード(servers.cosntant.ts)を見ると、各サーバーは「表示名・IPアドレスの配列・アイコン・レート(おすすめ度)・タグ・ピン留めフラグ」という構造で定義されています。たとえば Cloudflare は 1.1.1.1 / 1.0.0.1 の2つ、タグは Web といった具合です。タグは Gaming(ゲーム向け)・Web(一般Web)・Ai(AIサービス向け)などに分類されており、用途で絞り込む発想になっています。
重要なのは、この初期リストがリポジトリ上のJSON(servers_DB.json)からリモート更新される設計だという点です。アプリ側の「リスト更新」操作で最新のサーバー一覧を取り込めます。裏を返せば、どんなサーバーが並ぶかは提供元の管理次第ということでもあるので、後述する「注意点」で信頼性の考え方に触れます。
Ping計測で「速い先」を選ぶ
アプリ画面の右側には各サーバーの Ping(応答時間) が表示され、更新ボタンで測り直せます。DNSリゾルバは物理的な近さやサーバーの混み具合で応答速度が変わるため、「同じ用途なら、より速く応答する方を選ぶ」という判断ができます。前掲のスクリーンショットでは Google(8.8.8.8)に対して Ping が 97 と表示されています。数値は環境・回線・時間帯で変わるので、自分の環境で測ってから選ぶのが正しい使い方です。
カスタムDNSを追加する
同梱リストに載っていないリゾルバも、IPアドレスを直接入力してカスタム登録できます。社内のDNSや、自分で信頼している公開DNS(例:Cloudflareの 1.1.1.1、Googleの 8.8.8.8 / 8.8.4.4、Quad9の 9.9.9.9 など)を、名前を付けて手元に保存しておけます。素性の分かるIPだけを並べたい人には、この機能が実質的な主役になります。
ワンクリックで接続/切断(=元に戻す)
中央の大きなボタンが、DnsChanger のいちばんの体験です。押すと選択中のDNSがOSに反映され、「Connected」表示に変わります。もう一度押して切断すると、元の状態(自動取得=DHCP)に戻ります。ここが手動設定に対する明確な優位点で、「試してダメなら1クリックで戻せる」安心感があります。
自動起動・常駐、リストのリモート更新
DnsChanger は auto-launch を使ってOS起動時に立ち上げる設定を持ち、常駐させておけばいつでも切り替えられます。前述のとおりサーバー一覧はリモートのJSONから更新でき、アプリ内には運営からの告知(ads_db.json)を取得する仕組みもあります。README の「Privacy」では、アプリの分析はユーザー数とサーバーの利用数だけを数え、それ以外は追跡しないと明記されています。
以下に、主要機能を表で整理します。
| 機能 | 何ができるか | 補足 |
|---|---|---|
| サーバー一覧 | 同梱リストからDNSを選択 | レート・タグ(Gaming/Web/Ai)で分類、リモート更新可 |
| Ping計測 | 各サーバーの応答時間を測定 | 更新ボタンで測り直し、速い先を選ぶ |
| カスタムDNS | 任意のIPを登録 | 社内DNSや信頼する公開DNSを手元に保存 |
| ワンクリック切替 | 選択DNSをOSに即反映 | 「Connected」表示、切断で元へ復帰 |
| 自動起動・常駐 | OS起動時に立ち上げ | auto-launch、常駐でいつでも切替 |
| 3OS対応 | Win/Mac/Linuxで同一UI | Electron製、いずれもStable |
そもそもDNSを変えると何が変わるのか(前提知識)
DnsChanger を正しく使うには、「DNSを変えると何が起きて、何は起きないのか」を押さえておく必要があります。ここは中立に、事実だけを整理します。
DNS(Domain Name System)は、ドメイン名(example.com)をIPアドレス(93.184.x.x のような数字)に変換する、インターネットの電話帳です。ブラウザやアプリがサイトへアクセスするとき、まず「この名前のIPは?」という問い合わせが、OSに設定されたDNSリゾルバへ飛びます。この流れを図にすると次のようになります。
例: ブラウザ"] -->|"example.com は?"| B["設定中のDNS
リゾルバ"] B -->|"キャッシュにあれば即返す"| A B -->|"なければ辿る"| C["権威DNS
(名前の持ち主)"] C -->|"IPアドレス"| B B -->|"IPアドレス"| A
DNSリゾルバを別のものに変えると、この「問い合わせ先」が変わります。その結果、次のような点が変化しうります。
・応答速度:リゾルバの物理的な近さ・混雑・キャッシュのヒット率で、名前解決の初動が速くも遅くもなる
・キャッシュ内容:よく使われるリゾルバほど人気ドメインのキャッシュを持ちやすく、返しが速い傾向
・フィルタ/ブロックリスト:リゾルバによっては、マルウェア配布ドメインや広告ドメインを解決しない方針のものがある(例:ファミリー向けフィルタDNS)
・到達性:提供元やネットワーク経路によって、特定の名前を引けたり引けなかったりする差が出ることがある
一方で、DNSを変えても変わらないことを明確にしておくのが、このツールを誤解なく使う鍵です。
DnsChanger はあくまで「どのリゾルバに名前解決を任せるかを、手早く切り替えるツール」です。速度や到達性の体感を試すには手軽ですが、セキュリティやプライバシーの担保を期待する道具ではない、という前提で使うのが正確です。DNSクエリを「誰に見せるか」というプライバシーの観点まで踏み込みたい人は、ローカル完結を志向するOSSの考え方(たとえば ClaraVerse:LLMをローカル実行するプライバシー重視のAIプラットフォーム のような「データを手元に置く」設計思想)も、比較の材料になります。
DnsChangerの仕組み:OSごとにDNSをどう書き換えているのか
ここが、本サイトが公式READMEより一歩踏み込みたい核心です。DnsChanger は結局、OSの標準ツールを裏で呼んでいるだけ——これを知ると、ツールへの信頼度も、いざというときの手動対処もぐっと上がります。
アーキテクチャはシンプルで、Electron のメインプロセスに Platform という抽象があり、os.platform() の判定で Windows/Linux/Mac の実装が選ばれます。DnsService はこの Platform を通じて setDns() / clearDns() / getActiveDns() / flushDns() を呼びます。つまり 「DNSを設定する」という共通の意図を、OSごとの具体的なコマンドに翻訳する構造です。
具体的に、各OSで何をしているのかを見ていきます(いずれもソースコードのプラットフォーム実装より)。
Windows:netsh でインターフェースのDNSを静的設定
Windows 版は netsh を管理者権限(sudo-prompt によるUAC昇格)で実行します。プライマリDNSを静的設定し、セカンダリを追加する流れです。手動で同じことをするなら、管理者権限のコマンドプロンプトで次のように打ちます。
:: プライマリDNSを静的設定("イーサネット" は自分のインターフェース名に置き換え)
netsh interface ip set dns "イーサネット" static 1.1.1.1
:: セカンダリDNSを追加
netsh interface ip add dns "イーサネット" 1.0.0.1 index=2
:: 元に戻す(自動取得=DHCPへ)
netsh interface ip set dns "イーサネット" dhcp
DnsChanger の clearDns() は、この最後の dhcp へ戻す操作に相当します。現在のDNSは netsh interface ip show dns "イーサネット" で確認でき、アプリの getActiveDns() も同じ情報をパースしています。
macOS:networksetup でサービスごとに設定
macOS 版は networksetup -setdnsservers を Wi-Fi と Ethernet の両方に対して実行します。現在のDNSは scutil --dns から読み取り、キャッシュのフラッシュには mDNSResponder の再起動を使います。手動なら次の通りです。
# Wi-FiのDNSを設定(複数指定はスペース区切り)
sudo networksetup -setdnsservers Wi-Fi 1.1.1.1 1.0.0.1
# 現在のDNSを確認
scutil --dns | awk '/nameserver/ { print $3 }'
# DNSキャッシュをフラッシュ
sudo killall -HUP mDNSResponder
# 元に戻す(自動取得へ)
sudo networksetup -setdnsservers Wi-Fi Empty
ソースの clearDns() は既定のリゾルバ(実装上は 8.8.8.8 / 8.8.4.4)へ戻す作りになっています。手動で完全に自動取得へ戻したい場合は、上記のように Empty を指定します。
Linux:/etc/resolv.conf を書き換え、systemd-resolve でフラッシュ
Linux 版は /etc/resolv.conf に nameserver 行を書き込み、必要に応じてサービスを再起動、キャッシュは systemd-resolve --flush-caches でフラッシュします。手動なら次の通りです。
# resolv.conf にリゾルバを書き込む(要 root)
printf 'nameserver 1.1.1.1\nnameserver 1.0.0.1\n' | sudo tee /etc/resolv.conf
# 現在のDNSを確認
grep nameserver /etc/resolv.conf | awk '{print $2}'
# キャッシュをフラッシュ
sudo systemd-resolve --flush-caches # 新しめの環境では: sudo resolvectl flush-caches
なお /etc/resolv.conf は systemd-resolved や NetworkManager に管理されている環境も多く、直接書き換えが上書きされる場合があります。ディストリビューションによって挙動が異なる点は、DnsChanger 経由でも手動でも共通の注意事項です。
このように、DnsChanger の実体は 「3つのOSそれぞれの正しいコマンドを、UIから安全に呼び出す」 ことに尽きます。だからこそ、アプリが手元になくても、上のコマンドさえ分かっていれば同じことができます。逆に言えば、DnsChanger の価値は「これらの差異を覚えなくてよい」ことに集約されます。
導入手順:ダウンロードから切替・元に戻すまで
実際に試すのは3ステップです。特別な依存はなく、各OS向けのインストーラを入れるだけで動きます。
① ダウンロードとインストール
GitHub の Releases ページ から、自分のOS向けのインストーラ(Windows/macOS/Linux)を取得します。README にはウイルス対策のスキャン結果(VirusTotal)へのリンクも掲示されています。配布元が公式リポジトリのReleasesであることを確認してから入れましょう。
② DNSを選ぶ(Pingで確認)
起動したら、上部のドロップダウンから使いたいDNSを選びます。同梱リストから選んでもよいですし、素性の分かるIPをカスタム登録しても構いません。Ping表示で応答時間を測り、速い候補を選びます。
③ 接続する(切断で復帰)
中央の大きなボタンを押すと、DNSがOSに反映されます。DNS変更はネットワーク設定の書き換えなので、ここで管理者昇格(Windowsは UAC、macOS/Linux は sudo 相当)が求められます。切り替え後は、ブラウザやターミナルで名前解決が意図通りか確認しましょう。
# Windows: 反映確認とキャッシュクリア
nslookup example.com
ipconfig /flushdns
# macOS: 現在のリゾルバを確認
scutil --dns | awk '/nameserver/ { print $3 }'
# Linux: 現在のリゾルバを確認
resolvectl status | grep 'DNS Servers'
うまくいかない、あるいは元に戻したい場合は、アプリの切断ボタンを押すだけです。clearDns() が走り、自動取得(DHCP)や既定のリゾルバへ戻ります。「戻す操作が1クリック」という点が、手打ちで設定して戻し忘れる事故を防いでくれます。
手動設定・他ツールとの比較:DnsChangerはどこがラクなのか
DnsChanger の立ち位置を、他の選択肢と並べて整理します。DNSを変える方法は他にもありますが、それぞれ手間と可搬性のトレードオフが違います。
| 方法 | 手間 | OS間の可搬性 | 速さ比較 | 元に戻す |
|---|---|---|---|---|
| OS標準の設定画面 | 中(画面を辿ってIP手打ち) | 低(OSごとに操作が別) | なし | 手動で戻す |
netsh/networksetup 手打ち |
高(コマンドを覚える) | 低(OSごとにコマンドが別) | なし | 手動コマンド |
| 自作の切替スクリプト | 初期は高・以後は低 | 中(OSごとに分岐が要る) | 自前実装次第 | スクリプト次第 |
| DnsChanger | 低(選んで1クリック) | 高(3OSで同一UI) | Ping内蔵 | 1クリックで復帰 |
コマンドに慣れた人にとって、netsh や networksetup を叩くのは難しくありません。しかし「複数のDNSを日常的に試し比べる」「WindowsもMacも使う」「戻し忘れをなくしたい」といった状況になると、GUIで一元化されている利点が効いてきます。逆に、サーバー1台に固定したいだけ・二度と変えないなら、OS標準の設定で十分で、常駐アプリを増やす必要はありません。DnsChanger が向くのは、「DNSを気軽に切り替えて試したい」というニーズです。
使う前に知っておくこと:制約・注意点
最後に、導入前に理解しておくべき制約と注意点を、中立にまとめます。ここを押さえておけば、期待外れや思わぬリスクを避けられます。
・管理者権限が必要:DNSの変更はネットワーク設定の書き換えなので、Windowsは UAC 昇格、macOS/Linux は sudo 相当の権限が要る。アプリが切替時に要求する
・同梱サーバーの提供元を確認する:初期リストはリモート更新される公開リゾルバの集まり。名前解決のクエリは選んだ提供元に見えるため、素性が不確かなものより、Cloudflareなど広く知られた提供元や、自分が信頼するIPのカスタム登録を優先するのが安全
・DNS変更=暗号化・匿名化ではない:前述のとおりVPNでもプロキシでもない。プライバシー保護が目的なら、DoH/DoTやVPNなど別の仕組みを検討する
・環境によっては上書きされる:Linuxの systemd-resolved/NetworkManager 管理下では /etc/resolv.conf の直接書き換えが効かないことがある。企業のMDM管理端末ではDNS設定がポリシーで固定されている場合もある
・常駐アプリが増える:自動起動・常駐を有効にすると、その分の常駐プロセスが増える。頻繁に切り替えないなら常駐は切ってもよい
うまく反映されないときの切り分け
DNSを切り替えたのに体感が変わらない・意図した名前解決にならない、というときは、次の順で切り分けると原因にたどり着きやすくなります。
・ブラウザのキャッシュを疑う:多くのブラウザは独自にDNS結果や接続をキャッシュする。OS側のキャッシュをフラッシュしても変わらないときは、ブラウザを再起動するか、シークレットウィンドウで試す
・OSのDNSキャッシュをフラッシュする:Windowsは ipconfig /flushdns、macOSは sudo killall -HUP mDNSResponder、Linuxは sudo resolvectl flush-caches。切替直後は旧リゾルバの結果が残っていることがある
・実際に引けているリゾルバを確認する:nslookup example.com(Win/Mac/Linux共通)や scutil --dns(macOS)、resolvectl status(Linux)で、期待したDNSが使われているかを目で確かめる
・管理下の環境かを疑う:会社支給端末やVPN接続中は、DNSがポリシーやVPN側で固定・上書きされることがある。この場合はアプリの設定が優先されない
・DNSの問題か回線の問題かを分ける:名前解決は速いのにページ表示が遅いなら、原因はDNSではなく回線やサーバー側。DNS変更で解決できる範囲は「名前を引くまで」だと切り分ける
この切り分けは DnsChanger 特有の話ではなく、DNSを手動で変えたときにも共通で役立ちます。ツールはあくまで設定の書き換えを代行しているだけなので、トラブル時の考え方は「手動で設定した場合と同じ」だと捉えると、原因を落ち着いて追えます。
改めて、冒頭の3つの問いへの答えを整理します。① できることは、Win/Mac/LinuxのDNSを一覧やカスタムから選び、Pingで確かめてワンクリックで切替・復帰すること。② 解決することは、OSごとにバラバラなDNS設定の手間と、戻し忘れの事故。③ 代替することは、OS標準のネットワーク設定画面の手動操作や、netsh/networksetup の手打ち、自作の切替スクリプトです。DNSを日常的に触るなら、手元に置いておいて損のないOSSと言えるでしょう。
参照ソース
・DnsChanger/dnsChanger-desktop(公式GitHubリポジトリ・README/ソースコード)
・DnsChanger 公式サイト(dnschanger.github.io)
・What is DNS?(Cloudflare Learning Center・DNSの基礎)