さまざまな方法で問題を解決できます。たとえば、ファイアウォールルールを一時的に追加して、VPNインターフェイスを除くすべてのインターフェイスの53ポートをブロックするか、VPN、127.0.0.1のDNSを除くすべてのインターフェイスにインストールします。
ただし、これらの方法は再起動に耐えられるように変更を加えるため、VPNの実行中またはVPNデーモンがクラッシュしたときに誤って電源を切断した場合、インターネットが機能しなくなります。 それについて良いことは何もありません。
ただし、一時的な変更のみを行い、インターネットなしでユーザーを放置しないより良い方法があります。
Windowsフィルタリングプラットフォーム
Windows Vista以降、WFPは、カーネルモードとユーザーモードの両方で機能する、モダンで軽量で便利なテクノロジであるNDIS、TDI、LSPなどのレガシートラフィック処理テクノロジの代わりになります。 Windowsファイアウォールの最新バージョンは、トラフィックをチェックする機能を備えたすべてのサードパーティファイアウォールやウイルス対策ソフトウェアと同様に、WFPを使用するだけです。カーネルモードドライバーは、パケットとデータストリームのみを表示、変更、およびログでき、ユーザースペースフィルターは、イーサネットフレームまたはIPパケットとそのヘッダーからの情報に基づいて、トラフィックをカーネルドライバーに渡す、ドロップする、遅延させる、または送ることができます。 ALEレベルで)送信元および送信先インターフェイス、プロセスID、exeへのフルパス、およびその他のインターフェイス。
WFPフィルターは、インストールしたソフトウェアが実行されなくなった場合でも、再起動後も存続する永続的なフィルター、プログラムの終了後に保存されるが再起動後ではない一時フィルター、およびプログラムの実行時にのみ機能するセッションフィルターを追加できますそれらの作成者はまだ満たされています。
セッションフィルターを備えたユーザーモードフィルターで十分ですが、次のことが必要です。
- UDP / TCPおよびIPv4 / IPv6を介して、すべてのインターフェイスからポート53へのすべての発信パケットを拒否する
- OpenVPN TAPインターフェースからのトラフィックを許可する
これはすべて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
。 プラグインではなく使用してください。