web-dev-qa-db-ja.com

WindowsクライアントでOpenVPNを使用する場合の存在しないドメインのDNSリーク

WindowsクライアントをWi-Fiホットスポットに接続しています。

Wireless LAN adapter Wireless Network Connection 2:
   Connection-specific DNS Suffix  . :
   Description . . . . . . . . . . . : Atheros Wireless Network Adapter
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 192.168.43.110(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.0
   Default Gateway . . . . . . . . . : 192.168.43.1
   DHCP Server . . . . . . . . . . . : 192.168.43.1
   DNS Servers . . . . . . . . . . . : 192.168.43.1
   NetBIOS over Tcpip. . . . . . . . : Disabled

Wi-Fiホットスポットには独自のDNSがあり(上記のように)、NXDOMAINを広告の「検索ページ」に解決します。これは望ましくない動作です。この悪意のあるDNSサーバーは、最初はWi-Fiのキャプティブポータルを通過するために必要なので、静的DNSを設定してオーバーライドすることはできません。

次に、OpenVPNを使用してホームネットワークに接続します。サーバー構成:

server 10.1.1.0 255.255.255.0
proto udp
dev tun21
Push "route 10.1.0.0 255.255.254.0"    (my home IP subnet)
Push "dhcp-option DOMAIN local"
Push "dhcp-option DNS 10.1.0.8"
client-to-client

OpenVPNサーバーは私のホームゲートウェイである10.1.0.1にあります。

DNSサーバーは10.1.0.8の先駆者です。

クライアント構成:

client
dev tun
proto udp
remote mydynip.net
resolv-retry infinite
nobind
persist-key
persist-tun
remote-cert-tls server
dhcp-option DNS 10.1.0.8    (I tried adding this for redundancy, has no effect)

OpenVPN接続は成功します:

Ethernet adapter Local Area Connection 3:
   Connection-specific DNS Suffix  . : local
   Description . . . . . . . . . . . : TAP-Windows Adapter V9
   DHCP Enabled. . . . . . . . . . . : Yes
   Autoconfiguration Enabled . . . . : Yes
   IPv4 Address. . . . . . . . . . . : 10.1.1.6(Preferred)
   Subnet Mask . . . . . . . . . . . : 255.255.255.252
   Default Gateway . . . . . . . . . :
   DHCP Server . . . . . . . . . . . : 10.1.1.5
   DNS Servers . . . . . . . . . . . : 10.1.0.8

これで、Windowsクライアントが存在するドメインを検索すると、すべてが正常に機能します。例えば:

>ping mypc.local
Pinging mypc.local [10.1.0.2] with 32 bytes of data:
Reply from 10.1.0.2: bytes=32 time=60ms TTL=127
...

...そして私はこれをpiholeクエリログに表示します(すべて正常):

Time            Type  Domain      Client         Status         Reply
2019-07-16...   A     mypc.local  gateway.local  OK (forwarded) IP (2.5ms)

ただし、存在しないドメインを検索すると、プレフィックスが.localであっても、ドメインは広告ページ(!)に解決されます。

>ping nonexist.local
Pinging nonexist.local [198.xx.xx.xx (!!!)] with 32 bytes of data:
...

クエリが最初にpiholeを通過します:

Time            Type  Domain          Client         Status         Reply
2019-07-16...   A     nonexist.local  gateway.local  OK (forwarded) NXDOMAIN (2.5ms)

...しかし、NXDOMAINを受信すると、WindowsクライアントはWi-Fiホットスポットの悪意のあるDNSサーバーを試行するようです。この動作を停止するにはどうすればよいですか?


私が試したもの:クライアントにredirect-gateway def1を追加すると、OpenVPN構成はVPNを介してすべてのトラフィックを適切にリダイレクトしますが、DNSにはnoの影響はまったくありません上記の動作。これにより、ホームゲートウェイ(gateway.local)が広告の「検索ページ」に効果的に接続し、OpenVPNトンネルを介してWindowsクライアントに転送されます。ただし、この時点で、DNSクエリはすでにWi-FiホットスポットのDNSサーバーにリークされています。


考えられる解決策は次のとおりです。

Windowsクライアントにpiholeでblockedされているドメインを検索させると、Windowsは要求をWi-FiホットスポットのDNSに転送しません。

>ping googletagservices.com
Ping request could not find Host...

... piholeクエリログ:

Time            Type  Domain      Client         Status             Reply
2019-07-16...   A     goo....com  gateway.local  Blocked (gravity)  - (0.5ms)

これは、piholeがアドレスを0.0.0.0に解決し、Windowsクライアントがそれに満足しているように見えるためです。

問題は、存在しないすべてのドメインにNXDOMAINではなく0.0.0.0で応答するようにpiholeを取得するにはどうすればよいですか。それを行うオプションがdnsmasqに見つかりませんでした...

1
Duke Nukem

おっと、あと数分検索すれば見つけられたでしょう!

OpenVPNクライアント構成にblock-outside-dnsを追加すると、この動作が修正されます。

1
Duke Nukem