Không thể giải quyết máy chủ thông qua kết nối VPN từ Mac OS X [đã đóng]


10

Lời mở đầu

Tôi đã thiết lập kết nối VPN từ Macbook của mình và dường như kết nối thành công.

VPN hoạt động

Tuy nhiên, tôi không thể truy cập vào máy tính làm việc của mình vì tên máy chủ không được giải quyết:

$ ping myusername
ping: cannot resolve myusername: Unknown host

Cách giải quyết mới

Sau khi thử mọi thứ tôi có thể, tôi thấy rằng lệnh này làm cho cả mạng VPN và internet có sẵn cho tôi:

sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0

Máy chủ DNS của công ty có thể truy cập bằng IP của họ. Làm cách nào để định cấu hình mạng để sử dụng chúng cho mọi thứ bắt đầu từ 192.168?

Cách giải quyết cũ

Tôi đã tìm thấy một cách giải quyết tạm thời cho phép tôi truy cập mạng qua VPN bằng cách sửa đổi hai tùy chọn:

Tôi đặt dấu kiểm vào Gửi tất cả lưu lượng truy cập qua kết nối VPN :

Tùy chọn VPN

Tôi nhập thủ công Tên miền tìm kiếm trong cài đặt DNS của giao diện VPN:

nhập tên miền vào tùy chọn VPN

Thực hiện hai bước này là đủ để làm cho máy tính làm việc của tôi có thể ping được:

$ 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

Tuy nhiên, khi tôi điều chỉnh tất cả lưu lượng truy cập qua VPN, tôi không thể truy cập Internet nữa:

$ 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

Câu hỏi

Làm cách nào để thiết lập mạng đúng cách để nó hiểu khi nào nên thông qua VPN và khi nào nên sử dụng kết nối bình thường? Tôi cần nó để giải quyết chính xác tên máy chủ Windows.

Nếu tôi cần đăng bất kỳ đầu ra lệnh console nào, tôi sẵn sàng làm điều đó nếu bạn cho tôi biết chính xác.
Bất kỳ trợ giúp đều được đánh giá cao, vì đây là một loại điểm dừng chương trình cho tôi bây giờ.

Cảm ơn!


Mặt nạ mạng con VPN của bạn là gì? Nếu là 255.255.255.0, bạn không thể truy cập máy chủ dns 192.168.10.x vì mạng con của bạn là 192.168.7.x.
thợ rèn

ifconfigđầu ra cho ppp0flags=8051<UP,POINTOPOINT,RUNNING,MULTICAST> mtu 1396 inet 192.168.7.232 --> 192.168.7.117 netmask 0xffffff00vì vậy tôi đoán nó là 255.255.255.0. Làm thế nào để tôi thay đổi nó? Cảm ơn.
Dan

@shsmith, vui lòng xem phần Giải pháp mới. Bạn đã đúng máy chủ DNS không truy cập được. Tôi đã từng routelàm cho chúng có sẵn vì tôi không tìm cách thay đổi netmask. Làm cách nào để tôi đánh dấu chúng là "DNS cho mọi thứ liên quan đến 192.168"?
Dan

Tôi không biết bạn có máy chủ VPN nào ở đầu xa, nhưng tôi nghĩ đó là nơi bạn nên tìm cách khắc phục sự cố. Có vẻ như VPN là một thiết lập đường hầm phân chia, có nghĩa là cả hai quyền truy cập vào cuối VPN đều thông qua VPN, nhưng truy cập (Internet) khác là thông qua cổng thông thường của bạn. Máy chủ VPN phải được cấu hình để chỉ định máy chủ tên và (các) tên miền mà chúng nên được sử dụng. Ngoài ra, câu hỏi của bạn về việc đánh dấu các máy chủ DNS sẽ được sử dụng cho 192.168. Các truy vấn có liên quan là sai vòng - đó là phần tên miền cần được 'đánh dấu', để sử dụng với máy chủ DNS nội bộ, không phải IP.
barryj

@barryj, cảm ơn rất nhiều về đầu vào của bạn. Tôi sẽ hỏi quản trị viên nhưng tôi nghĩ tôi là người duy nhất gặp vấn đề này vì vậy tôi không muốn mất thời gian của họ nếu tôi có thể tự mình giải quyết vấn đề này. Đối với DNS, tôi chỉ muốn sử dụng VPN để truy cập các máy tính khác trên mạng Windows, ví dụ: máy tính làm việc của tôi cho RDC, máy chủ cơ sở dữ liệu để phát triển, v.v.
Dan

Câu trả lời:


3

Bạn có thể muốn xem trang chủ trình phân giải

Để trích dẫn một giải pháp:

Cấu hình cho một khách hàng cụ thể có thể được đọc từ một tệp có định dạng được mô tả trong trang này. Hiện tại chúng được hệ thống định vị trong tệp /etc/resolv.conf và trong các tệp được tìm thấy trong thư mục / etc / decver. Tuy nhiên, cấu hình máy khách không giới hạn lưu trữ tệp. Việc thực hiện chiến lược tìm kiếm đa khách hàng DNS cũng có thể định vị cấu hình máy khách trong các nguồn dữ liệu khác, chẳng hạn như Cơ sở dữ liệu cấu hình hệ thống. Người dùng hệ thống DNS sẽ không đưa ra giả định nào về nguồn dữ liệu cấu hình.

AFAIK bạn cần phải đặt một file có tên example.comtrong /etc/resolvervới IP của các máy chủ tên miền cho rằng nếu bạn muốn máy chủ tên đặc biệt cho example.com- Có thể là họ sử dụng resolv.confcú pháp, tôi không thể nhớ. Nhưng bạn sẽ có thể tìm ra điều đó :)

EDIT: Theo như tự động hóa quá trình, tôi khá chắc chắn rằng điều đó có thể thực hiện được với AppleScript hoặc Automator. Nhưng tôi không bao giờ để ý xung quanh nó vì vậy một câu hỏi thứ hai về chủ đề đó có thể giúp ích.


Cảm ơn! Làm việc tốt Cú pháp của tệp trong / etc / decver giống như decv.conf, ví dụ: "máy chủ tên 1.2.3.4" hoạt động ngoài hộp đối với tôi.
Per Lundberg

3

Dường như có một vấn đề với OSX khi đặt netmask không chính xác. Đây là kinh nghiệm của tôi khi sử dụng VPN PPTP trong cả Snow Leopard và Mountain Lion và được hỗ trợ bởi chủ đề này ở đây .

Tôi tìm thấy một giải pháp ở đây , bao gồm thiết lập quy tắc định tuyến cho lưu lượng ppp0.

Về cơ bản:

$ 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

Điều này sẽ đặt quy tắc định tuyến mỗi khi bạn kết nối với VPN.


2

Độ phân giải DNS của Mac OSX rất buồn cười. Đây là cách khắc phục nhanh.

  1. Đặt mã sau đây trong một tên tập tin 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. Thay thế từ 'MY VPN' bằng tên kết nối VPN của bạn.

  3. Sau khi kết nối với VPN của bạn, hãy chạy reset_dnstừ cửa sổ đầu cuối

Mac OSX chỉ sử dụng các máy chủ DNS được liên kết với kết nối mạng 'Chính' của bạn. Đoạn mã trên thêm các máy chủ DNS của kết nối VPN của bạn vào kết nối mạng Chính (thường là Wi-Fi hoặc Ethernet) để máy chủ DNS VPN của bạn sẽ được sử dụng trước, sau đó là máy chủ DNS kết nối Chính của bạn.

Chạy lại reset_dnslệnh sau khi ngắt kết nối mẫu VPN của bạn để xóa các mục nhập và khôi phục cấu hình máy chủ DNS gốc. Tuy nhiên, đây là tùy chọn vì nó thường không ảnh hưởng gì đến việc giữ các máy chủ DNS được liên kết.


0

Tôi gặp vấn đề tương tự. Hóa ra bộ định tuyến nhà của tôi ở cùng dải IP với hệ thống làm việc của tôi. Khi tôi thay đổi bộ định tuyến gia đình của mình sang một phạm vi khác, tôi có thể kết nối.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.