Mac OS X Mountain Lion-DNS解決は、ダイヤルアップ接続経由のVPNで間違った順序を使用します


23

MacBookをMac OS X 10.8.2で使用しており、VPN経由で会社のネットワークに接続しています。LANまたはWLANを介してVPN接続を確立する場合、すべてがうまく機能します。ただし、ダイヤルアップ接続(Huawei HSDPA USB Stick)を使用すると、ホスト名がアプリケーション(Webブラウザーなど)で正しく解決されません。などのコマンドラインツールhost nameはIPアドレスを正しく解決しますping nameが、解決しません。

使用しscutil --dnsて、WLAN経由で接続するときとダイヤルアップするときにDNS構成をダンプしました。検索順序には顕著な違いがあります。

connecting using WLAN:

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #3
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #4
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #5
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #6
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #7
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #8
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.1.1
  if_index : 4 (en0)
  flags    : Scoped
  reach    : Reachable,Directly Reachable Address

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

ppp0接続はVPN接続です。ご覧のとおり、2つのサーバーが接続されており、コマンドラインとアプリケーションで正しく応答しています。

Connecting via UMTS:

resolver #1
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #2
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 100000

resolver #3
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  reach    : Reachable,Transient Connection
  order    : 200000

resolver #4
  domain   : local
  options  : mdns
  timeout  : 5
  order    : 300000

resolver #5
  domain   : 254.169.in-addr.arpa
  options  : mdns
  timeout  : 5
  order    : 300200

resolver #6
  domain   : 8.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300400

resolver #7
  domain   : 9.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300600

resolver #8
  domain   : a.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 300800

resolver #9
  domain   : b.e.f.ip6.arpa
  options  : mdns
  timeout  : 5
  order    : 301000

DNS configuration (for scoped queries)

resolver #1
  nameserver[0] : 192.168.80.10
  nameserver[1] : 192.168.80.24
  if_index : 7 (ppp1)
  flags    : Scoped
  reach    : Reachable,Transient Connection

resolver #2
  nameserver[0] : 139.7.30.126
  nameserver[1] : 139.7.30.125
  if_index : 6 (ppp0)
  flags    : Scoped
  reach    : Reachable,Transient Connection

今回は、ppp1がVPN接続で、ppp0がUMTS接続です。コマンドの応答時間(存在しないホスト名foo.bar.localping使用)からhost、スコープ付きクエリ構成を使用するas最初のリゾルバーチェーンを使用することを推測します。ping「不明なホスト」を返すのに5秒かかり、hostすぐに戻ります。pingがmdnsリゾルバーの5秒のタイムアウトに達すると仮定します。

モデムを介してVPN経由でダイヤルインするときに壊れたDNSルックアップに関する問題を解決するには、リゾルバーの順序を変更する必要があります。これまでのところ、私はこれを行う方法を見つけていません。

どんなアイデアでも歓迎します。

回答:


7

Macでも同じ問題が発生しましたが、修正後、FortiClient(VPNクライアント)が原因であることがわかりました。FortiClientが切断された場合でも、scutilにDNSが表示されていました。

私にとっての解決策は:

scutil
> list ".*DNS"

これにより、すべてのDNS構成のリストが表示され、次のようになります。

subKey [0] = State:/Network/Global/DNS <br>
subKey [1] = State:/Network/MulticastDNS<br>
subKey [2] = State:/Network/OpenVPN/DNS<br>
subKey [3] = State:/Network/OpenVPN/OldDNS<br>
subKey [4] = State:/Network/PrivateDNS<br>
subKey [5] = State:/Network/Service/forticlientsslvpn/DNS <br>

それぞれを確認するには、次を実行します:(問題のあるものが見つかるまで)

> get key_name
> d.show

…そしてそれを修正するために実行します:

> get key_name
> d.remove ServerAddresses
> set key_name

これは私のマシンでどのように見えるかです:

> get State:/Network/Service/forticlientsslvpn/DNS 
> d.show
<dictionary> {
  ServerAddresses : <array> {
    0 : 192.168.30.6
    1 : 192.168.30.15
  }
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> d.remove ServerAddresses
> d.show
<dictionary> {
  SupplementalMatchDomains : <array> {
    0 :
  }
  SupplementalMatchOrders : <array> {
    0 : 100000
  }
}
> set State:/Network/Service/forticlientsslvpn/DNS
> exit

3

[ネットワーク]設定ペインでDNSエントリの順序を変更してみてください。

  1. [ システム環境設定] →[ ネットワーク]を開きます

  2. 左側のリストでネットワークサービスを選択します。

  3. 左下隅のロックを使用して、設定ペインのロックを解除します。

  4. [ 詳細設定... ]をクリックし、[ DNS ]タブを選択します。

  5. DNSサーバーを上下にドラッグして順序を変更します。


2
これは質問に対する答えを提供しません。投稿者に批評または説明を依頼するには、投稿の下にコメントを残します-自分の投稿にいつでもコメントできます。十分な評判を得たら、投稿コメントできるようになります。
GRG

それは奇妙なコメントです。ポスターは、彼が質問でこれを試みたかどうかについて言及しませんでした。同じセットアップを使用しないとわかりにくい。
デシベル

2
言葉どおり、説明の要求として書かれています-回答は回答として書かれるべきです コメントは、明確化を要求するのに最も適切な場所です。この回答は、低品質のポストレビューキューにあり、私の意見では、ストックコメントが最も適切であると思われました。確かに、これを答えと言い換えると(およびスクリーンショットや適切にフォーマットされた指示リストなどの詳細を追加すると)、これは完全かつ正当な答えになるでしょう。
GRG

ばかげてる。あなたはレインマンですか?それは受動的で謙虚な方法で表現された答えでした(質問をしている人-かなり熟練しているように見える人-はおそらくそれを試したが、質問でそれを言及するのを忘れたので、それは非常に明白です)私の提案を自分で試してみた場合、OPと同じくらい熟練した人にとっては、含まれているステップ(システム環境設定->ネットワーク)を超えるステップはほとんど必要ないことに気付くでしょう。
db

私が言ったように、これは単に私の意見です。ちなみに私はあなたを落胆させた人ではありませんでした。回答を編集して、手順の詳細を追加しました。不適切と思われる場合は、編集をロールバックしてください。
GRG

2

回避策を見つけました:VPN DNSは引き続き無視され、3GドングルDNSのみが使用されますが、VPN DNSを3Gインターフェイスの下のリストに追加するだけでうまくいきます...主な問題は、3G接続マネージャーが毎回構成を上書きすることです[接続]をクリックすると、3Gドングルで無線を有効にするための接続マネージャーが必要になります...そこで、両方のソリューションを1つに混合しました。

  1. VPNに接続し、DNSを書き留めます(リストに2つあります)。ネットワーク設定→詳細設定→DNSタブで確認できます。VPNを切断します。DNSは接続時に動的に割り当てられるため、VPNに接続する必要があります…

  2. 3Gに接続して同じことを行います。DNSを紙に書きます。次に、3Gを切断します。

  3. [ネットワーク設定]に移動し、[3Gインターフェイス]→[詳細]→[DNS]タブをクリックし、DNSテーブル(通常、接続されていないため空になります)の下で[+]をクリックします。すべてのDNSサーバーを追加します(最初に3Gからのものを、次にVPNを追加します)。[OK]をクリックして、適用します。

  4. これ以降、3Gに接続するには、USBを接続し、3Gカバレッジが得られるまで待ちます(3G接続マネージャーを開く必要があります)、付属の接続マネージャーを使用して接続しないでください。そして、自動的に接続する場合は、設定に移動し、そのチェックを外します。あなたは、そのマネージャを必要とするだけのラジオをオンにするには USBドングル、他には何インチ

    3Gマネージャーの「接続」をクリックすると、3Gインターフェースの構成が上書きされるため、手順3を再度繰り返す必要があります。

  5. [ネットワーク]→[設定]に移動し、3Gインターフェイスをクリックします。次に、接続をクリックします。「パブリック」DNSとVPN DNSの両方を含む(動的に受信されるのではなく)設定されたDNSサーバーを使用して3Gに接続します。

  6. VPNに接続します。期待どおりに動作します。

次のことに注意してください。

  • VPN DNSが変更された場合は、手動で変更する必要があります。これは、ネットワークDNS→インターフェース→詳細設定→DNSタブで簡単に確認できます。これは、VPN DNSがまだ動的にインターフェースに割り当てられているためです(OS Xでは無視されます)。

  • 3G DNSが変更される可能性が低い場合は、手動で変更する必要があります。何か問題が発生してナビゲートできない場合は、3G接続マネージャーを介して「接続」をクリックし、動的に割り当てられているDNSを確認する必要があります。ステップ3に戻って再構成する必要があります。


2

私は長い間同じ問題を抱えていましたが、今は自分に合った解決策を見つける時間がありました。DNSサーバーの順序は変更しませんでしたが、VPNの背後にあるDNSサーバーを永続的に使用しています。

  1. ダイヤルアップ経由で接続します。

  2. VPN接続を接続し、VPN接続→詳細設定→DNSからDNSサーバーIPと検索ドメインをコピーします。

  3. VPN接続を切断します。

  4. VPNサーバーのping <name>または<hostname>IPを書き留めます。

  5. ダイヤルアップ接続を切断します。

  6. ダイヤルアップ接続を複製します(たとえば、「3G for VPN」と名付けます)。

  7. IPと検索ドメインをダイヤルアップ接続の[DNS]タブに入力します。それらは保存され、永久に使用されます。

  8. 新しいダイヤルアップ接続を介して接続します。

  9. これで、ネームサーバーにアクセスできなくなります(VPNによって保護されているため)-VPN接続のサーバーアドレスを編集する必要があります。ホストをIPに置き換えます。

  10. VPN接続経由で接続すると、それを使用できるはずです。

注:一般に、ホスト名は変更されませんが、IPは変更できます。いつか機能しない場合は、もう一度手順を実行してください...


こんにちはアレクサンダー、それは有望なアプローチのように聞こえた。しかし、DNSリゾルバの順序はかなり良く見えましたが、私には運がありませんでした。IT部門で再度確認する必要があります。
user1248552

1

あなたが言ったことは私にヒントを与えたので、vpn接続のdns ipをメイン接続のdnsリストに追加しました(空想はありません、ネットワーク設定のグラフィカルインターフェイスを使用するだけです)扱っているものは異なりますが、それは私と一緒に働いた。


1

これは10.13.0でも発生しています

Appleとバグレポートを開きました。「ping internalhostname」は機能しますが、「host internalhostname」または「nslookup internalhostname」がスプリットトンネルVPN(Cisco IPSecベースまたはIKEv2)で失敗することは正常ではありません。

また、気づいたように、IKEv2接続だけでなくCisco IPsec接続も、L2TP / IPsecとは異なり、「サービス順序の設定」で優先順位を付けることはできません。

もう1つ取り上げたいのは、スプリットトンネルCisco IPSecまたはIKEv2 VPNでは、「scutil --dns」で表示されるにもかかわらず、詳細設定にDNSサーバーまたは検索ドメインが表示されないことです。L2TP / IPsec VPNはこの情報をうまく表示します。

何かを与える必要があり、Appleは何らかの説明/修正を提供する必要があります。


これが2017年末のmacOSの現在の状況であることがわかりました。ドメインで構成された分割DNSは尊重されません。scutil --dns上記のコマンドを実行すると、VPNからのDNSは常に最後であり、正しく設定されていても、検索ドメインには使用されていないようです。
mcdado

0

スプリットDNSがVPNルーターで正しく設定されている場合でも、リモートネットワークのDNSサーバーの代わりにローカルDNSサーバーが常に使用されるバグがあるため、Lion / Mountain Lionでは動作しません。

ただし、Cisco ASA IPSECルーターを使用している場合は、VPN接続を確立するたびにリモートDNSサーバーを強制的に使用できます。

Cisco ASDMを使用している場合は、[設定]> [ネットワーク(クライアント)アクセス]> [グループポリシー]>(OSX / iPhoneのvpnグループ)> [詳細設定]> [トンネリングの分割]に移動します。

DNS名(「継承」のチェックを外して、mydn.localなどの内部DNSドメイン名を定義します)すべてのDNSルックアップトンネルを送信します。

それを保存し、将来の使用のためにフラッシュに保存することを忘れないでください。

IOSコマンドラインを使用する場合は、次を設定します。

group-policy <your-tunnel-group-name> attributes
 split-dns value myoffice.local
 split-tunnel-all-dns enable`

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.