如何在 Mac OS X Leopard 上通过 VPN 有选择地路由网络流量?

new*_*ple 125 networking mac vpn osx-leopard macos

当我从家里连接到我公司的网络(通过 VPN)时,我不想将所有网络流量发送到 VPN。例如,当我在家工作时,我希望能够将我所有的文件备份到家里的 Time Capsule,并且仍然能够访问公司的内部网络。

我正在使用 Leopard 的内置 VPN 客户端。我尝试取消选中“通过 VPN 连接发送所有流量”。如果我这样做,我将无法通过 curl 或 Web 浏览器访问我公司的内部网站(尽管仍然可以访问内部 IP)。如果我可以有选择地选择一组 IP 或域通过 VPN 路由并将其余的保留在我自己的网络上,那将是理想的。这可以通过 Leopard 的内置 VPN 客户端实现吗?

小智 117

使用以下内容创建文件/etc/ppp/ip-up

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 
Run Code Online (Sandbox Code Playgroud)

替换<SUBNET>为子网,您想通过 VPN 路由(例如 192.168.0.0/16)

以 root 身份执行:

chmod 0755 /etc/ppp/ip-up
Run Code Online (Sandbox Code Playgroud)

每次连接到 VPN 时都会执行此文件。

给脚本的参数:

  • $1:VPN 接口(例如ppp0
  • $2: 未知,就0我而言
  • $3:VPN服务器的IP
  • $4:VPN网关地址
  • $5:用于局域网连接的常规(非 vpn)网关

  • @埃德加 - 不。第一行很特别。http://en.wikipedia.org/wiki/Shebang_(Unix) (6认同)
  • 在 10.7/Lion 上,我有更好的运气: /sbin/route add 172.16.0.0/16 -interface $1 我看到 ip-up 得到的参数是: $1 = VPN 接口,例如 'ppp0' $2 = '0'(不是确定这个值是多少) $3 = 你的 VPN IP $4 = VPN 公共网关 IP 地址 $5 = 以太网/wifi 的普通默认网关 (6认同)
  • 如果我配置了两个或多个 VPN 连接,会发生什么情况?我如何在`/etc/ppp/ip-up`中区分它们,以便我可以相应地添加路由?友好的 VPN 名称会作为第 6 个参数 (`ipparam`) 传递吗? (4认同)
  • `/etc/ppp/ip-up` 不会在我的系统上被调用;MacOS`10.13`。我做了一个类似的脚本来记录执行,它有 `root:staff` 所有权和 `0755` mod。手动调用它会执行脚本。我的 VPN 连接是“L2TP over IPSec”,“Configure IPv4”设置为“Using PPP”。我`tail -f` 日志和连接或断开vpn 对`/etc/ppp/ip-up` 没有任何作用。 (3认同)
  • 在 MacOS 10.15 (Catalina) 上,这个答案让我了解了大部分情况,但高级 VPN 设置中的“通过 VPN 连接发送所有流量”选项似乎不起作用。运行`route -n monitor` 显示默认路由被重置,无论哪种方式。我在 ip-up 脚本中添加了以下内容并最终修复了它:`#!/bin/sh /sbin/route add &lt;SUBNET&gt; -interface $1 /sbin/route change default -interface &lt;ETHERNET/WIFI IDENTIFIER&gt; ` 在我的在这种情况下,我将其设置为 `en0`。 (3认同)

小智 17

MacOS 上的网络首选项中有一个隐藏功能您可以对接口进行排序

打开系统偏好设置 -> 网络 -> 点击gear左下角 ->Set service Order...

<code>设置服务顺序...</code> VPN订购

网络接口按照您希望使用的顺序进行排序至关重要。如果您希望所有非局域网数据都进入 VPN,请将 VPN 接口放在顶部。像这样排序

  1. 虚拟专用网
  2. 以太网
  3. 飞机场

不是这样的:

  1. 飞机场
  2. 以太网
  3. 虚拟专用网

这样,无需检查以下设置Session Options

通过 VPN 连接发送所有流量

? L2TP VPN连接测试

  • 这对 L2TP IPSec VPN 有效,但不适用于 Cisco IPSec VPN。Cisco IPSec VPN 在“设置服务订单”对话框中不可用 (4认同)
  • 我使用了 ppp 启动技巧,但直到我将 vpn 连接移到无线连接下方才起作用。这是一个有效的答案。 (2认同)

Mar*_*ton 11

我想做类似的事情。连接 VPN,然后通过该 VPN 路由其他网络。我最终得到了以下 Applescript:

-- Connect Work VPN

tell application "System Events"
    tell network preferences
        tell current location
            tell service "Work"
                connect
                tell current configuration
                    repeat until get connected = true
                        delay 1
                    end repeat
                end tell
            end tell
        end tell
    end tell
end tell

set gateway to "192.168.1.1"

do shell script "route add 172.16.0.0/16 " & gateway with administrator privileges
Run Code Online (Sandbox Code Playgroud)

您需要更改"Work"VPN 连接的名称、192.168.1.1网关地址以及172.16.0.0/16要路由到的网络地址。可以通过用不同的地址重复最后一行来添加其他网络。