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에서 시작하는 모든 네트워크 를 사용 하도록 네트워크 구성하려면 어떻게해야 합니까?

오래된 해결 방법

두 가지 옵션을 수정하여 VPN을 통해 네트워크에 액세스 할 수있는 임시 해결 방법을 찾았습니다.

VPN 연결을 통해 모든 트래픽 보내기 에 확인 표시를했습니다 .

VPN 옵션

VPN 인터페이스의 DNS 설정에서 검색 도메인 이름을 수동으로 입력합니다.

VPN 옵션에 도메인 이름 입력

이 두 단계를 수행하면 작동하는 컴퓨터를 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

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넷 마스크를 변경하는 방법을 찾지 못했기 때문에 사용 가능 하게 만들었습니다. "DNS for everything 192.168 관련"로 표시하려면 어떻게합니까?
Dan

원격 끝에 어떤 VPN 서버가 있는지 모르겠지만 문제를 해결해야 할 곳이라고 생각합니다. VPN이 분할 터널 설정 인 것처럼 보입니다. VPN 끝으로의 액세스는 VPN을 통한 것이지만 다른 (인터넷) 액세스는 일반 게이트웨이를 통한 것입니다. 이름 서버와 도메인 이름을 지정하도록 VPN 서버를 구성해야합니다. 또한 192.168. 관련 쿼리에 사용되도록 DNS 서버를 표시하는 것에 대한 귀하의 질문은 잘못된 방식입니다-IP가 아닌 내부 DNS 서버와 함께 사용하기 위해 '표시'해야하는 도메인 이름 부분입니다.
barryj

@ barryj, 입력 주셔서 감사합니다. 관리자에게 물어볼 것이지만,이 문제가있는 유일한 사람이라고 생각하므로 스스로 만들 수 있다면 시간을 갖고 싶지 않습니다. DNS의 경우 VPN 만 사용하여 Windows 네트워크의 다른 컴퓨터 (예 : RDC 용 작업 컴퓨터, 개발 용 데이터베이스 서버 등)에 액세스하려고합니다.
Dan

답변:


3

리졸버 맨 페이지 를보고 싶을 수도 있습니다.

하나의 솔루션을 인용하려면 :

특정 클라이언트에 대한 구성은이 매뉴얼 페이지에 설명 된 형식의 파일에서 읽을 수 있습니다. 이들은 현재 시스템의 /etc/resolv.conf 파일과 / etc / resolver 디렉토리에있는 파일에 있습니다. 그러나 클라이언트 구성은 파일 저장소로 제한되지 않습니다. DNS 다중 클라이언트 검색 전략의 구현은 시스템 구성 데이터베이스와 같은 다른 데이터 소스에서 클라이언트 구성을 찾을 수도 있습니다. DNS 시스템 사용자는 구성 데이터의 소스에 대해 가정하지 않아야합니다.

AFAIK이라는 이름의 파일을 넣어야 example.com/etc/resolver당신을위한 특별한 네임 서버를 원하는 경우 해당 도메인의 네임 서버의 IP를을 example.com- 그들이 사용 할 수 resolv.conf구문을 기억 할 수 없다. 그러나 당신은 그것을 알아낼 수 있어야합니다 :)

편집 : 프로세스 자동화가 진행되는 한 AppleScript 또는 Automator로 가능하다는 것을 확신합니다. 그러나 나는 그 문제에 대해 두각을 나타내지 않으므로 그 주제에 대한 두 번째 질문이 도움이 될 것입니다.


감사! 잘 작동했습니다. / etc / resolver에있는 파일의 구문은 resolv.conf와 같습니다. 예를 들어 "nameserver 1.2.3.4"는 즉시 사용할 수 있습니다.
Per Lundberg

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.