我深入OpenVPN的荣耀,我手动configuration路由表有点麻烦。 我在Arch Linux上。
我知道OpenVPN在连接时自动更新路由表,但我想写一个脚本来自己更新它们。 我了解了OpenVPN的“–route-noexec”参数,以防止自动更新和“路由”参数通过环境variables将相关信息传递给我select的脚本。
这是我遇到麻烦的地方。 我希望环境variables传递给脚本,这发生了,但它看起来像我缺less一些。 特别是列出我的远程IP地址,(不信任/ trusted_ip我相信),这使得难以设置iproute。
我的脚本收到的环境variables如下:
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
有谁知道为什么我错过了variables? 任何帮助,将不胜感激!
难道你也应该通过“–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是名字空间。