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

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

评论

第一个解决方案仅适用于PPP VPN。以下解决方案可以在Cisco VPN(以及其他类型的思科专用)上使用superuser.com/questions/91191/…

#1 楼

创建具有以下内容的文件/ etc / ppp / ip-up:

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


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

以root用户身份执行:

chmod 0755 /etc/ppp/ip-up


每次连接到VPN时,将执行此文件。 />赋予脚本的参数:



:VPN接口(例如ppp0

:未知,在我的0 case

:VPN服务器的IP

:VPN网关地址

:用于局域网连接的常规(非vpn)网关


评论


@Edgar-不第一行很特别。 zh.wikipedia.org/wiki/Shebang_(Unix)

–詹姆斯·摩尔
11年5月23日在20:42

在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的默认网关

–加布·马丁(Nabe-Dempesy)
2011-12-7 17:18



如果配置了两个或多个VPN连接会怎样?如何在/ etc / ppp / ip-up中区分它们,以便可以相应地添加路由?友好的VPN名称是否将作为第六个参数(ipparam)传递?

–卡尔
2014年9月16日在1:19

/ etc / ppp / ip-up在我的系统上没有被调用; MacOS 10.13。我做了一个类似的脚本来记录执行情况,它具有root:staff所有权和0755 mod。手动调用它不会执行脚本。我的VPN连接是基于IPSec的L2TP,并且“配置IPv4”设置为“使用PPP”。我拖尾-f日志,并且/ etc / ppp / ip-up不能连接或断开vpn。

–GabLeRoux
17-10-28在17:56

在MacOS 10.15(Catalina)上,这个答案可以帮助我解决大部分问题,但是高级VPN设置中的“通过VPN连接发送所有流量”选项似乎不起作用。运行route -n监视器会显示默认的路由被重置。我在ip-up脚本中添加了以下内容,并最终对其进行了修复:#!/ bin / sh / sbin / route add -interface $ 1 / sbin / route change default -interface 我将其设置为`en0`。

–主教
20年5月21日在14:25



#2 楼

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

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




至关重要的是,将网络接口分类为希望使用它们的顺序。如果要将所有非LAN数据都发送到VPN,请在顶部放置VPN接口。像这样


VPN
以太网
机场

不喜欢这样:


机场
以太网
VPN

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


通过VPN连接发送所有流量


✅已在L2TP VPN连接上进行了测试

评论


我认为这无法解决问题,除非OP通过以太网备份到Time Machine并连接到公司网络视图Airport(无线连接)

–乔什·纽曼(Josh Newman)
2010-4-15在17:53

我使用了ppp启动技巧,但是直到我将vpn连接移到无线连接下方后,它才起作用。这是一个有效的答案。

–阿罗斯伯勒
2012年8月11日14:41

这确实是主要答案!非常感谢,将无法弄清楚!

–安德烈·苏亚雷斯(Andre Soares)
16年1月30日,下午1:45

这确实适用于L2TP IPSec VPN,但不适用于Cisco IPSec VPN。 Cisco IPSec VPN在“设置服务顺序”对话框中不可用

–地貌学
18年4月12日在0:32

#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更改为您希望路由到的网络的地址。通过用不同的地址重复最后一行,可以添加其他网络。

评论


(此外,对于那些想知道该IP地址的人:就像发问者所谈论的一样,172.16.0.0/16是私有地址空间,就像10.xxx和192.168.xx一样,因此,它实际上是VPN的一部分,而不是外部网站或其他任何网站。)

– Arjan
09-10-21在9:48

那么192.168.1.1是您在VPN上的路由器,还是在LAN上的路由器?而且,您是否不必将默认路由设置回局域网?

–杰克M。
10年6月16日在17:14

#4 楼

我上网查看了是否可以找到任何东西,据我了解,您似乎希望能够像平常一样使用计算机,同时还能够连接到公司内部网站,因此,您可能需要设置自定义路由表。
此链接显然仅适用于10.4,但命令行内容仍然可以使用。