Mac OS XからのVPN接続を介してホストを解決できない[終了]


10

プリアンブル

MacbookからVPN接続を設定したところ、正常に接続されているようです。

機能しているVPN

ただし、ホスト名が解決されないため、仕事用のコンピューターにアクセスできません。

$ ping myusername
ping: cannot resolve myusername: Unknown host

新しい回避策

できる限りのことを試したところ、このコマンドを実行すると、VPNネットワークとインターネットの両方を利用できるようになります。

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

会社のDNSサーバーはIPでアクセスできます。192.168から始まるすべてのものにそれらを使用するようにネットワークを構成するにはどうすればよいですか?

古い回避策

2つのオプションを変更して、VPN経由でネットワークにアクセスできる一時的な回避策を見つけました。

[ VPN接続経由ですべてのトラフィックを送信する]にチェックマークを付けます

VPNオプション

VPNインターフェイスのDNS設定に検索ドメイン名を手動で入力します。

VPNオプションにドメイン名を入力する

これらの2つの手順を実行するだけで、私の作業中のコンピューターをping可能にできます。

$ nslookup myusername
Server:     192.168.10.16
Address:    192.168.10.16#53

Name:   myusername.universe.mycompany
Address: 192.168.11.56

$ ping myusername
PING myusername.universe.mycompany (192.168.11.56): 56 data bytes
64 bytes from 192.168.11.56: icmp_seq=0 ttl=126 time=126.164 ms

ただし、VPNを通過するようにすべてのトラフィックをトンネリングしたため、インターネットにアクセスできなくなりました。

$ ping google.com
PING google.com (74.125.232.48): 56 data bytes
Request timeout for icmp_seq 0
Request timeout for icmp_seq 1

質問

VPNを通過するタイミングと通常の接続を使用するタイミングを理解できるように、ネットワークを正しく設定するにはどうすればよいですか?Windowsサーバー名を正しく解決するために必要です。

コンソールコマンドの出力を投稿する必要がある場合は、正確にお知らせいただければ、喜んでそれを行います。
これは私にとって今は一種のショーストッパーなので、どんな助けも高く評価されます。

ありがとう!


VPNサブネットマスクは何ですか?255.255.255.0の場合、サブネットが192.168.7.xであるため、DNSサーバー192.168.10.xに到達できません。
hsmiths '29年

ifconfig以下のための出力がppp0ありflags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00、私はそれが255.255.255.0であると思いますので。どうすれば変更できますか?ありがとう。
Dan

@shsmith、新しい回避策のセクションをご覧ください。DNSサーバーにアクセスできませんでした。私が使用しroute、私は変更のネットマスクへの道を見つけることができませんでしたので、それらを利用できるようにします。これらを「192.168関連のすべてのDNS」としてマークするにはどうすればよいですか?
ダン・

リモートエンドにどのVPNサーバーがあるのか​​はわかりませんが、問題を解決するために探しているのはここだと思います。VPNはスプリットトンネルセットアップのように見えます。つまり、VPN側へのアクセスは両方ともVPN経由ですが、その他の(インターネット)アクセスは通常のゲートウェイ経由です。VPNサーバーは、ネームサーバーと、これらを使用するドメインを指定するように構成する必要があります。また、DNSサーバーを192.168.relatedクエリに使用するようにマークすることについての質問は間違った方法です-IPではなく、内部DNSサーバーで使用するために「マーク」する必要があるのはドメイン名の部分です。
barryj '29年

@barryj、ご意見ありがとうございました。私は管理者に尋ねますが、私はこの問題を抱えているのは私だけだと思う​​ので、自分でこれを行うことができるのであれば、時間をかけたくありません。DNSについては、VPNを使用してWindowsネットワーク上の他のコンピューターにアクセスしたいだけです。たとえば、RDC用の稼働中のコンピューター、開発用のデータベースサーバーなど
Dan

回答:


3

あなたは見たいかもしれませんリゾルバのmanページ

1つのソリューションを引用するには:

特定のクライアントの構成は、このマニュアルページで説明されている形式のファイルから読み取ることができます。これらは現在、システムによって/etc/resolv.confファイルと/ etc / resolverディレクトリにあるファイルにあります。ただし、クライアント構成はファイルストレージに限定されません。DNSマルチクライアント検索戦略の実装では、システム構成データベースなどの他のデータソースでクライアント構成を見つけることもできます。DNSシステムのユーザーは、構成データのソースについて想定しないでください。

私の知る限りでは、あなたが名前のファイルに置く必要があるexample.com中で/etc/resolver、あなたがのための特別なネームサーバが必要な場合は、そのドメインのネームサーバのIPアドレスとをexample.com-彼らが使用するのだろうresolv.conf構文を、私は覚えていないことができます。しかし、あなたはそれを理解することができるはずです:)

編集:プロセスの自動化に関する限り、AppleScriptまたはAutomatorでそれが可能であると確信しています。しかし、私は決して頭に浮かぶことはないので、そのトピックに関する2番目の質問が役立つかもしれません。


ありがとう!うまくいきました。/ etc / resolver内のファイルの構文はresolv.confに似ています。たとえば、「nameserver 1.2.3.4」はそのまま使用できます。
1

3

OSXによるネットマスクの設定に問題があるようです。これはSnow LeopardとMountain Lionの両方でPPTP VPNを使用した私の経験であり、このスレッドサポートされています。

ここに解決策が見つかりました。これには、ppp0トラフィックのルーティングルールの設定が含まれます。

基本的に:

$ sudo <your_text_editor_of_choice> /etc/ppp/ip-up

    #!/bin/sh
    /sbin/route add -net 192.168 -interface ppp0

$ sudo chmod 755 /etc/ppp/ip-up

これにより、VPNに接続するたびにルーティングルールが設定されます。


2

Mac OSX DNS解決は面白いです。ここにクイックフィックスがあります。

  1. 次のコードをファイル名に入れますreset_dns

    #!/bin/bash
    
    function get_pri_srvc_id ()
    {
      cat <<EOF | scutil | \
        grep 'PrimaryService' | \
        awk -F': ' '{print $2}'
    show State:/Network/Global/IPv4
    EOF
    }
    
    function get_srvc_name ()
    {
      cat <<EOF | scutil | \
        grep 'UserDefinedName' | \
        awk -F': ' '{print $2}'
    show Setup:/Network/Service/$1
    EOF
    }
    
    function get_srvc_ids ()
    {
      cat <<EOF | scutil | \
        sed -nEe '
    /ServiceOrder/ {
      :ids
      n
      /[0-9]+ :/ {
        s/ *[0-9]+ : ([0-9A-Z-]+) */\1/p
        b ids
      }
    }'
    show Setup:/Network/Global/IPv4
    EOF
    }
    
    function get_srvc_id_by_name ()
    {
      local srvc_ids=$(get_srvc_ids)
    
      for srvc_id in $srvc_ids
      do
        local srvc_name=$(get_srvc_name "$srvc_id")
        if [[ "$srvc_name" == "$1" ]]
        then
          echo $srvc_id
          return
        fi
      done
    }
    
    function get_dns_ips ()
    {
      local srvc_id=$(get_srvc_id_by_name "$1")
    
      cat <<EOF | scutil | \
        sed -nEe '
    /ServerAddresses/ {
      :ips
      n
      /[0-9]+ :/ {
        s/ *[0-9]+ : ([0-9.]+) */\1/p
        b ips
      }
    }'
    show $2:/Network/Service/$srvc_id/DNS
    EOF
    }
    
    function set_dns_ips ()
    {
      networksetup -setdnsservers "$@"
    }
    
    vpn_srvc_name='MY VPN'
    ip_file='/tmp/setup_dns_ips'
    
    pri_srvc_id=$(get_pri_srvc_id)
    pri_srvc_name=$(get_srvc_name "$pri_srvc_id")
    
    if [[ ! -e "$ip_file" ]]
    then
      setup_dns_ips=$(get_dns_ips "$pri_srvc_name" "Setup")
      state_dns_ips=$(get_dns_ips "$pri_srvc_name" "State")
      setup_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "Setup")
      state_vpn_ips=$(get_dns_ips "$vpn_srvc_name" "State")
    
      echo "set_dns_ips $pri_srvc_name $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips"
      set_dns_ips "$pri_srvc_name" $setup_vpn_ips $state_vpn_ips $setup_dns_ips $state_dns_ips
    
      if [[ -z "$setup_dns_ips" ]]
      then
        setup_dns_ips="Empty"
      fi
    
      echo $setup_dns_ips >$ip_file
    else
      setup_dns_ips=$(cat $ip_file)
    
      echo "set_dns_ips $pri_srvc_name $setup_dns_ips"
      set_dns_ips "$pri_srvc_name" $setup_dns_ips
    
      rm $ip_file
    fi
    
  2. 「MY VPN」という単語をVPN接続の名前に置き換えます。

  3. VPNに接続したらreset_dns、ターミナルウィンドウから実行します

Mac OSXは、「プライマリ」ネットワーク接続に関連付けられたDNSサーバーのみを使用します。上記のコードは、VPN接続のDNSサーバーをプライマリネットワーク接続(通常はWi-Fiまたはイーサネット)に追加するため、VPN DNSサーバーが最初に使用され、次にプライマリ接続DNSサーバーが使用されます。

reset_dnsVPNから切断した後でコマンドを再度実行して、エントリを削除し、元のDNSサーバー構成を復元します。ただし、通常はDNSサーバーを関連付けておくだけで問題はないため、これはオプションです。


0

同じ問題がありました。私のホームルーターが私の仕事用システムと同じIP範囲にあることがわかりました。ホームルーターを別の範囲に変更したら、接続できました。

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