kazeno memo

メモとか

OpenNICとDNSCryptを使いDNSの漏洩を防ぐ

DNSCrypt はユーザーと DNSゾルバの間の DNS トラフィックを暗号化するソフトウェアです。盗聴や改竄、中間者攻撃を防ぎます。

DNSCrypt - ArchWiki

 

OpenNICとは、IANAやIANAから権限を委譲されているNIC(ドメイン名を管理する民間組織や政府機関)の代わりとなる、NICおよびDNSルートである。

OpenNIC - MonoBook

 

DNSCryptを使うには対応したサーバーが必要で、このページ[dnscrypt.org]で対応しているサーバを閲覧できる。
OpenDNSなどが対応しているが、Ciscoにロギングされるのは嫌なので、ここでは「IPs are not logged(IPは記録しない)」と謳うOpenNICのサーバ"ns1.any.dns.opennic.glue"と"ns3.any.dns.opennic.glue
"を使用する。

 

OpenNICのサーバ情報はこのページ[opennicproject.org]で閲覧できる。
表の左にある旗のマークはそれぞれ

⚑青・ログの匿名化(Anonymized logs)」

⚑紫・ログを保存しない(No logs kept)」

⚑黄・DNSCrypt対応(DNScrypt)」

⚐白・許可されたユーザーのみの接続(Whitelisting)」

⚑黒・ブロックリストのドメイン(.bitなど)をブロック(Blocklist)」

を表す。なお、Whitelistingのサーバを使用する場合、自分のIPアドレスホワイトリストに登録する必要がある。
ホワイトリストへの登録方法はこの記事で説明している。

 

DNSCryptの入手

https://download.dnscrypt.org/dnscrypt-proxy/から環境にあったファイルをダウンロードして、解凍する。
Windowsの64bitなら「LATEST-win64-full.zip」か「dnscrypt-proxy-win64-full-x.x.x.zip(xはバージョン)」

 

DNSの設定

 

1.コントロールパネルから「ネットワークと共有センター」→「アダプターの設定の変更」へ移動
f:id:ecatel:20180106205711p:plain

2.使用中のアダプタを「右クリック」→「プロパティ」を選択
f:id:ecatel:20180106205705p:plain

3.「ネットワーク」タブの「インターネット プロトコル バージョン 4 (TCP/IPv4)」をダブルクリック
f:id:ecatel:20180106205701p:plain

4.「全般」タブの「次のDNSサーバーのアドレスを使う」を選択し、「優先DNSサーバー・代替DNSサーバー」にそれぞれDNSIPv4アドレスを入力後、「OK」をクリック(今回は優先に185.121.177.177、代替に169.239.202.202を設定)
f:id:ecatel:20180106205657p:plain

5.「インターネット プロトコル バージョン 6 (TCP/IPv6)」をダブルクリックし、4.と同様にDNSIPv6アドレスを設定し「OK」をクリック(今回は優先に2a05:dfc7:5::53、代替に2a05:dfc7:5353::53を設定)
f:id:ecatel:20180106205653p:plain

6.「プロパティ」ウィンドウで「OK」をクリック

7.再起動するか、コマンドプロンプトで「ipconfig /flushdns」を実行するなどしてDNSキャッシュをクリアする。(「ipconfig /flushdns」する場合はブラウザも再起動したほうがいいかも)
参照:WindowsのDNSキャッシュをクリアする方法 - ぼくんちのTV 別館

8.完了

OpenNICのDNSに変更されているかを確かめるために、OpenNIC経由でしかアクセスできない「grep.geek」へアクセスする。

 

DNSCryptの設定

Pathを通しておくと便利なので事前に設定しておく。(今回の場合、「dnscrypt-proxy.exe」が存在するフォルダのパスを追加)

参照:Windows 環境変数 Path の設定方法

 

DNSCrypt対応サーバへの設定は以下の構文で可能

dnscrypt-proxy -r $IP:$PORT -N $NAME -k $KEY

 

今回は例として"ns1.any.dns.opennic.glue"の設定をする。

  • IPは 185.121.177.177
  • PORTは 5353(正確には54, 443, 1053, 1194, 5353, 8080, 27015のいずれか)
  • NAMEは 2.dnscrypt-cert.dnsrec.meo.ws
  • KEYは 1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:
    13E5:35A3:18B2:28A5

なので、コマンドプロンプトで以下を実行

dnscrypt-proxy -r 185.121.177.177:5353 -N 2.dnscrypt-cert.dnsrec.meo.ws -k 1A6A:D0A3:2B4C:5A61:A695:D153:670D:69AB:1690:3F9E:C3F7:F64F:13E5:35A3:18B2:28A5


実行後に

[NOTICE] Proxying from 127.0.0.1:53 to 185.121.177.177:5353


と表示されていれば成功となる。
失敗する場合はコマンドプロンプトを管理者権限で実行したり、他のサーバで試そう。

 

Link

OpenNIC Project OpenNIC Project

DNSCrypt DNSCrypt - Official Project Home Page

オルタネートルート(OpenNICのような独立DNSルート) オルタネートルート - Wikipedia