Windows 10でDNSリークを取り除く-OpenVPNプラグインとしてのユーザースペースWFPフィルター

既にご存知かもしれません 、Windows 10のDNSリゾルバーはすべてのインターフェイスにDNSクエリを並列に送信します。これは、いわゆるスプリットトンネリングが使用され、VPNトンネル内のDNSが内部リソースの内部アドレスを提供し、Windowsができない場合にしばしばまたは単に不便ですパブリックWi-Fiを介したDNSリークの場合のように、何が起こっているのかを理解し、さらにはセキュリティリスクを引き起こします。

さまざまな方法で問題を解決できます。たとえば、ファイアウォールルールを一時的に追加して、VPNインターフェイスを除くすべてのインターフェイスの53ポートをブロックするか、VPN、127.0.0.1のDNSを除くすべてのインターフェイスにインストールします。

ただし、これらの方法は再起動に耐えられるように変更を加えるため、VPNの実行中またはVPNデーモンがクラッシュしたときに誤って電源を切断した場合、インターネットが機能しなくなります。 それについて良いことは何もありません。

ただし、一時的な変更のみを行い、インターネットなしでユーザーを放置しないより良い方法があります。

Windowsフィルタリングプラットフォーム

Windows Vista以降、WFPは、カーネルモードとユーザーモードの両方で機能する、モダンで軽量で便利なテクノロジであるNDIS、TDI、LSPなどのレガシートラフィック処理テクノロジの代わりになります。 Windowsファイアウォールの最新バージョンは、トラフィックをチェックする機能を備えたすべてのサードパーティファイアウォールやウイルス対策ソフトウェアと同様に、WFPを使用するだけです。

カーネルモードドライバーは、パケットとデータストリームのみを表示、変更、およびログでき、ユーザースペースフィルターは、イーサネットフレームまたはIPパケットとそのヘッダーからの情報に基づいて、トラフィックをカーネルドライバーに渡す、ドロップする、遅延させる、または送ることができます。 ALEレベルで)送信元および送信先インターフェイス、プロセスID、exeへのフルパス、およびその他のインターフェイス。

WFPフィルターは、インストールしたソフトウェアが実行されなくなった場合でも、再起動後も存続する永続的なフィルター、プログラムの終了後に保存されるが再起動後ではない一時フィルター、およびプログラムの実行時にのみ機能するセッションフィルターを追加できますそれらの作成者はまだ満たされています。

セッションフィルターを備えたユーザーモードフィルターで十分ですが、次のことが必要です。

これはすべてOpenVPNのプラグインになりましたが、ソースコードは通常の実行可能ファイルとしてコンパイルできます。
github.com/ValdikSS/openvpn-fix-dns-leak-plugin

このプラグインを使用するには、リポジトリから.dllファイルをダウンロードし、構成ファイルの横のconfigフォルダーに配置して、次の行を追加します。
plugin fix-dns-leak-32.dll 
32ビットシステムおよびOpenVPNの32ビットバージョンの場合、または
 plugin fix-dns-leak-64.dll 
それぞれ、64ビットOpenVPNを備えた64ビットシステムの場合。

これで、Windows 10でパブリックWi-Fiを介してVPNを使用することを恐れることができなくなりました。

UPD: OpenVPN 2.3.9では、サードパーティのDNSをブロックするオプションblock-outside-dns 。 プラグインではなく使用してください。

Source: https://habr.com/ru/post/J268173/


All Articles