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

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

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

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

答案1

创建文件/etc/ppp/ip-up内容如下:

#!/bin/sh
/sbin/route add <SUBNET> -interface $1 

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

以root身份执行:

chmod 0755 /etc/ppp/ip-up

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

赋予脚本的参数:

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

答案2

有一个隐藏功能在 MacOS 的网络偏好设置中:您可以对接口进行排序

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

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

你必须有你的网络接口排序按您希望使用的顺序排列。如果您希望所有非 LAN 数据都转到 VPN,请将 VPN 接口放在顶部。按以下方式排序

  1. VPN
  2. 以太网
  3. 飞机场

不是这样的:

  1. 飞机场
  2. 以太网
  3. VPN

这样,就不需要检查以下设置Session Options

通过 VPN 连接发送所有流量

✅ 已测试L2TP VPN连接

答案3

我想做类似的事情。连接 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

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

答案4

我已经在线查看过是否可以找到任何东西,据我所知,您似乎希望能够像平常一样使用您的计算机,同时还能够连接到公司内部网站,因此,您可能需要设置自定义路由表。

此链接显然仅适用于 10.4,但命令行工具可能仍然有效。

相关内容