ターゲット:tunnelblickを使用するmacOS上のopenvpnクライアントが最初にVPNプロバイダーのDNSサーバーを使用するようにしたいのですが、そこでDNS名を解決できない場合は、ローカルDNSサーバーを使用する必要があります。
状況:ローカルDNSサーバーはLAN上のマシンの名前/ IPを提供し、WAN上のマシンの名前のリモートDNSサーバー上の名前も解決します。 VPNプロバイダーに接続すると、openvpnサーバーはdhcp-optionDNSをプッシュします。この状況では、プロバイダーのopenvpnサーバーに接続されている場合、ローカルマシンのDNS名は解決されません。これは明らかに人が望んでいることではありません。最近のmacOSは/etc/resolv.confを使用していないことを認識しているため、ブラウザを使用してローカルマシンまたはリモートマシンにアクセスし、dnsleaktest.comを使用して解像度をテストして使用されているDNSサーバーを確認しています。
問題:「dhcp-optionDNS」を使用すると、VPNDNSサーバーよりも優先されます。その後、ローカルマシン名は解決されますが、WANで名前を解決する場合、これはローカルDNSサーバーによっても実行されます。これはDNSリークを表します(dnsleaktest.comを使用して確認できます)。これも明らかに人が望んでいることではありません。
残念ながら、pull-filter accept "dhcp-option DNS" before or after "dhcp-option DNS"は、DNSサーバーが照会される順序に影響しません(!)。実際、照会されるDNSサーバーは1つだけのようです。答えがNXDOMAINであっても、他のDNSサーバーは照会されません。
VPN DNSサーバーを最初に照会したいのですが、失敗した場合は、ローカルDNSサーバーを照会する必要があります。 DNSリークの可能性は小さい/ゼロである必要がありますか?
全体的に、私はここで立ち往生しています。ターゲットステートメントが説明するような方法でtunnelblickを使用する方法を見つけていないようです。これが不可能であることを確認できますか、それとも解決策を提供できますか?
はい、私はさまざまなdhcp-optionを試しましたが、これらのリードはここにあります。その間に私はmacOSの解決策を見つけました:
次の内容で/ etc/resolver/lanを作成します。
domain lan
nameserver 10.0.1.1 <- the local dns server
search_order 1
search lan <- important! otherwise you must append .lan every time by yourself
これで、システムは私が望んでいたとおりに動作します。ローカルマシン名は「.lan」を追加することなく適切に解決され、外部名はVPNプロバイダーのDNSサーバーを介して解決されます。 DNSリークはありません。