Не вдається вирішити хост через VPN-з'єднання з Mac OS X [закрито]


10

Преамбула

Я встановив VPN-з'єднання зі свого Macbook, і він, здається, успішно з'єднується.

робочий 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

Я вручну ввести ім'я пошуку домену в налаштуваннях DNS-інтерфейсу VPN:

введення доменного імені в параметрах VPN

Виконання цих двох кроків достатньо для того, щоб зробити мій робочий комп'ютер пінгбером:

$ 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, ви не можете дістатися до dns-сервера 192.168.10.x, оскільки ваша підмережа 192.168.7.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. Як це змінити? Дякую.
День

@shsmith, перегляньте розділ "Нове вирішення". Ви мали рацію, сервери DNS були недоступні. Раніше я routeробив їх доступними, оскільки не знайшов способу змінити маску. Як я позначаю їх як "DNS для всього, що стосується 192.168"?
День

Я не знаю, який сервер VPN у вас на віддаленому кінці, але я думаю, що саме там ви повинні шукати, щоб вирішити проблему. Схоже, VPN - це розділене налаштування тунелю, тобто і доступ до кінця VPN здійснюється через VPN, але інший (Інтернет) доступ здійснюється через ваш звичайний шлюз. Сервер VPN повинен бути налаштований так, щоб вказати сервери імен та домен (и), для яких вони повинні використовуватися. Крім того, ваше запитання щодо позначення DNS-серверів, які використовуються для запитів, пов’язаних із 192.168., є неправильним - саме доменне ім’я потрібно "позначати" для використання з внутрішнім сервером DNS, а не IP.
barryj

@barryj, дякую за ваш внесок. Я запитаю у адміністраторів, але я думаю, що я єдиний з цією проблемою, тому я не хочу витрачати їх час, якщо я можу зробити це самостійно. Що стосується DNS, я хочу лише використовувати VPN для доступу до інших комп'ютерів у мережі Windows, наприклад, мого робочого комп'ютера для RDC, сервера баз даних для розробки тощо
Dan

Відповіді:


3

Можливо, вам захочеться переглянути сторінку роздільної здатності

Процитуйте одне рішення:

Конфігурація для конкретного клієнта може зчитуватися з файлу, що має формат, описаний на цій головній сторінці. В даний час вони розташовані системою у файлі /etc/resolv.conf та у файлах, що знаходяться в каталозі / etc / resolutionver. Однак конфігурації клієнта не обмежуються файловим сховищем. Реалізація стратегії пошуку багато клієнтів DNS може також знаходити конфігурації клієнта в інших джерелах даних, таких як База даних конфігурації системи. Користувачі системи DNS не повинні робити припущень щодо джерела даних конфігурації.

AFAIK вам потрібно помістити файл з ім'ям example.comв /etc/resolverс IP - адреси серверів імен для цього домену , якщо ви хочете спеціальні сервери імен для example.com- Може бути , вони використовують resolv.confсинтаксис, я не можу пригадати. Але ви повинні вміти це з'ясувати :)

EDIT: Що стосується автоматизації процесу, я впевнений, що це можливо з AppleScript або Automator. Але я ніколи не замислююся над цим, тому може допомогти друге питання на цю тему.


Дякую! Працював чудово. Синтаксис для файлу в / etc / resolutionver схожий на resolutionv.conf, наприклад, для мене розроблено "nameserver 1.2.3.4".
Пер Лундберг

3

Здається, що проблема з OSX встановила мережеву маску неправильно. Це був мій досвід використання PPTP VPN як у Snow Leopard, так і в гірському леві, і ця тема підтримується тут .

Я знайшов рішення тут , який включає в себе встановлення правила маршрутизації для 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

Дозвіл DNS для Mac OSX - смішний. Ось швидке виправлення.

  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. Замініть слово "МОЙ VPN" на ім'я вашого VPN-з'єднання.

  3. Після підключення до VPN запустіть reset_dnsз вікна терміналу

Mac OSX використовує лише сервери DNS, пов’язані з вашим "Первинним" мережевим з'єднанням. Вищевказаний код додає DNS-сервери вашого VPN-з'єднання до основного мережевого з'єднання (тобто зазвичай Wi-Fi або Ethernet), так що спочатку будуть використовуватися ваші VPN-сервери VPN, потім ваші сервери DNS-системи основного зв'язку вдруге.

reset_dnsПісля відключення форми VPN виконайте команду, щоб видалити записи та відновити початкову конфігурацію сервера DNS. Це не обов’язково, оскільки зазвичай нічого не заважає просто підтримувати сервери DNS.


0

У мене було те саме питання. Виявляється, мій домашній маршрутизатор був у тому ж діапазоні IP, що і моя робоча система. Як тільки я змінив домашній маршрутизатор на інший діапазон, я зміг підключитися.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.