我想在 OpenVPN 连接时在我的 Mac 上运行一个脚本。我检查了 Mac 上的配置,没有看到任何可以运行脚本的地方。我正在运行最新的 Tunnelblick (3.7.0)。
我可以在哪里设置 Mac 版 Tunnelblick 上的脚本?
答案1
这个答案有点晚了,但 Tunnelblick 中实际上有一些钩子,您只需将正确命名的脚本放在某些目录中即可使用。
这此文档阅读(或付诸实践)并不是那么有趣,因此这里有一个总结*:
- 根据您的需要创建、、
pre-connect.sh
和post-tun-tap-load.sh
/或。connected.sh
reconnecting.sh
post-disconnect.sh
- 以 root 身份将这些文件放入
/Library/Application Support/Tunnelblick/Shared/<gateway>.tblk/Contents/Resources
,其中<gateway>.tblk
是一个以您之前导入 Tunnelblick 的 OpenVPN 配置命名的目录。 - 更改所有权和 ACL:
bash$ sudo chown root:wheel reconnecting.sh bash$ sudo chmod 700 reconnecting.sh
*请注意,我所引用的目录可能与您的设置不同 - 我正在运行 macOS 10.12.6,并且这些步骤假设您已将 OpenVPN 配置导入 Tunnelblick。
答案2
根据其他(优秀)答案对于这个问题,我根据一个简单的例子写了这篇Tunnelblick 3.8.1 build 5400
文章macOS Mojave 10.14.6
。
打开终端。
sudo -s
cd /Users/<user>/Library/Application Support/Tunnelblick/Configurations/<profile>.tblk/Contents/Resources
<user>
您的 Mac 用户名在哪里?<profile>
您导入 Tunnelblick 的 VPN 配置文件配置在哪里?完整路径类似于
/Users/andrea/Library/Application Support/Tunnelblick/Configurations/vpncorporate.tblk/Contents/Resources
已连接文件
nano connected.sh
例如,如果您想在连接时添加路由规则,请粘贴以下行
#!/bin/sh route add -host 172.16.10.7/32 -gateway 192.168.0.244
参考:路线手册页
断开连接后
nano post-disconnect.sh
例如,如果您想删除之前添加的规则,请粘贴以下几行
#!/bin/sh route delete -host 172.16.10.7/32 -gateway 192.168.0.244
参考:路线手册页
设置正确的权限
chmod 700 connected.sh chmod 700 post-disconnect.sh
就我而言
-rwx------ 1 root admin 63 23 Ott 11:47 connected.sh -rwx------ 1 root admin 66 23 Ott 13:43 post-disconnect.sh
有关connected.sh和post-disconnect.sh的一个更有用和更复杂的例子可能是以下内容
这个想法是获取默认网关并通过该网关为特定 IP 进行路由。
已连接文件
#!/bin/sh DEFAULTGATEWAY="$(netstat -nar | sed -n -e '/^default/p' | head -1 | awk '{print $2}')" route add -host 172.16.10.7/32 -gateway $DEFAULTGATEWAY
断开连接后
#!/bin/sh route delete -host 172.16.10.7/32