如何在 OSX 10.6 中通过 VPN 路由某些应用程序并路由其他应用程序以使用我的“标准”连接?

如何在 OSX 10.6 中通过 VPN 路由某些应用程序并路由其他应用程序以使用我的“标准”连接?

我目前在国外工作,使用公司的 VPN 进行 FTP 和一些浏览。这是一个相对较慢的连接,虽然它适合那些 VPN 必需品;但我的许多其他互联网使用可以在没有 VPN 的情况下以更快的速度完成。

有没有办法告诉 Safari 和我的 FTP 软件使用 VPN,并让所有其他连接直接连接到互联网。

我目前正在使用 OSX 的网络首选项来运行我的 VPN 连接。

答案1

我会考虑使用 VirtualBox/VMWare Player 来运行一台小型机器来满足您的 VPN 连接要求,这样您就可以让您计算机的主互联网连接无需进行自定义。

这样,两个连接就完全分开了,您不必配置或自定义路由表,也不必担心复杂的网络配置。

答案2

看起来您知道您正在连接的网络 IP 和域。

实现此目的的一种方法是仅根据您请求的 IP/域使用 VPN。

您可以使用 macOS 内置 VPN 并设置“通过 VPN 发送所有流量”来实现此目的未选中,并定义路线。

例如,如果您的 FTP 服务器位于 1.2.3.4,则此命令将确保到 1.2.3.4 的流量将使用 VPN 访问互联网:

/sbin/route -n add -net 1.2.3.4/32 -interface ppp0

注意:您可以用 列出所有现有路线netstat -rn

如果您在 DNS 后面有动态 IP,您可以使用dig它来检索 IP 并将其添加到路由。(10.11.12.13 是您从 VPN 获得的 IP 地址)。

dig -b 10.11.12.13 +noall +answer ftp.company.example

还有一个钩子机制可以查看/etc/ppp/ip-up并执行它,这有助于自动化上述过程。此 bash 脚本可以自动为您创建路由并查找 IP 地址。

这是一个粗略的例子,可以说明可以做什么:

#!/bin/bash

# change name to whatever your VPN is named in Pref system
vpn_name="Company vpn" 

read_args() {
  # Example: ppp0 0 10.239.163.212 192.0.2.1 192.168.2.1
  iface=$1; shift 3
  remote_ip=$1; shift
}

log() {
  echo "$@" >&2
  echo "$@" 2>/dev/null >> /tmp/vpn-split-tunnel.log
}

get_vpn_iface() {
  /usr/sbin/scutil --nc status "$vpn_name" | grep InterfaceName | awk '{ print $3 }'
}

lookup_ips() {
  if [ "$MAC_OS_MAJOR_VER" -ge 11 ]; then
    xargs dig -b $remote_ip +noall +answer | grep 'IN\s\s*A' | awk '{ print $NF "/32" }'
  else
    xargs dig +noall +answer | grep 'IN\s\s*A' | awk '{ print $NF "/32" }'
  fi
}

init() {
  echo "" 2>/dev/null > /tmp/vpn-split-tunnel.log
  read_args "$@"
  vpn_iface=$(get_vpn_iface)

  if [[ "$iface" != "$vpn_iface" && -z "$DEBUG" ]]; then
    log "Interface $iface is not for the \"$vpn_name\" connection on interface $vpn_iface"
    exit
  fi
}

init "$@"

cmd=(/sbin/route -n add -net "1.2.3.4/32" -interface "$iface")
log ">> ${cmd[@]}" 
log $(${cmd[@]} 2>&1)

答案3

在 VPN 设置的高级部分中,有一个设置可以满足您的要求,但可能存在一些问题。它执行此处另一个答案中描述的操作,即通过您的常规默认网关发送互联网流量,并将通向 VPN 子网的路由添加到您的路由表。

可能有一些非常专业的软件尝试根据应用程序进行路由,但大多数路由都是通过 IP 地址完成的,换句话说,不是“Safari 和 FTP”,而是您指向 Safari 和您的 FTP 客户端。

以下是我所说的屏幕: VPN 选项

我猜如果你进入系统偏好设置、网络,选择你的 VPN 连接,然后按高级按钮,你会看到你的所有流量都通过 VPN 发送。

答案4

这并不是您想要的,但您可以绕过 VPN 的网关,以便子网之外的任何东西都不会使用 VPN: 如何使 Windows VPN 路由选择性流量(按目标网络)?

相关内容