OpenVPN --route-up 传递给脚本时缺少环境变量

OpenVPN --route-up 传递给脚本时缺少环境变量

我正在深入了解 OpenVPN 的魅力,但在手动配置路由表时遇到了一些麻烦。我使用的是 Arch Linux。

我知道 OpenVPN 会在连接时自动更新路由表,但我想编写一个脚本来自己更新它们。我了解了 OpenVPN 的“--route-noexec”参数,它可以阻止自动更新,以及“--route-up”参数,它可以通过环境变量将相关信息传递给我选择的脚本。

这是我遇到麻烦的地方。我期望环境变量能够传递给脚本,这确实发生了,但我似乎漏掉了一些。特别是列出我的远程 IP 地址的那个(我相信是 untrusted/trusted_ip),这使得设置 iproute 变得很困难。

我的脚本接收的环境变量如下:

dev_type=tun
proto_1=udp
tun_mtu=1500
script_type=route-up
verb=1
local_port_1=1194
dev=tun0
remote_port_1=1194
PWD=/tmp
daemon=0
SHLVL=1
script_context=init
daemon_start_time=1409367799
daemon_pid=927
daemon_log_redirect=0
link_mtu=1500
_=/usr/bin/printenv

我用来启动VPN的命令如下:

sudo openvpn --dev tun --route-noexec --script-security 2 --route-up /tmp/print.sh

最后我传递给它的脚本如下:

#!/bin/bash
printenv

有人知道我为什么遗漏了变量吗?如能得到任何帮助我将不胜感激!

答案1

您是否还应该传递“--config”选项?例如。

openvpn --config /etc/openvpn/vpn.conf --script-security 2 --ifconfig-noexec --route-noexec --up ./netnsvpn-up --route-up ./netnsvpn-up 

和 netnsvpn-up 类似:

case $script_type in
        up)
                ip netns add vpntun0
                ip netns exec vpntun0 ip link set dev lo up
                ip link set dev "$1" up netns vpntun0 mtu "$2"
env
                ip netns exec vpntun0 ip addr add dev "$1" "${ifconfig_local}"/"${ifconfig_netmask:-30}" 
                ;;
        route-up)
                ip netns exec vpntun0 ip route add default via "$route_vpn_gateway"
                ;;
        down)
                ip netns delete vpntun0
                ;;
esac

vpntun0 是名称空间。

相关内容