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に見つかりませんでした...
おっと、あと数分検索すれば見つけられたでしょう!
OpenVPNクライアント構成にblock-outside-dns
を追加すると、この動作が修正されます。