Я погружаюсь в славу 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 - это пространство имен.