无法通过Mac OS X的VPN连接parsing主机

前言

我从我的Macbook设置了一个VPN连接,似乎连接成功。

工作的VPN

但是,我无法访问我的工作计算机,因为主机名未得到解决:

$ ping myusername ping: cannot resolve myusername: Unknown host 

新的解决方法

在尝试了所有我能做到的事情之后,我发现这个命令使VPNnetworking和互联网对我来说都是可用的:

 sudo route add -net 192.168.7.218 192.168.7.117 255.255.0.0 

公司的DNS服务器可以通过IP访问。 如何将networkingconfiguration为从192.168开始使用它们?

旧的解决方法

我发现了一个临时的解决方法,允许我通过修改两个选项来通过VPN访问networking:

我把一个复选标记发送通过VPN连接的所有stream量

VPN选项

我在VPN界面的DNS设置中手动inputsearch域名:

在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 

但是,当我将所有stream量通过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 

问题

如何正确地设置networking,以便了解何时通过VPN以及何时使用正常的连接? 我需要它来正确parsingWindows服务器名称。

如果我需要发布任何控制台命令输出,我愿意这样做,如果你让我知道究竟是什么。
任何帮助,高度赞赏,因为这是我现在的一种显示塞。

谢谢!

你可能想看看parsing器的手册页

引用一个解决scheme:

可以从具有本手册页中描述的格式的文件读取特定客户端的configuration。 这些目前位于/etc/resolv.conf文件中的系统以及/ etc / resolver目录中的文件中。 但是,客户端configuration不限于文件存储。 DNS多客户端search策略的实现还可以将客户端configuration定位在其他数据源(例如系统configuration数据库)中。 DNS系统的用户不应该对configuration数据的来源做任何假设。

AFAIK你需要把一个名为example.com的文件放在/etc/resolver ,如果你想为example.com使用特殊的名称服务器,可以使用这个域的域名服务器的IP地址 – 可以使用resolv.conf语法,我不记得了。 但你应该能够弄清楚:)

编辑:至于自动化的过程,我敢肯定,这是可行的AppleScript或Automator。 但是我从来没有想过,所以关于这个话题的第二个问题可能会有所帮助。

OSX似乎有一个问题,错误地设置networking掩码。 这是我在雪豹和Mountain Lion中使用PPTP VPN的经验,并在此处获得支持。

我在这里find了一个解决scheme,其中包括为ppp0stream量设置路由规则。

基本上:

 $ 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时设置路由规则。

Mac OSX的DNSparsing很有趣。 这是快速修复。

  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连接的名称replace“MY VPN”一词。

  3. 一旦连接到您的VPN,从terminal窗口运行reset_dns

Mac OSX只使用与您的“主要”networking连接关联的DNS服务器。 上面的代码将VPN连接的DNS服务器添加到主要networking连接(即通常是Wi-Fi或以太网),以便首先使用您的VPN DNS服务器,然后使用您的主要连接DNS服务器。

断开VPN连接后再次运行reset_dns命令,删除条目并恢复原来的DNS服务器configuration。 不过,这是可选的,因为通常只要保持DNS服务器关联就没有任何伤害。

我遇到过同样的问题。 原来我家的路由器和我的工作系统在同一IP范围内。 一旦我改变了我的家庭路由器到不同的范围,我能够连接。