Lek*_*eyn 71
network-manager-openvpn不提供这样的功能,你必须openvpn直接使用。
--script-security 2 --up /path/to/your/script连接时传递给它。如果您使用的是位于 的配置文件/etc/openvpn/,请将下一行附加到您的配置文件中:
script-security 2
# run /etc/openvpn/up.sh when the connection is set up
up /etc/openvpn/up.sh
Run Code Online (Sandbox Code Playgroud)
--script-security 级别 [方法]
该指令提供对 OpenVPN 使用的策略级控制
外部程序和脚本。较低级别的值更多
限制,更高的值更宽容。设置
等级:
0 -- 严格禁止调用外部程序。
1 -- (默认) 只调用内置的可执行文件,如 ifconfig,
ip、路由或 netsh。
2 -- 允许调用内置可执行文件和用户定义
脚本。
3 -- 允许通过环境将密码传递给脚本
变量(可能不安全)。
--up cmd
成功打开 TUN/TAP 设备后运行的 Shell 命令(预
--用户 UID 更改)。up 脚本可用于指定
route 命令,用于路由发往私有的 IP 流量
存在于 VPN 连接另一端的子网
隧道。
脚本执行顺序
--up 在 TCP/UDP 套接字绑定和 TUN/TAP 打开后执行。
--down 在 TCP/UDP 和 TUN/TAP 关闭后执行。
脚本执行还有更多事件,可以在手册页上找到。
创建/etc/openvpn/up.sh,并赋予它执行权限(例如 755 或 700)。添加 IPv6 地址和路由的示例内容(展示用于教育目的,请勿直接复制):
#!/bin/sh
# add an IPv6 address to device $dev (environment variable)
ip -6 addr add 2001:db8::1:2/112 dev $dev
# and the IPv6 route for this net using gateway 2001:db8::1
ip -6 route add 2001:db8::1:0/112 via 2001:db8::1 dev $dev
Run Code Online (Sandbox Code Playgroud)
请注意,此up脚本以 root 身份运行。如果您没有指定User和Group设置,OpenVPN 也会像downroot一样运行脚本。
小智 6
由于这是一个相当古老的线程,我不确定是否仍然感兴趣。如果您仍想使用 NetworkManager 连接到 VPN,您可以添加一个简单的 udev 规则,如下所示:
KERNEL=="vpn0", RUN+="/PATH_TO_THE_SCRIPT/SCRIPT_NAME"
这应该在创建 VPN 后运行任何脚本。
问题:“如何将脚本与 OpenVPN 关联,以便在 VPN 成功连接时运行?” 我想指出Lekensteyn提供了一个很好的答案。但是,在撰写他的答案时,对于应该如何提供 openvpn 命令行参数以在 ubuntu 机器上启动 openvpn,特别是使其在重新启动后仍能正常工作,尚不清楚。
自然地,您可以使用任何可用的合法选项从命令行启动 openvpn。但是,在 Ubuntu 机器上,如果想在重新启动后使用相同的命令行参数启动 openvpn,他们应该考虑编辑文件/etc/default/openvpn. 检查以下几行:
# Optional arguments to openvpn's command line
OPTARGS=""
Run Code Online (Sandbox Code Playgroud)
从社会OpenVPN的man页面上--script-security
--脚本安全级别
该指令提供对 OpenVPN 使用外部的策略级控制
程序和脚本。较低的级别值更具限制性,更高的
值更宽容。等级设置:
0 -- 严格禁止调用外部程序。
1 -- (默认) 只调用内置的可执行文件,例如 ifconfig, ip, route,
或 netsh。
2 -- 允许调用内置的可执行文件和用户定义的脚本。
3 -- 允许通过环境变量将密码传递给脚本
(可能不安全)。
v2.3 之前的 OpenVPN 版本也支持方法标志,指示如何
OpenVPN 应该调用外部命令和脚本。这可以是 execve
或系统。从 OpenVPN v2.3 开始,不再接受此标志。在大多数 *nix
在环境中使用 execve() 方法没有任何问题。
一些指令(例如 --up)允许将选项传递给外部脚本。
在这些情况下,请确保脚本名称不包含任何空格或
配置解析器会卡住,因为它无法确定脚本的位置
名称结束,脚本选项开始。
结合简短的部分 --up
--up cmd
在成功打开 TUN/TAP 设备后运行命令 cmd(pre--user UID 更改)。
cmd 由脚本(或可执行程序)的路径组成,可选地跟随
通过论据。路径和参数可以是单引号或双引号和/或
使用反斜杠转义,并应由一个或多个空格分隔。
在我的带有 openpvn server.conf 的机器上,我的/etc/default/openvpn文件中有以下几行:
OPTARGS="
--script-security 2
--up /etc/openvpn/nat.sh
"
Run Code Online (Sandbox Code Playgroud)
顺便提一下,nat.sh 设置了网络地址转换,用于将私有网络流量从 openvpn 客户端路由到公共互联网;当人们不信任公共 WIFI 接入点时,这很有用。
除了允许在重新启动后按预期重新启动之外,当正确配置文件/etc/openvpn/[client or server].conf和/etc/default/openvpn文件时,可以通过以下方式启动或停止 openvpn:
sudo service openvpn start
sudo service openvpn stop
Run Code Online (Sandbox Code Playgroud)
其他有用的选项可用于service openvpn包括cond-restart,force-reload,reload, restart,soft-restart, start, status, stop.
| 归档时间: |
|
| 查看次数: |
208764 次 |
| 最近记录: |