Назад | Перейти на главную страницу

OpenVPN --route-up Отсутствуют переменные среды при передаче скрипту

Я погружаюсь в славу OpenVPN, и у меня возникли некоторые проблемы с ручной настройкой таблиц маршрутизации. Я использую Arch Linux.

Я знаю, что OpenVPN автоматически обновляет таблицы маршрутизации при подключении, но я хочу написать сценарий для их обновления сам. Я узнал об аргументе OpenVPN «--route-noexec» для предотвращения автоматических обновлений и аргументе «--route-up» для передачи соответствующей информации через переменные среды в сценарий по моему выбору.

Здесь у меня проблемы. Я бы ожидал, что переменные среды будут переданы в сценарий, что происходит, но похоже, что мне не хватает некоторых. Особенно тот, в котором указан мой удаленный IP-адрес (по-моему, untrusted / trust_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

Кто-нибудь знает, почему мне не хватает переменных? Любая помощь будет оценена по достоинству!

Может быть, вы должны передать также параметр "--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 - это пространство имен.